gcov-r不生成gcov文件 我想为我的GITHUB生成一个覆盖报告,这是一个用CMake构建的大C++项目。

gcov-r不生成gcov文件 我想为我的GITHUB生成一个覆盖报告,这是一个用CMake构建的大C++项目。,c++,cmake,code-coverage,gcov,C++,Cmake,Code Coverage,Gcov,我在my中的g++构建和链接参数中添加了--coverage(等于-fprofile arcs-ftest coverage)选项,并使用gcov生成代码覆盖率数据并将数据上传到codecov.io 这些自动化构建和测试是在my Jenkins CI中完成的。Jenkins的execute shell的相关代码如下: cmake-DCODE\u COVERAGE=ON-Dasan=OFF-DNEBULA\u ASAN\u PRELOAD=。。 make-j8 ctest-j8 #生成代码覆盖率报

我在my中的g++构建和链接参数中添加了--coverage(等于-fprofile arcs-ftest coverage)选项,并使用gcov生成代码覆盖率数据并将数据上传到codecov.io

这些自动化构建和测试是在my Jenkins CI中完成的。Jenkins的execute shell的相关代码如下:

cmake-DCODE\u COVERAGE=ON-Dasan=OFF-DNEBULA\u ASAN\u PRELOAD=。。
make-j8
ctest-j8
#生成代码覆盖率报告并将其上载到codecov.io
TEST_FILES=$(find.-name'*.cpp.o')
#gcov-abcr$测试文件
对于$test_文件中的test_文件;do gcov-abcr$test_文件;完成
curl-shttps://codecov.io/bash |bash-s--t c85ebdca-ec7c-4301-a6ed-7967cf175db5
当Jenkins执行make-j8和ctest-j8以及gcov-abcr$test_文件时,我会得到相关的.gcno文件、.gcda文件和gcov文件。但是当Jenkins执行curl-s | bash-s--t c85ebdca-ec7c-4301-a6ed-7967cf175db5将数据文件上载到codecov时,输出似乎很奇怪。我看到很多类似的错误,比如:

ExecutionPlan.gcno:“ZNK6nebula4cpp29ValueType8get_typeEv”具有到入口块的弧
执行计划。gcno:“ZNK6nebula4cpp29ValueType8get_typeEv”具有来自出口块的弧
gcov的-r选项似乎不起作用,因为我还得到了很多系统头文件的覆盖率报告

最后Jenkins告诉我构建失败了,所以我看不到codecov中的覆盖率报告

附言:

  • 源CPP文件与.CPP.O(CMake的默认C++对象类型是.CPP .O不.O)文件不在同一目录中。我在build目录中执行上述excute shell代码,.gcno、.gcda和.gcov文件在同一目录中生成
  • b因为CMake的默认对象类型是.cpp.o,所以生成的gcno和gcda文件类型是.cpp.gcno和.cpp.gcdas。所以我使用gcov filename.cpp.o插入gcov filename.cpp,这将告诉我无法打开filename.gcno错误
  • 我做了一些实验来找出错误的原因。我发现当我给gcov一个像gcov 1.cpp.o这样的输入文件时,我不会从出口块错误中得到has弧,但是当我给gcov多个像gcov 1.cpp.o 2.cpp.o这样的输入文件时,我会从出口块中得到has弧的错误。我认为一个可能的原因是关于梳理多个gcov文件

  • 欢迎来到Stackoverflow!我很好奇为什么您在这个问题中标记了
    cmake
    ,因为它似乎与cmake没有任何关系?另外,当您运行
    gcov-r
    时,文件
    my.cpp
    是否在同一目录中?您的文本图像。它不能被大声朗读或复制到编辑器中,而且索引也不太好,这意味着其他有同样问题的用户在这里找到答案的可能性较小。请您的帖子直接包含相关文本(最好使用复制+粘贴以避免抄写错误)。您好,很抱歉我对我的问题的误导性描述。我已经编辑了我的问题描述。请看一看。