我有c / c应用程序,有很多单元测试 . 我想得到每个测试的整体覆盖率和个人覆盖率,条件是每个测试只能运行一次 . 覆盖格式必须是xml(cobertura xml),以便jenkins cobertura插件处理 .
到目前为止,我在编译时生成gcno文件,在使用source时生成gcda文件 . 然后调用gcovr获取xml文件 .
我想创建每个单元测试的覆盖范围(从而为每个单元测试创建覆盖xml),然后将这些xml文件合并到一个xml文件中 .
谢谢!
ReportGenerator的最后一个预发布版本(4.0.0-rc4)可以合并cobertura文件 .
你可以从nuget安装它
用法:
reportgenerator "-reports:target\*\*.xml" "-targetdir:C:\report" -reporttypes:Cobertura
在targetdir目录中生成文件Corbertura.xml
您可以使用 dotnet core 版本在linux或mac上使用它
抱歉无法评论:
@ x3mspeedy非常适合发布一个脚本,但是从那时起他们已经将脚本移动了一下,我搜索了repo并将其拉入公共要点:
https://gist.github.com/tgsoverly/ef975d5b430fbce1eb33
我写了python script,可以将cobertura报告合并在一起 . 它只合并行"hits",并且能够在合并时过滤特定的包 .
条件(分支率)覆盖率和线路覆盖率(线路速率)百分比值尚未合并 . Jenkins插件重新计算这些值,因此在此上下文中不必实现(但可能会实现) .
当报告在最终值上合作时,条件覆盖可以't seem to be put together easily, so it doesn'工作(意味着一个文件具有条件覆盖 50% (2/4) 和其他条件覆盖 50% (2/4) 其他两个分支 . 结果设置为这两个数字中的较高者所以它仍然是 50% (2/4)
50% (2/4)
无法添加评论,请参阅:
https://github.com/cobertura/cobertura/wiki/Command-Line-Reference
在底部 .
我也在寻找解决方案,但在我的情况下,大约有1000个Cobertura XML文件,并且所有上述脚本在处理这样的数量时都非常慢 .
最后,我想出了一个Python脚本merge-cobertura.py来进行合并 . 然而,它所支持的内容非常有限,因为我需要的是合并来自OpenCppCoverage的报告以用于Codecov . 因此,它只是合并线路命中,忽略任何分支信息(没有来自OpenCppCoverage)并假设所有覆盖报告都是针对相同的路径 . 它还将所有包合并为一个 .
也许有人会发现这个也很有用,my blog中有更多细节 .
为了它的 Value ,我制作了一个节点脚本来合并多个cobertura XML报告 . 设置非常简单,符合我的需求 . https://gist.github.com/merlosy/8efabc754985aa6e754a3d5932b1a77d
6 回答
ReportGenerator的最后一个预发布版本(4.0.0-rc4)可以合并cobertura文件 .
你可以从nuget安装它
用法:
在targetdir目录中生成文件Corbertura.xml
您可以使用 dotnet core 版本在linux或mac上使用它
抱歉无法评论:
@ x3mspeedy非常适合发布一个脚本,但是从那时起他们已经将脚本移动了一下,我搜索了repo并将其拉入公共要点:
https://gist.github.com/tgsoverly/ef975d5b430fbce1eb33
我写了python script,可以将cobertura报告合并在一起 . 它只合并行"hits",并且能够在合并时过滤特定的包 .
条件(分支率)覆盖率和线路覆盖率(线路速率)百分比值尚未合并 . Jenkins插件重新计算这些值,因此在此上下文中不必实现(但可能会实现) .
当报告在最终值上合作时,条件覆盖可以't seem to be put together easily, so it doesn'工作(意味着一个文件具有条件覆盖
50% (2/4)
和其他条件覆盖50% (2/4)
其他两个分支 . 结果设置为这两个数字中的较高者所以它仍然是50% (2/4)
无法添加评论,请参阅:
在底部 .
我也在寻找解决方案,但在我的情况下,大约有1000个Cobertura XML文件,并且所有上述脚本在处理这样的数量时都非常慢 .
最后,我想出了一个Python脚本merge-cobertura.py来进行合并 . 然而,它所支持的内容非常有限,因为我需要的是合并来自OpenCppCoverage的报告以用于Codecov . 因此,它只是合并线路命中,忽略任何分支信息(没有来自OpenCppCoverage)并假设所有覆盖报告都是针对相同的路径 . 它还将所有包合并为一个 .
也许有人会发现这个也很有用,my blog中有更多细节 .
为了它的 Value ,我制作了一个节点脚本来合并多个cobertura XML报告 . 设置非常简单,符合我的需求 . https://gist.github.com/merlosy/8efabc754985aa6e754a3d5932b1a77d