11

当我运行 gcov foo.cpp 时,它不仅会生成 foo.cpp 的代码覆盖率报告,还会生成 foo.cpp 使用的所有 STL 标头。

有没有办法防止这种情况?它似乎忽略了标准库头文件,如<ctime>.

编辑

刚刚在 gcc 邮件列表上看到了这篇文章:

回复:gcc、gcov 和 STL

4

2 回答 2

7

-r --relative-only

仅输出有关具有相对路径名的源文件的信息(在源前缀省略之后)。绝对路径通常是系统头文件,其中任何内联函数的覆盖通常是无趣的。

于 2013-07-23T19:58:52.557 回答
5

任何带有内联代码的 C++ 头文件都将在您编译时获得覆盖率检测,结果将在 gcov 中可见。一个有用的标志是gcov -long-file-names(或只是-l),它为给定文件包含的每个标头创建一个唯一的 .gcov 输出文件。这些文件的名称类似于foo.cpp##bar.h.gcov. 这将使您以后可以轻松删除它们rm \*\\#\\#\*.gcov(小心那些反斜杠!)

检测这些文件的另一种方法是在 gcov 输出中查找编号为 0 的行。这些标记信息包括“来源:”以及原始源文件的完整路径。

于 2010-10-19T20:05:14.010 回答