Xcode命令行获取代码覆盖率百分比

7

Xcode coverage percent

我可以从Xcode UI中看到代码覆盖率百分比。我可以导航到DerivedData文件夹中的.xcresult文件和Coverage.profdata文件,但这些文件不可读。如何从这些文件中提取代码覆盖率百分比?
2个回答

10

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格式生成代码覆盖率报告。根据苹果的man页面上的文档,这是一种机器可表示的格式。我们可以将这些JSON结果连接到任何我们喜欢的地方或在其基础上构建另一个工具。我们可以使用以下命令生成JSON报告。
$ xcrun xccov view Build/Logs/Test/*.xccovreport --json

3
使用 xcrun xccov view --report Build/Logs/Test/*.xcresult --json 可以很好地处理工作。 - ChikabuZ
如果使用 xcodebuild 构建/测试 Swift 包,无法将 -derivedDataPath 值设置为与包相同的目录。顺便提一下。 - Jonathan Cabrera

4
如果您正在使用Xcode 11或更高版本,您可以使用以下命令从命令行检查内容。
xcrun xcresulttool get --path path/to/.xcresult

同时使用--format json将数据导出为JSON格式。

有关更多信息,请参见此WWDC演讲


1
在任何.xcresult文件上执行上述命令都会返回错误:期望的参数为:merge、metadata、graph、version、formatDescription、export、get。 - Max MacLeod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接