跳转到内容

隐式导入

为了减轻使用原始 Xcode 项目维护项目图的复杂性,苹果设计了一个允许隐式定义依赖项的构建系统。这意味着一个产品,例如一个应用,可以依赖于一个框架,即使没有显式声明这种依赖关系。在规模较小时,这没问题,但随着项目图变得越来越复杂,隐式行为可能会表现为不可靠的增量构建或基于编辑器的功能(如预览或代码补全)出现问题。

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

Terminal window
tuist inspect dependencies --only implicit

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

::: tip 在 CI 中验证

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

:::

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

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

:::