【问题标题】:C++ code coverage tool [closed]C++ 代码覆盖率工具 [关闭]
【发布时间】:2025-12-23 23:05:13
【问题描述】:
我正在寻找 c++ 代码覆盖工具,该工具在多服务器设置以及 windows 和 linux 上运行良好,没有许可问题(如果非免费)。
我做了一些研究,发现了 2 个免费工具:Covtool 和 gcov。这些或任何其他建议有什么缺点吗?
【问题讨论】:
标签:
java
c++
c
c++builder
【解决方案1】:
虽然我不记得我研究代码覆盖工具的所有细节,但我似乎记得以下关于 gcov 和 covtool 的内容:
- 它们需要对您的构建系统进行自定义修改
- 他们需要自定义编译器标志和/或链接步骤
- 它们都提供最少的输出和格式
我们需要对 Windows/Linux 和 gcc/MSVC 的支持,因此选择了商业且非免费的 BullseyeCoverage。我们估计,将我们的构建系统更改为使用免费产品会比购买 BullseyeCoverage 许可证花费更多的钱。他们的支持很棒而且反应迅速,我对工具的质量非常满意。
一些好处:
- 命令行和 GUI 形式的强大查询支持
- 我们的构建系统需要no更改
- 对编译时间和运行时间的影响最小
- 提供与 CruiseControl 和 Hudson 等构建机器人集成的工具
- 用于覆盖结果的可视化和导航的漂亮 GUI
【解决方案2】:
AQTime 在 Delphi/C++Builder 用户中很受欢迎,但与其他推荐一样,它不是免费的。
【解决方案3】:
将 Gcov 工具与 LCOV 工具一起使用。 LCOV 工具是 gcov 的图形化前端。
【解决方案4】:
OovAide 程序是一个免费的开源工具,可以检测源文件
并生成代码覆盖率统计信息并显示哪些行从未被
跑步。它是线程安全且高效的。
这是相当透明的意思是它产生的代码都是可见的
如果有特殊需要,可以根据您的项目进行修改。
源码修改的基本思路是插入一个宏
在 CLang 正在处理的 AST 中的每组语句中。
这通常在条件句之后或大括号处。宏可以
修改,但默认是它在偏移量处增加一个值
数组。在某些情况下,我还对其进行了修改以写入文件,
这允许执行程序跟踪。
一个问题可能是它的构建系统是有限的,并且必须能够
使用 CLang 构建。它可能不适用于某些类型的项目。但由于
它只是通过插入宏来修改源代码,可以
使用它来修改源代码,然后使用现有的构建系统来
构建修改后的源代码。
有一个文档描述了它是如何工作的。 http://oovaide.sourceforge.net/articles/TestCoverage.html