CMake+;Jenkins针对未测试文件的代码覆盖率
我正在寻找一个解决方案,在一个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覆盖,或者解决这个问题的所有其他选项 非常感谢你的建议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
Pierre相关缺陷报告:虽然与您的问题不完全相关,但在使用lcov生成未测试文件的覆盖率报告时,我遇到了类似的问题。lcov有一个选项(--initial),借助该选项,我们可以为所有编译的源生成0%的覆盖率报告(因此,您需要获取要编译覆盖率报告的所有文件。在构建测试可执行文件时,我通过向cmake中的生产库添加依赖项来实现这一点)。然后运行测试,获得实际覆盖率,与0%报告合并,我们得到了正确的报告,其中未测试文件显示0%。