SuperAPI AI 工具集

xcode-compilation-analyzer

编程与开发

查看项目

更新于 10-15 18:31

技能介绍

用途:当编译时间(而非项目整体配置)成为瓶颈时,用该技能分析 Swift 和混编语言的编译热点,产出以建议为先的源码级优化清单。

主要能力与检查对象:分析干净构建与增量构建的 Build Timing Summary;关注耗时较长的 CompileSwiftSources 或单文件编译任务、SwiftEmitModule 时间(大模块单行改动后可达 60 秒以上,若主导增量构建说明模块过大或宏过重)、Planning Swift 模块时间(增量构建中异常偏大可能意味着输入失效或宏级联重建)。也检查增加桥接工作的 Swift 与 Objective-C 混编面。

诊断标志:临时可用 -Xfrontend -warn-long-expression-type-checking=<ms>、-Xfrontend -warn-long-function-bodies=<ms>;深入排查可用 -Xfrontend -debug-time-compilation、-Xfrontend -debug-time-function-bodies、-Xswiftc -driver-time-compilation、-Xfrontend -stats-output-dir <path>。优先用按需注入标志而非持久修改项目。

使用方式:先判断问题属整体编译量还是少数极端热点;解析计时摘要分类并排序;运行 python3 scripts/diagnose_compilation.py --project App.xcodeproj --scheme MyApp --configuration Debug --destination "platform=iOS Simulator,name=iPhone 16" --threshold 100 --output-dir .build-benchmark,得到超过毫秒阈值的热点函数与表达式排序。

汇报:每条建议需含观察到的证据、可能的文件或模块、预期等待时间影响(如约减少干净构建 2 秒,或只减少并行编译工作量)、置信度、是否需要开发者批准。若证据指向项目配置,则转交 xcode-project-analyzer。

Apple 派生检查:缺少显式类型、复杂链式嵌套表达式、委托属性用 AnyObject 而非具体协议、过大的 Objective-C 桥接头、未做框架限定导致模块缓存复用失败的导入、未加 final 的类、过宽访问控制、单体 SwiftUI body、缺类型标注的长方法链。

限制:不得在未获开发者明确批准时编辑源码或构建设置;结果以证据为准,需结合源码检查。参考资料见 references/code-compilation-checks.md、references/recommendation-format.md、references/build-optimization-sources.md。