我们发现,对于某些自动拉入Jenkins的Github分支,gcovr不会生成任何覆盖率信息。它声称未找到文件,并返回0%的代码覆盖率。

其他分支工作正常。一旦将代码拉入master,gcovr就可以为完全相同的代码生成代码覆盖文件。

最佳答案

发生这种情况是因为gcov创建了包含整个路径的文件,例如#usr#include#boost#numeric#conversion#detail#converter.hpp.gcov。如果分支名称是Jenkins工作空间路径的一部分,则长分支名称可能会在文件系统的最大文件名长度上超过部分生成的文件名。

要解决此问题,请将gcov设置为对文件名进行哈希处理,然后分两步运行gcovr:

gcovr -r `pwd` --gcov-executable="gcov -s `pwd` -x" -k
gcovr -r `pwd` --gcov-executable="gcov -s `pwd` -x" -g --html --html-details -o coverage/index.html

07-28 04:45