16

我已经使用 gcov 来测试代码覆盖率,但是当涉及到模板化的 c++ 代码时,它并不能很好地工作。我广泛使用 boost::spirit,而 gcov 似乎只是忽略了模板化的精神代码。

另外我想知道是否有一个覆盖工具来显示线程如何相互交互,精确定位实际执行的可能的分支/竞争条件/执行流。

4

5 回答 5

2

TestCocoon是一个很好的尝试工具,比 gcov 更好,具有良好的工具和报告功能。由于模板是编译时的野兽,我不确定您想要获得什么覆盖信息?

我的两分钱

于 2011-10-10T11:43:16.773 回答
1

C++ Coverage Validator为模板提供覆盖数据。

跟踪所有线程的代码覆盖率。

于 2012-09-13T12:19:31.813 回答
1

我们的C++ 测试覆盖工具提供了对模板主体的测试覆盖,或者至少是那些在您指定的文件中定义的模板以覆盖。

它不区分模板的实例化。

如果您有一个多线程应用程序,该工具将记录所有线程执行的分支,如果您将该工具配置为使用原子可写的标志(通常是 CPU 的自然字长 [32 或 64 位]。(如果你不这样做,你可能会在更新覆盖标志时出现线程竞争,你可能会失去一些覆盖.这不是工具的缺陷;它是对存储保持探针的不同步访问的结果数据。)

对于竞态检测,OP需要找到竞态检测工具;测试覆盖率工具不会这样做。

于 2011-12-31T05:13:14.497 回答
1

我在一个大型产品上工作,我们使用了一个名为 BullsEye 的第三方应用程序进行覆盖测试。它创造了奇迹。

于 2011-10-17T08:55:38.013 回答
0

Parasoft CPP 测试是用于包括代码覆盖率和静态分析在内的各种分析的好工具。这也有利于深入研究多线程。

http://www.parasoft.com/jsp/products/cpptest.jsp

这里有 10 个很好的代码覆盖开源工具:

http://open-tube.com/10-code-coverage-tools-cc/

于 2011-10-10T09:57:18.217 回答