我有一个非常大的代码库,其中包含大量的单元测试(使用 CppUnit)。 我需要计算出这些测试执行了多少百分比的代码, ,并且(理想情况下)生成某种报告,告诉我每个库或每个文件的代码被执行了多少。

这是关键点:这必须完全无人值守地运行(最终在持续集成构建中),并且必须是跨平台的(至少是 WIN32 和 *nix)。

谁能推荐一个或一组工具来帮助我做到这一点?我无法放弃 CppUnit(我也不想这样做——它太糟糕了),但除此之外,我渴望听到您可能提出的任何建议。

干杯,

有帮助吗?

解决方案

我应该使用哪个工具?

文章描述 另一位开发人员在寻找 C++ 代码覆盖工具时遇到了困难。作者最终的解决方案是 靶心覆盖范围.

靶心覆盖范围 特征:

至于挂钩持续集成,这取决于您使用的 CI 解决方案,但您可能可以将仪器/覆盖率测量步骤挂钩到用于自动化测试的 make 文件中。


测试 Linux 与 Windows?

只要所有测试在两种环境中都能正确运行,您就应该能够很好地测量其中一种环境的覆盖率。(虽然出现了靶心 支持两个平台)。但为什么不在这两种环境中进行持续集成构建呢?如果您在两种环境中向客户交付,那么您 需要 两者都进行测试。

因此,听起来您可能需要设置两台连续构建服务器,一台用于 Linux 构建,一台用于 Windows 构建。也许这可以通过一些虚拟化软件轻松实现,例如 虚拟机 或者 虚拟盒. 。您可能不需要在两个操作系统上运行代码覆盖率指标,但您绝对应该在两个操作系统上运行单元测试。

其他提示

如果你可以使用 GNU海湾合作委员会 作为你的编译者,那么 冠状病毒 工具效果很好。整个过程完全自动化非常容易。

如果您使用 GCC 工具链,gcov 将为您提供源、功能和分支覆盖率统计信息。gcov 适用于 MinGW 和 Cygwin。这将使您能够获取覆盖率统计数据,并发出经过检测的源代码,使您能够可视化未执行的代码。

然而,如果你真的想用漂亮的报告来完成它,可以将 gcov 与 左旋病毒 是要走的路。lcov 将为您提供范围为文件和目录的条形报告、功能覆盖率统计数据以及用于显示覆盖率的颜色编码源文件浏览(绿色表示已执行,红色表示未执行...)。

lcov 在 Linux 上很容易,但在 Cygwin 上可能需要一些 Perl 破解。我个人在 Windows 上执行脚本(lcov 是用 perl 实现的)时遇到了一些问题。我已经得到了一个可以使用的破解版本,但请预先警告。

另一种方法是在 Windows 上执行 gcov 发出,并在 Linux 上执行 lcov 后处理,它肯定可以开箱即用。

看看我们的 SD C++ 测试覆盖率 工具。对于 GCC 和 MSVC6 都可以获得它。

它具有低开销的探测数据收集、覆盖在代码上的覆盖率数据的良好显示,以及跨方法/类/文件/目录级别的覆盖率汇总的完整报告生成。

编辑:2015 年 8 月:现在通过 Visual Studio 2015 支持 GCC5 和各种 MS 方言。要在 Linux 下使用这些工具,您需要 Wine,但这些工具提供了 Linux 原生 sh 脚本和基于 Linux/Java 的 UI,因此该工具感觉就像是原生 Linux 工具。

我想我应该指定编译器 - 我们在 Linux 上使用 gcc,在 WIn32 上使用 MSVC 6(是的,我知道,它很旧,但它(大部分)对我们有用)。

因此,gcov 不适用于我们的 Win32 构建,而 Bullseye 不适用于我们的 Linux 构建。

再说一遍,也许我只需要在一个操作系统中进行覆盖......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top