【发布时间】:2015-09-22 01:26:48
【问题描述】:
我在 Xcode 7.0 和 Objective C (like this) 中启用了代码覆盖率统计,并且运行良好。
是否可以标记一些源代码行以便覆盖率报告忽略它们?如果我使用的是 lcov,那么我可以使用 LCOV_EXCL_START 和 LCOV_EXCL_END 标记(如 How to tell lcov to ignore lines in the source files),但 Xcode 无法识别这些。
Xcode 有替代机制吗?
【问题讨论】:
-
当我年轻且缺乏经验时,我也这样做过,然后我意识到通过忽略某些部分代码来达到 100% 的覆盖率是徒劳的。不要试图通过忽略代码来播放您的报告。
-
我能看到的唯一方法是在构建目录中找到
Coverage.profdata文件并更新它时使用测试后操作。可能可以使用 llvm-cov 工具将其导出到 gcov。 -
@Sulthan 我既不年轻也不缺乏经验。我想排除诸如断言特定行无法访问之类的行。一目了然地知道函数中的每一条可达行都被覆盖了,而不必检查 Xcode 中的亮红线是否实际上只是一个断言,这是很有价值的。
-
@Sulthan 我对导出到另一个工具不感兴趣;我以前可以这样做。这个问题的重点是使用Xcode 7中的显示。
-
这就是我的意思,但是默认情况下没有这样的功能,所以如果你想这样做,你必须更新覆盖文件 - 这是一个二进制文件。因此,这样做的一种方法是将新的 profdata 格式转换为
gcov格式(这是人类可读的并且忽略行,您可以使用智能sed命令),然后将其转换回profdata。并让 Xcode 读取更新的文件。唯一的技术问题是 profdata - gcov 转换。
标签: xcode unit-testing xcode7