我已经使用gcov来测试代码覆盖率,但是当涉及模板化的c ++代码时,它不能很好地工作。我广泛使用boost :: spirit,而gcov似乎只是忽略了模板化的精神代码。
此外,我想知道是否有覆盖工具来显示线程如何相互交互,精确定位可能的分支/竞争条件/实际执行的执行流程。
答案 0 :(得分:2)
TestCocoon是一个很好的工具,比具有良好工具和报告功能的gcov更好。由于模板是编译时的野兽,我不确定你想要获得哪些覆盖信息?
我的两分钱答案 1 :(得分:1)
我处理大型产品,并使用名为BullsEye的第三方应用进行覆盖测试。它创造了奇迹。
答案 2 :(得分:1)
我们的C++ Test Coverage工具提供了模板正文的测试覆盖率,或者至少是您为其指定的文件中定义的那些模板。
它不区分模板的实例化。
如果您有一个多线程应用程序,该工具将记录所有线程执行的分支,如果您将工具配置为使用可原子写入的标志(通常是CPU的自然字大小[32或64位] 。(如果你不这样做,你最终可能会在更新覆盖标志时遇到线程竞争,你可能会失去一点覆盖率。这不是该工具的缺陷;它是对工具的不同步访问的结果存储保存探针数据。)
对于比赛检测,OP需要找到比赛检测工具;测试覆盖率工具不会这样做。
答案 3 :(得分:1)
C++ Coverage Validator提供模板的覆盖率数据。
跟踪所有线程的代码覆盖率。
答案 4 :(得分:0)
Parasoft CPP测试是各种分析的好工具,包括代码覆盖和静态分析。这对于深入研究多线程也很有用。
http://www.parasoft.com/jsp/products/cpptest.jsp
以下是10个用于代码覆盖的良好开放式工具: