xccov:Diff and Merge Swift(iOS)代码覆盖率

原始链接:

xccov:Diff and Merge Swift(iOS)代码覆盖率
苹果去年发布了新的命令行工具,用于检查Xcode代码覆盖率报告的内容。 与… shashikantjagtap.net xccov:Diff and Merge Swift(iOS)代码覆盖率– XCTEQ
苹果去年发布了新的命令行工具,用于检查Xcode代码覆盖率报告的内容。 与… www.xcteq.co.uk

将原始链接作为代码格式和语法参考,未在媒体上检查

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

苹果去年发布了新的命令行工具xccov,用于检查Xcode代码覆盖率报告的内容。 使用xccov,我们可以使用人类可读格式以及机器可表示格式(例如JSON)生成Xcode代码覆盖率报告,而无需使用第三方工具。 在上一篇文章中,我们研究了如何使用xccov工具生成代码覆盖率报告。 在本文中,我们将探讨Xcode 10.2发行的新功能。

代码覆盖范围路径已更改(Xcode10)

我们已经在Github上创建了一个演示存储库来探索xccov功能。 首先,让我们构建应用程序,并在项目内部的Build目录中生成派生数据。

  $ xcodebuild -project XCCov-Demo.xcodeproj / -scheme XCCov-Demo -derivedDataPath Build / -destination'platform = iOS Simulator,OS = 12.2,name = iPhoneXʀ'-enableCodeCoverage是clean build test CODE_SIGN_IDENTITY =“” CODE_SIGNING_REQUIRED = NO 

运行上述命令后,我们将获得测试报告和代码覆盖率报告。 这用于在路径Build / Logs / Test处生成代码覆盖率数据,但现在使用时间戳生成报告。 例如

 构建/日志/测试/运行XCCov-Demo-2019.04.03_07-33-02- + 0100.xcresult / 3_Test / *。xccovreport 

我们将看到扩展名为.xccovreport和.xccovarchive的代码。

xccov真正的强大之处在于它可以生成JSON格式的代码覆盖率报告。 根据手册页上Apple的文档,其机器可表示格式。 我们可以将这些JSON结果挂钩到我们喜欢的任何位置,或者在此之上构建另一个工具。 我们可以使用以下命令生成JSON报告。

  $ xcrun xccov视图--json Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport 

我们刚刚在命令末尾添加了标志json以获取JSON报告。

差异代码覆盖率

当我们继续开发应用程序并添加更多源代码时,Xcode现在将所有代码覆盖率报告都保留在带有时间戳的不同目录中。 在我们的例子中,代码覆盖率报告存储在目录中

构建/日志/测试/运行XCCov-Demo-2019.04.03_07–33–02- + 0100.xcresult / 3_Test

现在,我们从特定的时间戳获取了报告,我们可以将报告与不同的时间戳进行比较,以了解代码覆盖率方面发生了什么变化。

根据文档,按照步骤操作,但无法生成差异。 尝试了以下命令:

尝试一:

  $ xcrun xccov diff --json Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport,Build / Logs / Test / Run-XCCov-Demo- 2019.04.03_07-52-58- + 0100.xcresult / 3_Test / action.xccovreport 
 错误:错误域= XCCovErrorDomain代码= 0“未能在路径Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport上加载覆盖率报告,” UserInfo = {NSLocalizedDescription =无法在路径Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport,NSUnderlyingError = 0x7f93dec23600 {Error Domain = NSCocoaErrorDomain代码= 260“无法打开文件“ action.xccovreport”,因为没有这样的文件。”  UserInfo = {NSFilePath = / Users / shashi / workspace / XCCov-Demo / Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport,NSUnderlyingError = 0x7f93dec23110 {错误域= NSPOSIXErrorDomain代码= 2“没有这样的文件或目录”}}}} 

尝试二:

  $ xcrun xccov diff --json --path-equivalence构建/日志/测试/运行-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport,构建/日志/测试/运行-XCCov-Demo-2019.04.03_07-52-58- + 0100.xcresult / 3_Test / action.xccovreport 
 错误:必须提供要比较的两个覆盖率报告的路径 

