Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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
CMake+;Jenkins针对未测试文件的代码覆盖率_Cmake_Code Coverage_Gcov_Gcovr - Fatal编程技术网

CMake+;Jenkins针对未测试文件的代码覆盖率

CMake+;Jenkins针对未测试文件的代码覆盖率,cmake,code-coverage,gcov,gcovr,Cmake,Code Coverage,Gcov,Gcovr,我正在寻找一个解决方案,在一个cmake项目中编译并在Jenkins下发布的所有C源文件中提供代码覆盖率统计数据 我使用了CMake 2.8.9、gcovr 3.1和Jenkins 1.564,并尝试了许多不同版本的gcc/gcov(4.7.2和>=4.8.0) 据我所知,我有两种不同的解决方案: 一方面,使用gcovr会导致一个可在jenkins下发布的cobertura xml文件,但我没有考虑覆盖率统计中未覆盖的文件。这是因为gcov不考虑未测试的文件,尽管.gcno存在(但不存在.gcd

我正在寻找一个解决方案,在一个cmake项目中编译并在Jenkins下发布的所有C源文件中提供代码覆盖率统计数据

我使用了CMake 2.8.9、gcovr 3.1和Jenkins 1.564,并尝试了许多不同版本的gcc/gcov(4.7.2和>=4.8.0)

据我所知,我有两种不同的解决方案:

一方面,使用gcovr会导致一个可在jenkins下发布的cobertura xml文件,但我没有考虑覆盖率统计中未覆盖的文件。这是因为gcov不考虑未测试的文件,尽管.gcno存在(但不存在.gcda)。实际上,没有为仅.gcno文件生成.gcov文件,而gcov打印“删除…”消息。我怀疑gcov已经改变了它的行为,这样gcovr就不再使用未测试的文件了(但我从来没有看到它工作过),但是我找不到gcc/gcov的正确版本,我尝试了很多(4.7.2和>=4.8.0)

另一方面,Cmake在考虑未测试文件的情况下计算正确的统计数据,但无法生成要在jenkins中发布的cobertura报告

我需要gcovr中的一个变通方法,或者对cobertura xslt的cmake覆盖,或者解决这个问题的所有其他选项

非常感谢你的建议


Pierre

相关缺陷报告:虽然与您的问题不完全相关,但在使用lcov生成未测试文件的覆盖率报告时,我遇到了类似的问题。lcov有一个选项(--initial),借助该选项,我们可以为所有编译的源生成0%的覆盖率报告(因此,您需要获取要编译覆盖率报告的所有文件。在构建测试可执行文件时,我通过向cmake中的生产库添加依赖项来实现这一点)。然后运行测试,获得实际覆盖率,与0%报告合并,我们得到了正确的报告,其中未测试文件显示0%。