跳到内容

隐式导入

为了降低使用原始 Xcode 项目维护 Xcode 项目图的复杂性,Apple 设计的构建系统允许隐式定义依赖。这意味着产品(例如应用)可以依赖于某个框架,即使没有显式声明该依赖。在小规模项目中,这没有问题,但随着项目图复杂度的增加,这种隐式性可能导致增量构建不可靠,或影响基于编辑器的功能,如预览和代码补全。

问题在于你无法阻止隐式依赖的产生。任何开发者都可以在其 Swift 代码中添加 import 语句,从而创建隐式依赖。这正是 Tuist 发挥作用的地方。Tuist 提供了一个命令,通过静态分析项目中的代码来检查隐式依赖。以下命令将输出你项目的隐式依赖:

bash
tuist inspect dependencies --only implicit

如果命令检测到任何隐式导入,它将以非零退出码退出。

在 CI 中验证

我们强烈建议每次有新代码推送到上游时,都将此命令作为 持续集成 流程的一部分运行。

并非所有隐式情况都能被检测到

由于 Tuist 依赖静态代码分析来检测隐式依赖,它可能无法捕获所有情况。例如,Tuist 无法理解通过代码中的编译器指令进行的条件导入。