我在同一个文件夹中有两个文件夹,如下所示: -
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
然后同样的结果。
答案 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文件
分两步克服它gcov -b -l -p -c *.gcno
这将生成包含gcno和gcda文件中所有详细信息的gcov文件。gcovr -g -k -r . --html --html-details -o tp.html
或任何gcovr命令,-g选项告诉gcovr处理gcov输出文件希望此解决方案有助于..
答案 2 :(得分:0)
在安装了Homebrew gcc / gcovr的MacOS / Darwin上,事实证明gcov
使用的gcovr
是/usr/bin/gcov
,这是不兼容的Apple / clang版本。>
我不明白为什么没有/usr/local/bin/gcov
,但是创建它作为指向gcov-9
的链接对我来说解决了