在我的应用程序的构建过程中,我使用 SonarQube 来显示一些关于代码质量的统计数据。特别是我们用它来显示一些每晚执行的测试的代码覆盖率。
为了计算和检索代码覆盖率数据,我以这种方式使用 JaCoCo Maven 插件和代理:
mvn org.jacoco:jacoco-maven-plugin:0.7.8:dump \
sonar:sonar
-Djacoco.address=TEST_SERVER \
-Djacoco.destFile=/proj/coverage-reports/jacoco-it.exec \
-Dsonar.projectKey=TEST \
-Dsonar.projectName=TEST \
-Dsonar.branch=TEST \
-Dsonar.jacoco.itReportPath=/proj/coverage-reports/jacoco-it.exec
以这种方式计算的代码覆盖率是正确的(因为它反映了某些每晚执行的测试的预期覆盖率)。
但在某些情况下,我无法执行jacoco:dump
检索代码覆盖率统计的目标。在这些情况下,执行sonar:sonar
会将现有代码覆盖率统计信息(根据jacoco:dump
目标的先前执行计算)为 0,因为 Sonar 假设如果未发送统计信息,则该统计信息不存在。
我想做的是,如果我不这样做dump
并使用 JaCoCo 计算代码覆盖率指数,SonarQube 中的代码覆盖率测量值不会丢失,而是等于最后计算的值。
有什么方法可以指示 SonarQube 服务器或 Maven Sonar 插件保留过去的代码覆盖率统计信息?