合并 Jenkins 管道中并行阶段的 C++ 覆盖率结果

Combining C++ Coverage Results from Parallel stages in a Jenkins Pipeline

我有以下 Jenkins 文件:

pipeline{
   stages
   {
      stage ("Compile Everything") {/**/} // Code coverage flags turned on
                                          // Stashes compiled test binaries. 
      stage ("Parallel Tests"){
         parallel{
            stage ("Run Tests A-L") {/**/} // These stages unstash and run groups of tests,
            stage ("Run Tests L-Z") {/**/} // causing coverage files to be created.
                                           // I analyze those coverage files via
                                           // gcovr and stash the results as xml.
         }
      }

      stage ("Combine and Publish Coverage") {/**/} // Here I can unstash all of the xml
                                                    // code coverage files, but don't know
                                                    // how to combine them.
   }
}

在最后阶段,"Combine and Publish Coverage" 是否可以合并 gcovr 创建的所有 xml 文件?

有没有人完全以另一种方式解决了并行测试和合并覆盖率结果的问题?

以下解决方案并不像我想要的那样优雅,但这是我能想到的最好的解决方案。

使用 lcov 而不是 gcovr 来初始生成覆盖率报告。这会创建 .info 个文件,lcov 能够将这些文件组合成一个 .info 文件。

取消隐藏之前阶段的所有 .info 文件,然后使用 lcov -a 将它们组合成一个 .info 文件。 ()

接下来,使用lcov-to-cobertura 转换器将这个.info 文件转换成可以报告给SonarQube 的xml 文件。