尝试三:

  $ xcrun xccov diff --json从--path-equivalence Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-33-02- + 0100.xcresult / 3_Test / action.xccovreport,到Build / Logs / Test /Run-XCCov-Demo-2019.04.03_07-52-58-+0100.xcresult/3_Test/action.xccovreport 
 错误:错误域= XCCovErrorDomain代码= 0“无法从以下位置加载路径报告:UserInfo = {NSLocalizedDescription =无法从NSUnderlyingError = 0x7fc2da631430从路径加载范围报告{错误域= NSCocoaErrorDomain代码= 260”文件来自“无法打开,因为没有这样的文件。”  UserInfo = {NSFilePath = / Users / shashi / workspace / XCCov-Demo / from,NSUnderlyingError = 0x7fc2da606680 {Error Domain = NSPOSIXErrorDomain Code = 2“没有这样的文件或目录”}}}} 

尝试四:

  xcrun xccov diff --json-来自Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-33-02- + 0100.xcresult / 3_Test / action.xccovreport的等效路径,到Build / Logs / Test /运行XCCov-Demo-2019.04.03_07-52-58- + 0100.xcresult / 3_Test / action.xccovreport 
 鱼:“ xcrun xccov diff --json --path-…”被信号SIGSEGV终止(地址边界错误) 

到目前为止,我无法从两个代码覆盖率报告中生成差异。 但是,运行以下命令时,我可以查看两个报告

  $ xcrun xccov视图--json Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport 

如果有一个示例如何生成源代码的差异,那就太好了。

合并代码覆盖率报告

使用Xcode 10.2,我们甚至可以合并两个代码覆盖率报告。 我们必须提供代码覆盖率报告和代码覆盖率存档的路径。 我们还需要指定输出路径。 在我们的例子中,我们运行了以下命令

  $ xcrun xccov merge --outReport〜/ Desktop / out.xccovreport --outArchive〜/ Desktop / out.acarchive Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test /action.xccovreport构建/日志/测试/Run-XCCov-Demo-2019.04.03_07-40-58-+0100.xcresult/3_Test/action.xccovarchive/构建/日志/测试/Run-XCCov-Demo-2019.04.03_07 -52-58- + 0100.xcresult / 3_Test / action.xccovreport构建/日志/测试/Run-XCCov-Demo-2019.04.03_07-52-58-+0100.xcresult/3_Test/action.xccovarchive/ 

此命令在桌面上成功生成了out.acarchive和out.xccovreport文件。

源代码

Github XCCov-Demo上提供了此示例代码。 您还可以在Build目录中查看生成数据和派生数据。

结论

使用Xcode.102,您现在可以创建差异文件或合并来自不同目标的代码覆盖率。 这对于在Continuous Integration服务器上显示代码覆盖率更改很有用。

苹果去年发布了新的命令行工具xccov,用于检查Xcode代码覆盖率报告的内容。 使用xccov,我们可以使用人类可读格式以及机器可表示格式(例如JSON)生成Xcode代码覆盖率报告,而无需使用第三方工具。 在上一篇文章中,我们研究了如何使用xccov工具生成代码覆盖率报告。 在本文中,我们将探讨Xcode 10.2发行的新功能。

代码覆盖范围路径已更改(Xcode10)

我们已经在Github上创建了一个演示存储库来探索xccov功能。 首先,让我们构建应用程序,并在项目内部的Build目录中生成派生数据。

  $ xcodebuild -project XCCov-Demo.xcodeproj / -scheme XCCov-Demo -derivedDataPath Build / -destination'platform = iOS Simulator,OS = 12.2,name = iPhoneXʀ'-enableCodeCoverage是clean build test CODE_SIGN_IDENTITY =“” CODE_SIGNING_REQUIRED = NO 

运行上述命令后,我们将获得测试报告和代码覆盖率报告。 这用于在路径Build / Logs / Test处生成代码覆盖率数据,但现在使用时间戳生成报告。 例如

 构建/日志/测试/运行XCCov-Demo-2019.04.03_07-33-02- + 0100.xcresult / 3_Test / *。xccovreport 

我们将看到扩展名为.xccovreport和.xccovarchive的代码。

xccov真正的强大之处在于它可以生成JSON格式的代码覆盖率报告。 根据手册页上Apple的文档,其机器可表示格式。 我们可以将这些JSON结果挂钩到我们喜欢的任何位置,或者在此之上构建另一个工具。 我们可以使用以下命令生成JSON报告。

  $ xcrun xccov视图--json Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport 

我们刚刚在命令末尾添加了标志json以获取JSON报告。

差异代码覆盖率

当我们继续开发应用程序并添加更多源代码时,Xcode现在将所有代码覆盖率报告都保留在带有时间戳的不同目录中。 在我们的例子中,代码覆盖率报告存储在目录中

构建/日志/测试/运行XCCov-Demo-2019.04.03_07–33–02- + 0100.xcresult / 3_Test

