【问题标题】:C++ code coverage tool [closed]C++ 代码覆盖率工具 [关闭]
【发布时间】:2025-12-23 23:05:13
【问题描述】:

我正在寻找 c++ 代码覆盖工具,该工具在多服务器设置以及 windows 和 linux 上运行良好,没有许可问题(如果非免费)。

我做了一些研究,发现了 2 个免费工具:Covtool 和 gcov。这些或任何其他建议有什么缺点吗?

【问题讨论】:

  • GCov/LCov article。上次我检查 GCC 仪器装备不是线程安全的,所以如果你打算在单元测试之外的任何东西上运行它,那么值得特别搜索一下。

标签: java c++ c c++builder


【解决方案1】:

虽然我不记得我研究代码覆盖工具的所有细节,但我似乎记得以下关于 gcov 和 covtool 的内容:

  • 它们需要对您的构建系统进行自定义修改
  • 他们需要自定义编译器标志和/或链接步骤
  • 它们都提供最少的输出和格式

我们需要对 Windows/Linux 和 gcc/MSVC 的支持,因此选择了商业且非免费的 BullseyeCoverage。我们估计,将我们的构建系统更改为使用免费产品会比购买 BullseyeCoverage 许可证花费更多的钱。他们的支持很棒而且反应迅速,我对工具的质量非常满意。

一些好处:

  • 命令行和 GUI 形式的强大查询支持
  • 我们的构建系统需要no更改
  • 对编译时间和运行时间的影响最小
  • 提供与 CruiseControl 和 Hudson 等构建机器人集成的工具
  • 用于覆盖结果的可视化和导航的漂亮 GUI

【讨论】:

    【解决方案2】:

    AQTime 在 Delphi/C++Builder 用户中很受欢迎,但与其他推荐一样,它不是免费的。

    【讨论】:

    • 谢谢。有什么免费的 C++ 代码覆盖工具推荐吗?
    【解决方案3】:

    将 Gcov 工具与 LCOV 工具一起使用。 LCOV 工具是 gcov 的图形化前端。

    【讨论】:

      【解决方案4】:

      OovAide 程序是一个免费的开源工具,可以检测源文件 并生成代码覆盖率统计信息并显示哪些行从未被 跑步。它是线程安全且高效的。

      这是相当透明的意思是它产生的代码都是可见的 如果有特殊需要,可以根据您的项目进行修改。

      源码修改的基本思路是插入一个宏 在 CLang 正在处理的 AST 中的每组语句中。 这通常在条件句之后或大括号处。宏可以 修改,但默认是它在偏移量处增加一个值 数组。在某些情况下,我还对其进行了修改以写入文件, 这允许执行程序跟踪。

      一个问题可能是它的构建系统是有限的,并且必须能够 使用 CLang 构建。它可能不适用于某些类型的项目。但由于 它只是通过插入宏来修改源代码,可以 使用它来修改源代码,然后使用现有的构建系统来 构建修改后的源代码。

      有一个文档描述了它是如何工作的。 http://oovaide.sourceforge.net/articles/TestCoverage.html

      【讨论】: