多个 Maven 模块声纳代码覆盖率在 sonarqube 中显示为零
Posted
技术标签:
【中文标题】多个 Maven 模块声纳代码覆盖率在 sonarqube 中显示为零【英文标题】:multiple maven modules sonar code coverage is showing zero % on sonar qube 【发布时间】:2021-09-10 09:26:05 【问题描述】:我正在使用 6.7.6 和 maven 3.3.9 的声纳版本我在我的 Jenkins 中具有以下配置,它按照路径下方的预期生成 jacoco 报告和测试用例报告。但我看到 0% 的代码覆盖率在 sonarqube 中,有人可以帮我吗?
sonar.language=java
sonar.java.coveragePlugin=jacoco
sonar.junit.reportPaths=ABC-1/target/surefire-reports, ABC-2/target/surefire-reports, ABC-3/target/surefire-reports, ABC-4/target/surefire-reports, ABC-5/target/surefire-reports, ABC-6/target/surefire-reports
sonar.jacoco.reportPaths=ABC-1/target/jacoco.exec, ABC-2/target/jacoco.exe, ABC-3/target/jacoco.exec, ABC-4/target/jacoco.exec, ABC-5/target/surefire-reports, ABC-6/target/jacoco.exec
sonar.projectKey=abc_Parent
sonar.projectName=abc_Parent
sonar.projectVersion=$POM_VERSION
sonar.java.binaries=ABC-1/target/classes, ABC-2/target/classes, ABC-3/target/classes, ABC-4/target/classes, ABC-5/target/classes, ABC-6/target/classes
sonar.test.exclusions=**/src/test/**
sonar.sources=.
MavenGoal
-Dmaven.test.failure.ignore=true -U clean org.jacoco:jacoco-maven-plugin:1.1.1:prepare-agent 测试
父POM
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>***</version>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>***</version>
</plugin>
</plugins>
</pluginManagement>
</build>
【问题讨论】:
如果您找到了我们所有问题的答案,请考虑将其标记为已接受。 【参考方案1】:如您所知,SonarQube does not do the analysis 只是导入结果。
你真的应该 upgrade 到 SQ LTS 8.9.x,这意味着转到 6.7.7,然后是 7.9.6,然后是 8.9.x。
你的覆盖问题是你必须jacoco:prepare-agent
,然后运行测试(-DskipTests=false
),然后生成jacoco:report
,或者因为你是多模块,jacoco:report-aggregate
,最后,sonar:sonar
sonar-jacoco 插件然后可以从sonar.coverage.jacoco.xmlReportPaths
位置获取结果。
如果未定义“'sonar.coverage.jacoco.xmlReportPaths”,则默认位置为:
"target/site/jacoco/jacoco.xml,target/site/jacoco-it/jacoco.xml,build/reports/jacoco/test/jacocoTestReport.xml"
SonarJava 分析器 V 5.12。 deprecated use JaCoCo’s binary format (.exec
files)。支持.exec格式JaCoCo Coverage Reports was dropped in SonarQube 8.2
根据sonar-jacoco-plugin-1.1 的发行说明,它现在具有“支持通配符 in sonar.coverage.jacoco.xmlReportPaths”
SonarQube 解释了为什么数字 might not match expectations
【讨论】:
以上是关于多个 Maven 模块声纳代码覆盖率在 sonarqube 中显示为零的主要内容,如果未能解决你的问题,请参考以下文章