Sonarqube在运行后没有显示代码覆盖率

时间:2017-05-24 11:47:41

标签: maven intellij-idea sonarqube jacoco sonarqube-scan

我和maven一起经营着sonarqube。

我使用以下way安装了它。 使用brew,我安装了mysqlsonar

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

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

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

使用sonar-scanner sonar-scanner

运行时的相同代码

这是我的maven配置
maven configuration

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

编辑1: 我在日志中发现了这个。 Db not supported

EDIT2: 我已编辑~/.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结果但不在声纳中。

如果发现错误,声纳是否可能拒绝进行代码覆盖?!

3 个答案:

答案 0 :(得分:8)

我找到了解决方案 -

我包含的maven插件将Jacoco的destfile和数据文件配置为${basedir}/target/coverage-reports/jacoco-unit.exec

但默认声纳读取${basedir}/target/jacoco.exec。我更改了http://localhost:9000/settings?category=java

的默认值

参考:Sonar Code Coverage

答案 1 :(得分:0)

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

1。首先,我将配置添加到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。在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

答案 2 :(得分:0)

我遇到了同样的问题,我会帮助您解决。这里的第一件事是浏览您的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 ,您必须在自己的计算机上使用以下属性 在詹金斯执行SonarQube扫描仪

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的属性名称