【发布时间】:2011-09-02 15:59:23
【问题描述】:
我在我的项目中成功使用了 gcov:
- 我可以使用 gcov 标志构建我的项目:
-fprofile-arcs -ftest-coverage - 我使用
-lgcov选项链接 - 我运行我的单元测试程序,并生成了很多
gcda和gcno文件。 - 我运行 gcov 很多次,生成了很多
gcov文件。 - 我总结了结果并生成了如下行列表:
#####: 42: virtual double run_time() const { return 0; }
然后我会去'doh!'并编写一个调用该缺失方法的测试。
上面的示例行很容易诊断 - gcov 告诉我我没有调用的确切方法。
我也有一个复制构造函数被 gcov 标记的示例,但我可以使用我的 Visual Studio 调试器逐步完成它。那里的解决方案是意识到 gcov 患有 RVO,它忽略了副本,但是编写了一个强制副本的测试来解决这个问题。
我还有其他几个我想不通的例子:
1.
File.cpp
#####: 78:}
gcov 似乎在标记命名空间的右括号,它是文件的最后一行。
2.
File.h
#####: 33: class FooBase: public IResult {
gcov 想在这里告诉我什么?我想不出在这里进行调用。
更新 1:我检测到 FooBase 有一个默认构造函数,如果仅由子类“调用”则不是就gcov而言,与通过实例化它来调用它一样。
更新 2:我一直在使用djgpp/gcc 4.4.4,它产生了上述结果。但是,通过使用MinGW/gcc 4.5.2,“异常”消失了,并且通过更多的工作,我已经能够达到 100% 的线路覆盖率。
请为粗心的 gcov 用户提供一个提示,或者对我的一个示例进行回答。
【问题讨论】: