用于从 .xcodeproj 生成模块依赖关系图的 Swift 工具

这是什么?

XcodeTargetGraphGen 是一个 Swift 命令行工具,它解释.xcodeproj文件以使用美人鱼图语法创建模块级内部依赖关系的可视化描述。通过支持多个包管理器,它使用户能够直观地绘制出 Xcode 项目在各种环境中的结构和依赖关系,为这些关系提供清晰易懂的图形表示。

支持的包管理器如下:

  • 斯威夫特包管理器
  • 迦太基
  • CocoaPods(只支持不使用.xcfilelist 的旧格式)

安装中

斯威夫特包管理器

用作 CLI

git clone https://github.com/CuriositySoftware/XcodeTargetGraphGen.git
cd XcodeTargetGraphGen
swift run xcgraphgen [project-file-path]

用法

只需运行:

xcgraphgen [project-file-path] [OPTIONS...] 

$ xcgraphgen -h
OVERVIEW: Output Xcode Target Dependency Graph.

USAGE: xcgraphgen [<options>] <project-file-path>

ARGUMENTS:
  <project-file-path>     .xcodeproj file path.

OPTIONS:
  --output-file-path <output-file-path>
                          Output file path. (default: ./dependencies.md)
  --mermaid-theme <mermaid-theme>
                          Select Mermaid theme type (eg: neutral, forest, dark, base). (default: dark)
  --mermaid-syntax-type <mermaid-syntax-type>
                          Select Mermaid syntax type. (default: flowchart)
  --mermaid-chart-direction <mermaid-chart-direction>
                          Select Mermaid graph/flowchart direction. (default: TD)
  --enable-swift-package-output/--disable-swift-package-output
                          Targeting Swift Package Product for output. (default: --disable-swift-package-output)
  --enable-apple-sdk-output/--disable-apple-sdk-output
                          Targeting Apple SDKs for output. (default: --disable-apple-sdk-output)
  --enable-carthage-output/--disable-carthage-output
                          Targeting Carthage for output. (default: --enable-carthage-output)
  --enable-cocoa-pods-output/--disable-cocoa-pods-output
                          Targeting CocoaPods SDKs for output (only old format without .xcfilelist). (default: --enable-cocoa-pods-output)
  --enable-vendor-output/--disable-vendor-output
                          Targeting vendor project for output. (default: --disable-vendor-output)
  --dry-run               Output to console without file output
  --version               Show the version.
  -h, --help              Show help information.

例子

swift run -c release xcgraphgen ./SampleiOSApp/SampleiOSApp.xcodeproj/

%%{init: {'theme':'dark'}}%%
流程图TD
样式 SampleiOSApp 描边宽度:4px
子图 Swift 包
算法[“算法”]
结尾
子图 Swift 包本地
效用[“效用”]
结尾
子图迦太基
APIKit.xcframework["APIKit.xcframework"]
结尾
子图本机目标
APIClient["APIClient"]
AppFeature["AppFeature"]
特征A[“特征A”]
功能 B["功能 B"]
SampleiOSApp["SampleiOSApp"]
SampleiOSAppTests["SampleiOSAppTests"]
SampleiOSAppUITests["SampleiOSAppUITests"]
结尾
功能 B --> APIClient
特征 B --> 算法
AppFeature --> FeatureA
AppFeature --> FeatureB
SampleiOSAppTests --> SampleiOSApp
SampleiOSAppUITests --> SampleiOSApp
功能 A --> APIClient
SampleiOSApp --> AppFeature
APIClient --> 实用程序
APIClient --> APIKit.xcframework

其他图书馆

Swift 和 iOS 社区还有其他 Xcode 工具,它们具有与 XcodeTargetGraphGen 不同的优先级和权衡。

GitHub

查看 Github