Sitrep logo

Twitter: @twostraws

Sitrep 是一个 Swift 项目的源代码分析器,它能为您提供代码的高级概览

在幕后,Sitrep 捕获了更多可以利用的信息——您有多少个函数,有多少个注释(常规注释和文档注释),您的枚举有多大,等等。这些目前没有报告,但可能会在未来的版本中报告。它也被编写为库和可执行文件,因此可以根据需要在其他地方集成。

Sitrep 是使用 Apple 的 SwiftSyntax 构建的,这意味着它可以准确有效地解析 Swift 代码。

注意:请确保 Package.swift 中指定的 SwiftSyntax 版本与您当前的 Swift 工具版本匹配。

安装

如果您想安装 Sitrep 命令行工具,您有三个选择:HomebrewMint,或者从命令行自己构建它。

使用此命令来安装 Homebrew

brew install twostraws/brew/sitrep

使用 Homebrew 允许您直接从命令行运行 sitrep

对于 Mint,使用以下命令安装和运行 Sitrep

mint install twostraws/Sitrep@main
mint run sitrep@main

最后,要自己构建和安装命令行工具,请克隆存储库并运行 make install

git clone https://github.com/twostraws/Sitrep
cd Sitrep
make install

与 Homebrew 选项一样,自己构建命令行工具允许您直接从命令行使用 sitrep 命令。

将 Sitrep 用作库

Sitrep 被实现为一个库,它完成了扫描和报告的所有繁重工作,以及一个处理命令行读写的较小的前端。除了从命令行使用 Sitrep 之外,您还可以在自己的 Swift 代码中使用其库 SitrepCore。

首先,在您的 Package.swift 文件中添加 Sitrep 作为依赖项

let package = Package(
    //...
    dependencies: [
        .package(url: "https://github.com/twostraws/Sitrep", .branch("master"))
    ],
    //...
)

然后在您想要使用它的任何地方 import SitrepCore

命令行标志

在没有任何标志的情况下从命令行运行时,Sitrep 将自动扫描您当前目录并将结果打印为文本。要控制此行为,Sitrep 支持几个命令行标志

配置

您可以通过在要扫描的目录中创建一个 .sitrep.yml 文件来自定义 Sitrep 的行为。这是一个 YAML 文件,允许您为此路径的扫描提供永久选项,尽管目前仅限于一件事:要从扫描中排除的目录名称数组。

例如,如果您想排除 .build 目录和您的测试,您可以创建一个类似于以下的 .sitrep.yml 文件

excluded:
  - .build
  - Tests

您可以使用 -c 参数要求 Sitrep 使用自定义配置文件,例如 sitrep -c /path/to/.sitrep.yml -p /path/to/swift/project

或者,您可以使用 -i 参数让 Sitrep 告诉您在实际分析运行中它将使用的配置选项。这将打印配置信息然后退出。

自己试试

Sitrep 使用 Swift 5.8 编写。您可以直接构建和运行可执行文件,也可以将 SitrepCore 库集成到您自己的代码中。

要构建 Sitrep,请克隆此存储库并在存储库根目录中打开 Terminal。 然后运行

swift build
swift run sitrep -p ~/path/to/your/project/root

如果您想保留 sitrep 可执行文件的副本,请在运行 swift build 后在 .debug 目录中找到它。

要从命令行运行 Sitrep,只需向其提供要解析的项目目录的名称——它将从那里递归地定位所有 Swift 文件。或者,单独使用 sitrep 将扫描当前目录。

贡献指南

非常欢迎您为此项目提供任何帮助,相信我:这里有很多大大小小的机会,即使只有少量 Swift 经验的人也可以提供帮助。

您可能想要探索的一些建议

请确保编写测试来支持您贡献的任何代码,并且 SwiftLint 不返回任何错误或警告。

鸣谢

Sitrep 由 Paul Hudson 设计和构建,版权所有 © Paul Hudson 2023。Sitrep 在带有运行时库异常的 Apache License v2.0 下获得许可; 有关完整许可证,请参阅 LICENSE 文件。

Sitrep 构建于 Apple 的 SwiftSyntax 库之上,用于解析代码,该库也在带有运行时库异常的 Apache License v2.0 下可用。

Swift、Swift 徽标和 Xcode 是 Apple Inc. 在美国和其他国家/地区注册的商标。

如果您觉得 Sitrep 有用,您可能会觉得我的网站上满是 Swift 教程同样有用:Hacking with Swift