现在,我们从特定的时间戳获取了报告,我们可以将报告与不同的时间戳进行比较,以了解代码覆盖率方面发生了什么变化。

根据文档,按照步骤操作,但无法生成差异。 尝试了以下命令:

尝试一:

  $ xcrun xccov diff --json Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport,Build / Logs / Test / Run-XCCov-Demo- 2019.04.03_07-52-58- + 0100.xcresult / 3_Test / action.xccovreport 
 错误:错误域= XCCovErrorDomain代码= 0“未能在路径Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport上加载覆盖率报告,” UserInfo = {NSLocalizedDescription =无法在路径Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport,NSUnderlyingError = 0x7f93dec23600 {Error Domain = NSCocoaErrorDomain代码= 260“无法打开文件“ action.xccovreport”,因为没有这样的文件。”  UserInfo = {NSFilePath = / Users / shashi / workspace / XCCov-Demo / Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport,NSUnderlyingError = 0x7f93dec23110 {错误域= NSPOSIXErrorDomain代码= 2“没有这样的文件或目录”}}}} 

尝试二:

  $ xcrun xccov diff --json --path-equivalence构建/日志/测试/运行-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport,构建/日志/测试/运行-XCCov-Demo-2019.04.03_07-52-58- + 0100.xcresult / 3_Test / action.xccovreport 
 错误:必须提供要比较的两个覆盖率报告的路径 

尝试三:

  $ xcrun xccov diff --json从--path-equivalence Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-33-02- + 0100.xcresult / 3_Test / action.xccovreport,到Build / Logs / Test /Run-XCCov-Demo-2019.04.03_07-52-58-+0100.xcresult/3_Test/action.xccovreport 
 错误:错误域= XCCovErrorDomain代码= 0“无法从以下位置加载路径报告:UserInfo = {NSLocalizedDescription =无法从NSUnderlyingError = 0x7fc2da631430从路径加载范围报告{错误域= NSCocoaErrorDomain代码= 260”文件来自“无法打开,因为没有这样的文件。”  UserInfo = {NSFilePath = / Users / shashi / workspace / XCCov-Demo / from,NSUnderlyingError = 0x7fc2da606680 {Error Domain = NSPOSIXErrorDomain Code = 2“没有这样的文件或目录”}}}} 

尝试四:

  xcrun xccov diff --json-来自Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-33-02- + 0100.xcresult / 3_Test / action.xccovreport的等效路径,到Build / Logs / Test /运行XCCov-Demo-2019.04.03_07-52-58- + 0100.xcresult / 3_Test / action.xccovreport 
 鱼:“ xcrun xccov diff --json --path-…”被信号SIGSEGV终止(地址边界错误) 

到目前为止,我无法从两个代码覆盖率报告中生成差异。 但是,运行以下命令时,我可以查看两个报告

  $ xcrun xccov视图--json Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test / action.xccovreport 

如果有一个示例如何生成源代码的差异,那就太好了。

合并代码覆盖率报告

使用Xcode 10.2,我们甚至可以合并两个代码覆盖率报告。 我们必须提供代码覆盖率报告和代码覆盖率存档的路径。 我们还需要指定输出路径。 在我们的例子中,我们执行以下命令

  $ xcrun xccov merge --outReport〜/ Desktop / out.xccovreport --outArchive〜/ Desktop / out.acarchive Build / Logs / Test / Run-XCCov-Demo-2019.04.03_07-40-58- + 0100.xcresult / 3_Test /action.xccovreport构建/日志/测试/Run-XCCov-Demo-2019.04.03_07-40-58-+0100.xcresult/3_Test/action.xccovarchive/构建/日志/测试/Run-XCCov-Demo-2019.04.03_07 -52-58- + 0100.xcresult / 3_Test / action.xccovreport构建/日志/测试/Run-XCCov-Demo-2019.04.03_07-52-58-+0100.xcresult/3_Test/action.xccovarchive/ 

此命令在桌面上成功生成了out.acarchive和out.xccovreport文件。

源代码

Github XCCov-Demo上提供了此示例代码。 您还可以在Build目录中查看生成数据和派生数据。

结论

使用Xcode.102,您现在可以创建差异文件或合并来自不同目标的代码覆盖率。 这对于在Continuous Integration服务器上显示代码覆盖率更改很有用。

===================================

像XCBlog的XCTEQ发布的帖子一样? 您可能还会喜欢我们在 Github 上的一些开源项目, 或者在 Twitter LinkedIn 上关注我们