我和maven一起经营着sonarqube。
我使用以下way安装它。使用brew
,我安装了mysql
和sonar
。
当我运行时,我得到7个严重的错误,但88个测试的代码覆盖率是零
当我使用IntelliJ的工具运行它时,我得到以下结果。 (不是零!)
这是我直接检查Jacoco结果的时候。在$base_direc/target/jacoco/index.html
编辑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的destfile和数据文件为${basedir}/target/coverage-reports/jacoco-unit.exec
但默认情况下声纳读取${basedir}/target/jacoco.exec
。我改变了http://localhost:9000/settings?category=java的默认值
我通过使用以下步骤解决了这个问题:
<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>
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