Rok*_*_11 7 code-coverage jacoco sonarqube jacoco-maven-plugin
我有一个多模块 Maven 项目,其中覆盖率报告位于另一个模块中,而不是覆盖的 Java 类中。将非空 xml 覆盖率报告(带有覆盖率信息)导入 Sonarqube 成功,但显示覆盖率为 0。
重现步骤:
mvn clean verify. 之后,存在位于 中的聚合 xml 报告coverage/target/site/jacoco-aggregate-all/jacoco.xml。您可以在其中以及相应的 html 报告中看到覆盖率数据。docker run -d -p 9000:9000 sonarqube
Run Code Online (Sandbox Code Playgroud)
编辑:插件“JaCoco xml 报告导入器”已安装在此映像中。
mvn sonar:sonar -X -Dsonar.projectKey=example -Dsonar.host.url=http://localhost:9000 -Dsonar.login=admin -Dsonar.password=admin -Dsonar.coverage.jacoco.xmlReportPaths=target/site/jacoco-aggregate-all/jacoco.xml
## Log output contains
...
10:54:28.519 Reading report '<project-path>\maven-multimodule-coverage\coverage\target\site\jacoco-aggregate-all\jacoco.xml'
...
Run Code Online (Sandbox Code Playgroud)
http://localhost:9000/dashboard?id=example. 您会看到覆盖率为 0。我究竟做错了什么?
事实证明,如果我对 xml 报告文件使用绝对路径,它就可以工作。所以我添加了
<sonar.coverage.jacoco.xmlReportPaths>${project.basedir}/../coverage/target/site/jacoco-aggregate-all/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
Run Code Online (Sandbox Code Playgroud)
到顶部的maven pom,这样每个模块都指向同一个报告文件。对于更深层次的模块目录嵌套,您必须引入属性main.basedir或其他内容。
主要的理解是,您不提供声纳映射到模块类的覆盖报告,但您提供映射到覆盖报告的模块类。
| 归档时间: |
|
| 查看次数: |
12590 次 |
| 最近记录: |