关于Maven:Sonarqube在运行后未显示代码覆盖率

Sonarqube is not showing code coverage after running

我正在用行家运行声纳尔。

我已经使用以下方式安装了它。
使用brew,我安装了mysqlsonar

运行时,我遇到7个严重的错误,但88个测试的代码覆盖率为零
Sonarqube analysis

当我使用IntelliJ的工具运行它时,得到以下结果。 (不为零!)
IntelliJ analysis

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

使用sonar-scanner sonar-scanner运行时的相同代码

这是我的Maven配置
maven configuration

我的~/.m2/settings.xml
settings-pic1
settings-pic2

编辑1:
我已经在日志中找到了。 Db not supported

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

1
2
3
<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的destfile和datafile配置为${basedir}/target/coverage-reports/jacoco-unit.exec

但默认情况下,声纳的读数为${basedir}/target/jacoco.exec。 我在http:// localhost:9000 / settings?category = java更改了默认设置

参考:声纳代码覆盖率


我遇到了同样的问题,我会帮助您解决。 这里的第一件事是浏览您的pom文件。

1
2
3
4
5
6
7
<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扫描仪

1
2
3
4
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的属性名称


我已通过以下步骤解决了此问题:

1.首先,我将配置添加到我们的pom.xml中。

1
2
3
4
5
<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.在sonarqube属性文件中添加了以下部分。

1
2
3
4
5
6
7
8
9
10
11
12
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