Xcode 命令行的代码覆盖率

Xcode code coverage percentage from command line

我可以从 Xcode UI 中看到代码覆盖率。我可以导航到 .xcresult 文件和 DerivedData 文件夹中的 Coverage.profdata 文件,但这些文件不是人类可读的。如何从这些文件中提取代码覆盖率?

如果您使用的是Xcode 11或更高版本,您可以使用以下命令从命令行检查内容。

xcrun xcresulttool /path/to/result/.xcresult

并将数据导出为 JSON

有关详细信息,请参阅 this WWDC talk

Lior 走在正确的轨道上。 首先从项目的根目录使用以下命令使用 xcodebuild 构建和测试应用程序

$ xcodebuild -project XCCoverage-Demo.xcodeproj/ -scheme XCCoverage-Demo -derivedDataPath Build/ -destination 'platform=iOS Simulator,OS=11.3,name=iPhone 7' -enableCodeCoverage YES clean build test CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO

这将转储 Build 目录中的所有 DerivedData。 这将在路径 Build/Logs/Test 处生成代码覆盖率数据。我们将看到 .xccovreport 和 .xccoarchive 扩展名的代码覆盖率。

然后以默认格式查看代码覆盖率报告,这不是特别好,但根据 Apple,它是人类可读的。但是我们可以使用以下命令生成报告

$ xcrun xccov view Build/Logs/Test/*.xccoveragereport

当 xccov 可以生成 JSON 格式的代码覆盖率报告时,它的真正威力就体现出来了。根据 Apple 在手册页上的文档,它的机器可表示格式。我们可以在任何我们喜欢的地方挂钩这些 JSON 结果,或者在此基础上构建另一个工具。我们可以使用以下命令生成 JSON 报告

$ xcrun xccov view Build/Logs/Test/*.xccovreport --json