XcodeCoverage 1.4.0

XcodeCoverage 1.4.0

测试已测试
语言语言 Obj-CObjective C
许可 NOASSERTION
发布上次发布2020年1月

Jon Reid 维护。



XcodeCoverage

CocoaPods Version

XcodeCoverage 为生成 Xcode 项目的 Objective-C 代码覆盖率报告提供了一个简单的方法。生成的报告包括 HTML 和 Cobertura XML。

覆盖率数据不包含 Apple 的 SDK,并且排除规则可以自定义。

遗憾的是,Swift 覆盖率目前不受支持。

安装:标准

如果您想要自定义 XcodeCoverage 以排除某些文件和目录,例如第三方库,请使用标准安装。否则,下面的 CocoaPods 安装可能更方便。

  1. 将该仓库 Fork。
  2. 将 XcodeCoverage 文件夹放置在与您的 Xcode 项目相同的文件夹中。
  3. 在您的目标主项目的 "构建阶段" 中,添加一个运行脚本构建阶段来执行 XcodeCoverage/exportenv.sh

有些人被最后一步难住了:请确保您将该脚本添加到您的目标主项目(您的应用程序或库),而不是测试目标。

安装:CocoaPods

为了在简单的项目中方便使用,已经添加了一个 CocoaPod。如果您使用 CocoaPod 而不是标准方法,请注意以下事项

  • 项目实际上不会添加任何文件。文件仅通过 preserve_paths 添加,因此它们将位于您的 Pods/XcodeCoverage 路径中,但在 Xcode 中您将看不到它们,并且 Xcode 也不会编译它们。
  • 您无法修改脚本,除非那些修改被 CocoaPods 覆盖。

如果这些注意事项是无法接受的,请使用上述标准安装方法。

通过 CocoaPods 安装的步骤

  1. pod 'XcodeCoverage', '~>1.0' (或者您希望的任何 版本指定) 添加到您的Podfile中。
  2. 运行 pod install。这将会下载必要的文件。
  3. 在您的主体目标中,添加一个执行脚本构建阶段来执行 Pods/XcodeCoverage/exportenv.sh

再次确认,将脚本添加到您的主体目标(您的应用程序或库)中,而不是测试目标中。

Xcode项目设置

XcodeCoverage附带了一个xcconfig文件,其中包含了用于为覆盖分析设置你代码所需的构建设置。

如果你已经使用了一个xcconfig,将其包含你要设置覆盖分析的应用中

  • 标准安装:#include "XcodeCoverage/XcodeCoverage.xcconfig"
  • CocoaPods安装:#include "Pods/XcodeCoverage/XcodeCoverage.xcconfig"

如果你还没有使用xcconfig,将XcodeCoverage.xcconfig拖入你的项目。当提示“添加到目标”时,取消选择所有目标。(否则,它将被包含在包中。)然后点击Xcode的“导航器”面板中的项目,并选择“信息”选项卡。对于你要设置覆盖分析的计算配置,选择XcodeCoverage。

如果愿意手动指定构建设置,请在项目级别启用以下两个设置

  • 指示程序流程
  • 生成旧版测试覆盖文件

确保不要为AppStore发布版设置覆盖分析。

执行

  1. 运行您的单元测试。
  2. 在终端中,在项目的XcodeCoverage文件夹中执行 getcov

getcov 有以下命令行选项

  • --show-s:显示HTML报告。
  • --xml-x:生成Cobertura XML。
  • -o output_dir:指定输出目录。
  • -i info_file:指定生成的lcov info文件名。
  • -v:启用详细输出。
  • -h--help:显示用法。

如果你在更改测试代码而不是生产代码时想要一个干净的平板,请使用 cleancov 脚本。

如果你的生产代码有任何更改,请在再次测量代码覆盖之前清除所有构建工件。在Xcode的“产品”菜单中按住Option键执行“清洁构建文件夹”,或使用⌥⇧⌘K键组合。

(可选)XcodeCoverage可以在运行单元测试后提示运行代码覆盖

  • 编辑Xcode方案 -> 测试 -> 后续操作
  • 将“Shell”设置为:/bin/bash
  • 将“提供构建设置”从设置为你的主要目标
  • 将脚本设置为 source XcodeCoverage/run_code_coverage_post.sh(标准安装)。对于CocoaPods安装,使用 source Pods/XcodeCoverage/run_code_coverage_post.sh

从覆盖率中排除文件

如果您想让覆盖率生成器忽略某些文件或文件夹(例如,未通过 CocoaPods 安装的第三方库或机器生成的文件),请将 .xcodecoverageignore 文件添加到您的 SRCROOT 中。

每一行应该是一个不同的文件或文件组,这些文件或文件组应该用于覆盖率排除。您可以同时使用 SRCROOT 相对路径以及 * 字符来表示应该排除一定目录下的所有内容。

以下是一个 .xcodecoverageignore 文件的示例内容

${SRCROOT}/TestedProject/Machine Files/*
${SRCROOT}/TestedProject/Third-Party/SingleFile.m
${SRCROOT}/TestedProject/Categories/UIImage+IgnoreMe.{h,m}

注意:如果您之前使用的是 XcodeCoverage 1.3 之前的版本,您需要将您想要忽略的文件和文件夹列表移动到 .xcodecoverageignore 文件中。当前的设置将防止在更新此项目时您的自定义列表被覆盖。

致谢

lcov -> Cobertura 脚本来自 https://github.com/eriwen/lcov-to-cobertura-xml/ 并受该项目的许可证约束。