如何将 Maven 多项目构建中的离线 JaCoCo exec 文件集成到 SonarQube 中
How to integrate offline JaCoCo exec files from Maven multiproject build into SonarQube
我有一个 Maven 多项目构建。单元测试使用 PowerMock 1.6.6,我已经设法使用 "offline" 进程为每个模块生成单独的 Jacoco (0.7.8) exec 文件。我还有一个使用 "report-aggregate" 生成单个 JaCoCo 报告的模块。
我现在正在尝试使用 sonar-scanner 2.8 与 SonarQube 5.6.5 集成。
使用 this doc page 我自然地构建了一个命令行,将 "sonar.jacoco.reportPaths" 属性 设置为每个子模块中 "jacoco.exec" 文件的逗号分隔路径列表。这似乎没有效果。我在输出中看到一条消息,上面写着“INFO: JaCoCoSensor: JaCoCo report not found : <mycurrentdirectory>\target\jacoco.exec
”。
因此,我改为将 属性 "sonar.jacoco.reportPath" 设置为相同的逗号分隔值。这至少有影响,但它混淆了扫描仪,因为它显然期望这是一个单一的位置。
然后我尝试将 属性 设置为几个 "jacoco.exec" 文件中的第一个。至少完成了,但覆盖数据很少。
我该如何进行?我是否应该以某种方式使用 Jacoco "merge" 目标将我所有的 jacoco.exec 文件合并到一个文件中,并指定它,或者是否有不同的未记录的 属性 允许列表文件路径数?
我确认广告中的 "sonar.jacoco.reportPaths" 属性 仅适用于 SonarQube 6.2 或更高版本(文档显然已更新以反映这一点)。
因此,我继续实施 "merge",为所有模块指定文件集。为该文件集列表获取正确的数据需要一段时间(Maven 与许多框架一样,当您的配置数据表示不存在的文件或组件时,通常什么也不说)。
我有一个 Maven 多项目构建。单元测试使用 PowerMock 1.6.6,我已经设法使用 "offline" 进程为每个模块生成单独的 Jacoco (0.7.8) exec 文件。我还有一个使用 "report-aggregate" 生成单个 JaCoCo 报告的模块。
我现在正在尝试使用 sonar-scanner 2.8 与 SonarQube 5.6.5 集成。
使用 this doc page 我自然地构建了一个命令行,将 "sonar.jacoco.reportPaths" 属性 设置为每个子模块中 "jacoco.exec" 文件的逗号分隔路径列表。这似乎没有效果。我在输出中看到一条消息,上面写着“INFO: JaCoCoSensor: JaCoCo report not found : <mycurrentdirectory>\target\jacoco.exec
”。
因此,我改为将 属性 "sonar.jacoco.reportPath" 设置为相同的逗号分隔值。这至少有影响,但它混淆了扫描仪,因为它显然期望这是一个单一的位置。
然后我尝试将 属性 设置为几个 "jacoco.exec" 文件中的第一个。至少完成了,但覆盖数据很少。
我该如何进行?我是否应该以某种方式使用 Jacoco "merge" 目标将我所有的 jacoco.exec 文件合并到一个文件中,并指定它,或者是否有不同的未记录的 属性 允许列表文件路径数?
我确认广告中的 "sonar.jacoco.reportPaths" 属性 仅适用于 SonarQube 6.2 或更高版本(文档显然已更新以反映这一点)。
因此,我继续实施 "merge",为所有模块指定文件集。为该文件集列表获取正确的数据需要一段时间(Maven 与许多框架一样,当您的配置数据表示不存在的文件或组件时,通常什么也不说)。