Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Xcode 7的覆盖率统计中排除代码_Xcode_Unit Testing_Xcode7 - Fatal编程技术网

从Xcode 7的覆盖率统计中排除代码

从Xcode 7的覆盖率统计中排除代码,xcode,unit-testing,xcode7,Xcode,Unit Testing,Xcode7,我已经在Xcode 7.0和Objective C()中启用了代码覆盖率统计,并且运行良好 是否可以标记一些源行,以便覆盖率报告忽略它们?如果我使用的是lcov,那么我可以使用lcov\u EXCL\u START和lcov\u EXCL\u END标记(如中所示),但Xcode无法识别这些标记 Xcode是否有替代机制来执行此操作?Xcode 7和更高版本(),覆盖系统使用LLVM的覆盖率生成和报告机制,其格式在中详细介绍。从Xcode 9开始,这种格式不支持任何排除行(或其他结构)的方法 生

我已经在Xcode 7.0和Objective C()中启用了代码覆盖率统计,并且运行良好

是否可以标记一些源行,以便覆盖率报告忽略它们?如果我使用的是lcov,那么我可以使用
lcov\u EXCL\u START
lcov\u EXCL\u END
标记(如中所示),但Xcode无法识别这些标记

Xcode是否有替代机制来执行此操作?

Xcode 7和更高版本(),覆盖系统使用LLVM的覆盖率生成和报告机制,其格式在中详细介绍。从Xcode 9开始,这种格式不支持任何排除行(或其他结构)的方法


生成的映射通过导出为可消费的格式(txt或html),这实际上也没有太多的排除机制。llvm cov确实有一些简单的阈值,仅用于报告线和区域的“大于”或“小于”覆盖率,但基于上述问题,我怀疑这并不完全是您想要的。

当我年轻且没有经验时,我也在这样做,然后我意识到,试图通过忽略代码的某些部分来达到100%的覆盖率是徒劳的。不要试图忽略代码来播放报告。我能看到的唯一方法是在生成目录中找到
Coverage.profdata
文件并对其进行更新时,使用post操作进行测试。可能可以使用llvm cov工具将其导出到gcov。@Sulthan我既不年轻也不缺乏经验。我想排除一些行,比如断言某一行是不可访问的。一眼就知道函数中的每一行都被覆盖了,而不必检查Xcode中的鲜红色线是否只是一个断言,这很有价值。@Sulthan我对导出到另一个工具不感兴趣;我以前可以这样做。这个问题的重点是使用Xcode 7中的显示。这就是我的意思,但是默认情况下没有这样的功能,所以如果你想这样做,你必须更新覆盖率文件-这是一个二进制文件。因此,一种方法是将新的profdata格式转换为
gcov
格式(这是人类可读的,要忽略行,只需使用smart
sed
命令),然后将其转换回
profdata
。并让Xcode读取更新后的文件。唯一的技术问题是profdata-gcov转换。我很欣赏这个答案,即使它不令人满意。强烈鼓励开发人员将Guard语句和其他检查放入代码中,在正常操作下永远不应调用这些语句和检查。这意味着,我们被鼓励将一行永远不会被覆盖的代码放进去。