【发布时间】:2018-09-05 12:09:33
【问题描述】:
当我运行 gcov 时,输出显示 87% 已覆盖...然后我想使用 gcovr,但它永远不会工作。我尝试从许多目录运行,有很多选项。在某些情况下,我得到了一些文件,但不是我想要查看的文件。
我的项目包含 3 个文件:
src\main.csrc\makefiletst\test1.ctst\test2.ctst\makefile-
tst\obj\all目标文件、gcno、gcda 都存放在这里... -
build\build.bat制作项目(windows)
我应该更改目录结构吗?如何查看我应该使用哪个版本的 gcov? 我想查看 main.c 的覆盖率,但只获得 test1.c 和 test2.c 的覆盖率,而这些与覆盖率无关!!
在测试文件旁边,我在 C:\compiler 上包含了覆盖范围不需要的目录。
我试过 Python27:
python c:\python27\scripts\gcovr -g --object-directory=. -r ..\..\..\ --html --html-details -o program.html -v
我试过 Python36:
c:\python36\scripts\gcovr --use-gcov-files -v --object-dir=.
但永远不会覆盖我的被测设备。只有不带 gcovr 的 gcov 有效,所以文件必须正确。
【问题讨论】:
-
(1) 能否添加您正在使用的 gcovr 版本和 GCC/gcov 版本? (2) 您从哪些目录运行 gcovr?
-
您能否解释一下为什么需要使用 -g/--use-gcov-files 标志?该选项假定您之前已为您感兴趣的所有源文件运行 gcov。您能说明您是如何调用 gcov 的吗?
-
gcov 易于使用,但输出对 Jenkins 没有用处。我没有尝试使其兼容,而是调试了 gcovr。我在github.com/barthoukes/gcovr 分叉了主项目并为 Windows 进行了更改,它们适用于 WIndows 10 中的 C 和 C++。对于 Linux,它已经可以正常工作了。只需获取 1 个文件,gcovr。它实际上是一个python脚本,易于调试。