如果cpp,gcno和gcda文件不在同一文件夹中,则GCovr会生成0%覆盖率报告

时间:2015-08-27 12:27:58

标签: gcovr

我在同一个文件夹中有两个文件夹,如下所示: -     1.src(它包含我的cpp文件)
    2.linux(我正在运行g ++并执行o文件)
现在我正在运行如下命令

cd linux
g++ --coverage ../src/example1.cpp -o example1
./example1
cd ..
/opt/gcovr-3.2//scripts/gcovr -v -r .

我的输出为0%,覆盖范围为

  

扫描目录。对于gcda / gcno文件...
  找到2个文件(并将处理1个)
  运行gcov:'gcov /opt/gcovr-3.2/doc/examples/example1/linux/example1.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /opt/gcovr-3.2/ doc / examples / example1 / linux'in'/opt/gcovr-3.2/doc/examples/example1/linux'
  解析文件/opt/gcovr-3.2/doc/examples/src/example1.cpp的覆盖率数据
    过滤文件/opt/gcovr-3.2/doc/examples/src/example1.cpp的覆盖率数据
  收集了0个文件的覆盖数据

为了进一步调试,我转到'linux'文件夹,运行如下命令

gcov /opt/gcovr-3.2/doc/examples/example1/linux/example1.gcno --branch-counts --branch-probabilities --preserve-paths --object-directory /opt/gcovr-3.2/doc/examples/example1/linux

我输出为有效覆盖

  

/opt/gcovr-3.2/doc/examples/example1/linux
          文件'../src/example1.cpp'
          执行的行数:7的85.71%           分支执行:2的100.00%           至少采取一次:2的50.00%           执行的通话:1的100.00%           ../src/example1.cpp:creating'..#src#example1.cpp.gcov'

现在我想知道我在做什么错?我的项目很复杂,所以我不想将所有cpp文件从相应的'src'文件夹复制到相应的'linux'文件夹。我尝试使用--object-directory然后同样的结果。

3 个答案:

答案 0 :(得分:1)

几个月以来,我一直在与gcovr和gcov合作。

与我正在做的唯一不同的是你没有在“-r”标志中正确指定路径。

您应始终指定完整路径。

即使它不是规范的,但路径应该是完整的,这很好。

并且总是在根目录名后分别为linux和windows指定一个额外的斜杠“/”或“\”。 例如

imageView.setBorderColor(android.graphics.Color.argb(255, 255, 255, 255)); // Or Color.WHITE for white
imageView.setBorderWidth(2);

似乎这个额外的斜线很重要,否则就会出问题。 不知道确切的问题,但我认为没有结束斜杠就不会递归搜索。

答案 1 :(得分:1)

gcovr使用.gcov文件进行分析。 我也面临类似的问题,并通过手动生成.gcov文件

分两步克服它
  1. 在包含gcno文件的文件夹中运行gcov -b -l -p -c *.gcno 这将生成包含gcno和gcda文件中所有详细信息的gcov文件。
  2. 转到项目根文件夹并使用-g选项运行gcovr -g -k -r . --html --html-details -o tp.html或任何gcovr命令,-g选项告诉gcovr处理gcov输出文件
  3. 希望此解决方案有助于..

答案 2 :(得分:0)

在安装了Homebrew gcc / gcovr的MacOS / Darwin上,事实证明gcov使用的gcovr/usr/bin/gcov,这是不兼容的Apple / clang版本。

我不明白为什么没有/usr/local/bin/gcov,但是创建它作为指向gcov-9的链接对我来说解决了