【发布时间】:2021-03-26 14:52:43
【问题描述】:
我可以从 Xcode UI 中看到代码覆盖率。我可以导航到DerivedData 文件夹中的.xcresult 文件和Coverage.profdata 文件,但这些文件不是人类可读的。如何从这些文件中提取代码覆盖率?
【问题讨论】:
标签: xcode code-coverage
我可以从 Xcode UI 中看到代码覆盖率。我可以导航到DerivedData 文件夹中的.xcresult 文件和Coverage.profdata 文件,但这些文件不是人类可读的。如何从这些文件中提取代码覆盖率?
【问题讨论】:
标签: xcode code-coverage
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 和 .xccovarchive 扩展名的代码覆盖率。
然后以默认格式查看代码覆盖率报告,这不是特别好,但根据 Apple,它是人类可读的。但是我们可以使用以下命令生成报告
$ xcrun xccov view Build/Logs/Test/*.xccoveragereport
xccov 的真正强大之处在于它可以生成 JSON 格式的代码覆盖率报告。根据 Apple 在手册页上的文档,它的机器可表示格式。我们可以在任何我们喜欢的地方挂钩这些 JSON 结果,或者在此基础上构建另一个工具。我们可以使用以下命令生成 JSON 报告
$ xcrun xccov view Build/Logs/Test/*.xccovreport --json
【讨论】:
xcrun xccov view --report Build/Logs/Test/*.xcresult --json 一起使用效果很好
如果您使用的是 Xcode 11 或更高版本,您可以使用以下命令从命令行检查内容。
xcrun xcresulttool /path/to/result/.xcresult
并将数据导出为 JSON
更多信息请参见this WWDC talk
【讨论】: