maven Sonarqube运行后未显示代码覆盖率

lsmepo6l  于 2023-10-17  发布在  Maven
关注(0)|答案(4)|浏览(202)

我在和Maven一起经营Sonarqube
我用way安装了它。使用brew,我安装了mysqlsonar
当我运行时,我得到了7个关键错误,但88个测试的代码覆盖率为零x1c 0d1x
当我用IntelliJ的工具运行它时,我得到以下结果。(不是零!)

这是我直接检查Jacoco结果的时候。单位:$base_direc/target/jacoco/index.html

与sonar-scannerx 1c 3d 1x运行时相同的代码
这是我的maven配置

我的~/.m2/settings.xml

编辑1:我在日志中找到了这个。

编辑2:我已经编辑了~/.m2/settings.xml添加

  1. <properties>
  2. <sonar.host.url>http://localhost:9000/</sonar.host.url>
  3. </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/
运行的应用程序在所有上述方式和结果是相同的,即,我可以看到雅科结果,但不是在声纳。
有没有可能,如果发现错误,声纳拒绝做代码覆盖?!

yzxexxkh

yzxexxkh1#

我找到解决办法了-
我包含的maven插件将Jacoco的destfile和destile配置为${basedir}/target/coverage-reports/jacoco-unit.exec
但默认情况下声纳读数为${basedir}/target/jacoco.exec我在http://localhost:9000/settings?类别=java
参考号:Sonar Code Coverage
找不到工作引用链接。这里是辅助链接:Baeldung Sonar and jacoco

suzh9iv8

suzh9iv82#

我通过以下步骤解决了这个问题:

1.开始,我在pom.xml中添加了配置。

  1. <properties>
  2. <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
  3. <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
  4. <sonar.language>java</sonar.language>
  5. </properties>

2.在sonarqube属性文件中添加了以下部分。

  1. sonar.projectName=${JOB_NAME}
  2. sonar.projectVersion=1.0.0
  3. sonar.sources=src/main
  4. sonar.sourceEncoding=UTF-8
  5. sonar.language=java
  6. sonar.tests=src/test
  7. sonar.junit.reportsPath=target/surefire-reports
  8. sonar.surefire.reportsPath=target/surefire-reports
  9. sonar.jacoco.reportPath=target/jacoco.exec
  10. sonar.binaries=target/classes
  11. sonar.java.coveragePlugin=jacoco
  12. sonar.verbose=true
展开查看全部
vddsk6oq

vddsk6oq3#

我也有同样的问题,我会帮你解决的。这里的第一件事是通过你的pom文件走。

  1. <properties>
  2. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  3. <java.version>1.8</java.version>
  4. <jacoco.version>0.8.5</jacoco.version>
  5. <sonar.jacoco.reportPath>target/jacoco-ut.exec</sonar.jacoco.reportPath>
  6. <sonar.jacoco.itReportPaths>target/jacoco-it.exec</sonar.jacoco.itReportPaths>
  7. </properties>

在pom文件中,您使用了jacoco-ut.exec您必须在Jenkins中执行SonarQube扫描仪时使用以下属性

  1. sonar.java.binaries=target/classes
  2. sonar.junit.reportsPath=target/surefire-reports
  3. sonar.surefire.reportsPath=target/surefire-reports
  4. sonar.jacoco.reportPath=target/jacoco-ut.exec

请记住pom中的jacoco.exec和Jenkins中执行SonarQube Scanner的属性名称

展开查看全部
z0qdvdin

z0qdvdin4#

对我来说,问题是:
报告在预打包阶段生成。现在我们更新了Pull Request maven阶段。
mvn -B clean testmvn -B clean package
另外,最新的SONAR更喜欢XML报告。您可以通过以下方式在maven pom中指定路径:<sonar.coverage.jacoco.xmlReportPaths>target/site/jacoco/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
在sonar项目属性文件中:

  1. sonar.projectKey=my-project
  2. sonar.projectName=my-project
  3. sonar.language=java
  4. sonar.java.binaries=target/classes
  5. sonar.sources=src/main
  6. sonar.tests=src/test
  7. sonar.exclusions=**/beans/*,**/config/*,**/constants/*,**/dtos/**,**/entity/*,**/exceptions/*,**/insights/*,**/App.java
  8. sonar.sourceEncoding=UTF-8
  9. sonar.dynamicAnalysis=reuseReports
  10. sonar.junit.reportsPath=target/surefire-reports
  11. sonar.java.coveragePlugin=jacoco
  12. sonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml
展开查看全部

相关问题