首页 文章

无论如何将cobertura coverage xml报告合并在一起?

提问于
浏览
8

我有c / c应用程序,有很多单元测试 . 我想得到每个测试的整体覆盖率和个人覆盖率,条件是每个测试只能运行一次 . 覆盖格式必须是xml(cobertura xml),以便jenkins cobertura插件处理 .

到目前为止,我在编译时生成gcno文件,在使用source时生成gcda文件 . 然后调用gcovr获取xml文件 .

我想创建每个单元测试的覆盖范围(从而为每个单元测试创建覆盖xml),然后将这些xml文件合并到一个xml文件中 .

谢谢!

6 回答

  • 0

    ReportGenerator的最后一个预发布版本(4.0.0-rc4)可以合并cobertura文件 .

    你可以从nuget安装它

    用法:

    reportgenerator "-reports:target\*\*.xml" "-targetdir:C:\report" -reporttypes:Cobertura
    

    在targetdir目录中生成文件Corbertura.xml

    您可以使用 dotnet core 版本在linux或mac上使用它

  • 2

    抱歉无法评论:

    @ x3mspeedy非常适合发布一个脚本,但是从那时起他们已经将脚本移动了一下,我搜索了repo并将其拉入公共要点:

    https://gist.github.com/tgsoverly/ef975d5b430fbce1eb33

  • 2

    我写了python script,可以将cobertura报告合并在一起 . 它只合并行"hits",并且能够在合并时过滤特定的包 .

    条件(分支率)覆盖率和线路覆盖率(线路速率)百分比值尚未合并 . Jenkins插件重新计算这些值,因此在此上下文中不必实现(但可能会实现) .

    当报告在最终值上合作时,条件覆盖可以't seem to be put together easily, so it doesn'工作(意味着一个文件具有条件覆盖 50% (2/4) 和其他条件覆盖 50% (2/4) 其他两个分支 . 结果设置为这两个数字中的较高者所以它仍然是 50% (2/4)

  • 3

    无法添加评论,请参阅:

    https://github.com/cobertura/cobertura/wiki/Command-Line-Reference

    在底部 .

  • 0

    我也在寻找解决方案,但在我的情况下,大约有1000个Cobertura XML文件,并且所有上述脚本在处理这样的数量时都非常慢 .

    最后,我想出了一个Python脚本merge-cobertura.py来进行合并 . 然而,它所支持的内容非常有限,因为我需要的是合并来自OpenCppCoverage的报告以用于Codecov . 因此,它只是合并线路命中,忽略任何分支信息(没有来自OpenCppCoverage)并假设所有覆盖报告都是针对相同的路径 . 它还将所有包合并为一个 .

    也许有人会发现这个也很有用,my blog中有更多细节 .

  • 0

    为了它的 Value ,我制作了一个节点脚本来合并多个cobertura XML报告 . 设置非常简单,符合我的需求 . https://gist.github.com/merlosy/8efabc754985aa6e754a3d5932b1a77d

相关问题