我有一个非常大的代码库,包含大量的单元测试(使用CppUnit).我需要确定这些测试执行的代码百分比,并且(理想情况下)生成某种报告,该报告以每个库或每个文件的形式告诉我,执行了多少代码.
这是踢球者:这必须完全不受限制地运行(最终在持续集成构建中),并且必须是跨平台的(至少WIN32和*nix).
任何人都可以建议一个工具,或一组可以帮助我做到这一点的工具吗?我不能改变CppUnit(我也不想 - 它踢屁股),但除此之外,我很想听到你可能有的任何建议.
干杯,
该文章描述了另一开发商挫折搜索为C++代码覆盖工具.作者的最终解决方案是Bullseye Coverage.
Bullseye Coverage功能:
跨平台支持(win32,unix和嵌入式),(支持linux gcc编译器和MSVC6)
易于使用(在几小时内启动并运行).
提供"最佳"指标:功能覆盖范围和条件/决策覆盖范围.
使用源代码检测.
至于连接到您的持续集成,它取决于您使用的CI解决方案,但您可以将仪器/覆盖测量步骤挂钩到用于自动测试的make文件中.
只要您的所有测试在两种环境中都能正确运行,您就可以很好地测量其中一种测试的覆盖范围.(虽然Bullseye似乎支持这两个平台).但为什么不在两种环境中进行持续集成构建?如果您在两种环境中交付给客户,那么您需要在两者中进行测试.
出于这个原因,听起来你可能需要设置两个连续的构建服务器,一个用于linux构建,一个用于windows构建.也许这可以通过vmware或virtualbox等虚拟化软件轻松完成.您可能不需要在两个操作系统上运行代码覆盖率指标,但您绝对应该在两者上运行单元测试.
如果你可以使用GNU GCC作为编译器,那么gcov工具效果很好.完全自动化整个过程非常容易.