【发布时间】:2020-07-03 17:06:38
【问题描述】:
我对如何使用gcov 感到困惑。我有一个 cmake 项目,它有两个使用 googletest 的测试可执行文件。我已在我的 cmake 脚本中添加了所需的标志:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage -g -O0")
我已经重新编译了我的代码(使用 CLion 和 g++ 10.1)。
现在我切换到构建目录并手动运行两个测试套件。这个,根据docs应该会生成一些文件,可以用来生成覆盖率报告。现在我应该可以跑了
gcovr .
从构建树的根目录(对吗?),但是输出是这样的:
(base) ciaran@DESKTOP-K0APGUV:/mnt/d/libOmexMeta/cmake-build-release-wsl-ubuntu1804-gcc101$ gcovr .
------------------------------------------------------------------------------
GCC Code Coverage Report
Directory: .
------------------------------------------------------------------------------
File Lines Exec Cover Missing
------------------------------------------------------------------------------
------------------------------------------------------------------------------
TOTAL 0 0 --%
------------------------------------------------------------------------------
知道我做错了什么吗?
#编辑 也在运行
gcovr -r . --html --html-details -o example-html-details.html
有效,但生成一个空报告
【问题讨论】:
-
你检查过所有的源文件实际上都被重新编译了吗?您可能需要
make clean或同等地址。 -
是的,我删除了构建目录,重新编译然后运行
gcovr,我仍然得到一个空的html doc。 -
在这种情况下这不是问题,但是在调试 gcovr 不显示文件的原因时,在
--verbose模式下运行它会很有帮助。通常,问题在于 gcovr 对路径名感到困惑并认为您的源代码不是项目的一部分,或者它无法正确调用 gcov。另请注意,gcovr 尚未使用 GCC 10 进行测试(测试套件仍在 GCC 5 上运行……) -
我使用的是 gcov-10,我认为它已经用 gcc-10 进行了测试。仍在玩这个,但知道有一个详细模式很有帮助!
-
是的,gcov-10 是 GCC 10 的一部分。但是 gcovr 是第三方项目
标签: c++ gcc code-coverage gcov gcovr