Sonarqube 在 运行 之后未显示代码覆盖率
Sonarqube is not showing code coverage after running
我正在 运行使用 maven 的 sonarqube。
我使用以下 way 安装了它。
使用 brew
,我安装了 mysql
和 sonar
。
当我 运行 我得到 7 个严重错误,但 88 个测试的代码覆盖率为零
当我 运行 使用 IntelliJ 的工具时,我得到以下结果。 (不是零!)
这是我直接检查 Jacoco 结果的时候。在$base_direc/target/jacoco/index.html
使用声纳扫描仪 运行 时的相同代码
这是我的maven配置
我的~/.m2/settings.xml
编辑 1:
我在日志中找到了这个。
编辑2:
我编辑了 ~/.m2/settings.xml
添加了
<properties>
<sonar.host.url>http://localhost:9000/</sonar.host.url>
</properties>
已编辑 /usr/local/Cellar/sonarqube/6.3.1/libexec/conf/sonar.properties
添加了 sonar.host.url=http://localhost:9000/
已编辑 /usr/local/etc/sonar-scanner.properties
添加 - sonar.host.url=http://localhost:9000/
运行以上所有方式的应用和结果都是一样的,即我可以看到 Jacoco 结果,但在声纳中看不到。
如果发现错误,声纳是否可能拒绝进行代码覆盖?!
我找到了解决方案 -
我包含的 Maven 插件将 Jacoco 的目标文件和数据文件配置为 ${basedir}/target/coverage-reports/jacoco-unit.exec
但默认声纳读数为 ${basedir}/target/jacoco.exec
。我在 http://localhost:9000/settings?category=java
更改了默认值
找不到工作参考 link。这是辅助 link:Baeldung Sonar and jacoco
我已经通过以下步骤解决了这个问题:
1.To开始,我在pom.xml.
中添加了配置
<properties>
<sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.language>java</sonar.language>
</properties>
2.In sonarqube 属性文件添加了以下部分。
sonar.projectName=${JOB_NAME}
sonar.projectVersion=1.0.0
sonar.sources=src/main
sonar.sourceEncoding=UTF-8
sonar.language=java
sonar.tests=src/test
sonar.junit.reportsPath=target/surefire-reports
sonar.surefire.reportsPath=target/surefire-reports
sonar.jacoco.reportPath=target/jacoco.exec
sonar.binaries=target/classes
sonar.java.coveragePlugin=jacoco
sonar.verbose=true
我遇到了同样的问题,我会帮你解决的。这里的第一件事是遍历你的 pom 文件。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<jacoco.version>0.8.5</jacoco.version>
<sonar.jacoco.reportPath>target/jacoco-ut.exec</sonar.jacoco.reportPath>
<sonar.jacoco.itReportPaths>target/jacoco-it.exec</sonar.jacoco.itReportPaths>
</properties>
在 pom 文件中,您使用了 jacoco-ut.exec 您必须在您的文件中使用以下属性
在 Jenkins 中执行 SonarQube Scanner
sonar.java.binaries=target/classes
sonar.junit.reportsPath=target/surefire-reports
sonar.surefire.reportsPath=target/surefire-reports
sonar.jacoco.reportPath=target/jacoco-ut.exec
记住 pom 中的 jacoco.exec 和 Jenkins 中执行 SonarQube Scanner 的 属性 名称
对我来说,问题是:
报告在 pre-package 阶段生成。现在我们更新了 Pull Request maven 阶段。
mvn -B clean test
到 mvn -B clean package
.
此外,最新的 SONAR 更喜欢 XML 报告。您可以通过以下方式在 maven pom 中指定路径:
<sonar.coverage.jacoco.xmlReportPaths>target/site/jacoco/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
在声纳项目属性文件中:
sonar.projectKey=my-project
sonar.projectName=my-project
sonar.language=java
sonar.java.binaries=target/classes
sonar.sources=src/main
sonar.tests=src/test
sonar.exclusions=**/beans/*,**/config/*,**/constants/*,**/dtos/**,**/entity/*,**/exceptions/*,**/insights/*,**/App.java
sonar.sourceEncoding=UTF-8
sonar.dynamicAnalysis=reuseReports
sonar.junit.reportsPath=target/surefire-reports
sonar.java.coveragePlugin=jacoco
sonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml
我正在 运行使用 maven 的 sonarqube。
我使用以下 way 安装了它。
使用 brew
,我安装了 mysql
和 sonar
。
当我 运行 我得到 7 个严重错误,但 88 个测试的代码覆盖率为零
当我 运行 使用 IntelliJ 的工具时,我得到以下结果。 (不是零!)
这是我直接检查 Jacoco 结果的时候。在$base_direc/target/jacoco/index.html
使用声纳扫描仪 运行 时的相同代码
这是我的maven配置
我的~/.m2/settings.xml
编辑 1:
我在日志中找到了这个。
编辑2:
我编辑了 ~/.m2/settings.xml
添加了
<properties>
<sonar.host.url>http://localhost:9000/</sonar.host.url>
</properties>
已编辑 /usr/local/Cellar/sonarqube/6.3.1/libexec/conf/sonar.properties
添加了 sonar.host.url=http://localhost:9000/
已编辑 /usr/local/etc/sonar-scanner.properties
添加 - sonar.host.url=http://localhost:9000/
运行以上所有方式的应用和结果都是一样的,即我可以看到 Jacoco 结果,但在声纳中看不到。
如果发现错误,声纳是否可能拒绝进行代码覆盖?!
我找到了解决方案 -
我包含的 Maven 插件将 Jacoco 的目标文件和数据文件配置为 ${basedir}/target/coverage-reports/jacoco-unit.exec
但默认声纳读数为 ${basedir}/target/jacoco.exec
。我在 http://localhost:9000/settings?category=java
找不到工作参考 link。这是辅助 link:Baeldung Sonar and jacoco
我已经通过以下步骤解决了这个问题:
1.To开始,我在pom.xml.
中添加了配置<properties>
<sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.language>java</sonar.language>
</properties>
2.In sonarqube 属性文件添加了以下部分。
sonar.projectName=${JOB_NAME}
sonar.projectVersion=1.0.0
sonar.sources=src/main
sonar.sourceEncoding=UTF-8
sonar.language=java
sonar.tests=src/test
sonar.junit.reportsPath=target/surefire-reports
sonar.surefire.reportsPath=target/surefire-reports
sonar.jacoco.reportPath=target/jacoco.exec
sonar.binaries=target/classes
sonar.java.coveragePlugin=jacoco
sonar.verbose=true
我遇到了同样的问题,我会帮你解决的。这里的第一件事是遍历你的 pom 文件。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<jacoco.version>0.8.5</jacoco.version>
<sonar.jacoco.reportPath>target/jacoco-ut.exec</sonar.jacoco.reportPath>
<sonar.jacoco.itReportPaths>target/jacoco-it.exec</sonar.jacoco.itReportPaths>
</properties>
在 pom 文件中,您使用了 jacoco-ut.exec 您必须在您的文件中使用以下属性 在 Jenkins 中执行 SonarQube Scanner
sonar.java.binaries=target/classes
sonar.junit.reportsPath=target/surefire-reports
sonar.surefire.reportsPath=target/surefire-reports
sonar.jacoco.reportPath=target/jacoco-ut.exec
记住 pom 中的 jacoco.exec 和 Jenkins 中执行 SonarQube Scanner 的 属性 名称
对我来说,问题是:
报告在 pre-package 阶段生成。现在我们更新了 Pull Request maven 阶段。
mvn -B clean test
到 mvn -B clean package
.
此外,最新的 SONAR 更喜欢 XML 报告。您可以通过以下方式在 maven pom 中指定路径:
<sonar.coverage.jacoco.xmlReportPaths>target/site/jacoco/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
在声纳项目属性文件中:
sonar.projectKey=my-project
sonar.projectName=my-project
sonar.language=java
sonar.java.binaries=target/classes
sonar.sources=src/main
sonar.tests=src/test
sonar.exclusions=**/beans/*,**/config/*,**/constants/*,**/dtos/**,**/entity/*,**/exceptions/*,**/insights/*,**/App.java
sonar.sourceEncoding=UTF-8
sonar.dynamicAnalysis=reuseReports
sonar.junit.reportsPath=target/surefire-reports
sonar.java.coveragePlugin=jacoco
sonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml