SonarQube 7.7显示以下Java项目分析警告:
不推荐使用属性“ sonar.jacoco.reportPath”(JaCoCo二进制格式)。应该使用“ sonar.coverage.jacoco.xmlReportPaths”(JaCoCo XML格式)。
基于Gradle的项目通过sonar-project.properties
进行如下配置:
sonar.projectKey=MyExampleLib
sonar.projectName=MyExample Library
sonar.sources=src/main/java
sonar.jacoco.reportPath=build/jacoco/test.exec
sonar.junit.reportsPath=build/test-results/test
sonar.java.test.binaries=build/classes/test
sonar.java.binaries=build/classes/java/main
sonar.binaries=build/classes
sonar.projectVersion=$libVersion
通过以下方式注入SonarQube服务器URL(否则,您将收到“ localhost:9000”错误):
通过Jenkins和JaCoCo plugin v.3.0.4使用以下Job配置触发SonarQube分析:
我读到report.xml
拾取了xmlReportPaths
。如何生成它?
答案 0 :(得分:8)
我们可以通过将xml.enabled
的值指定为true
并在报告部分提供destination path
来生成XML格式的Jacoco报告。
plugins {
id "org.sonarqube" version "2.8"
}
jacocoTestReport {
group = "Reporting"
reports {
xml.enabled true
csv.enabled false
//to create coverage report in html
html.destination file("${buildDir}/reports/coverage")
//for XML
xml.destination file("${buildDir}/reports/jacoco.xml")
}
}
也可以通过build.gradle
文件配置SonarQube属性。由于sonar.jacoco.reportPath
和sonar.jacoco.reportPaths
是声纳版本7.7中已弃用的属性,应将其替换为sonar.coverage.jacoco.xmlReportPaths
。
build.gradle
sonarqube {
properties {
property 'sonar.projectName', 'MyExample Library'
property 'sonar.projectKey', 'MyExampleLib'
property 'sonar.core.codeCoveragePlugin', 'jacoco'
property 'sonar.coverage.jacoco.xmlReportPaths', '${project.buildDir}/reports/jacoco.xml'
}
}
sonar-project.properties
进行此操作,则将下面提到的不推荐使用的属性更新为建议的属性。sonar.jacoco.reportPath=build/reports/jacoco.xml
最后,通过执行gradle jacocoTestReport sonarqube
命令,将为SonarQube生成诸如${project.buildDir}/reports/jacoco.xml
和${project.buildDir}/jacoco/test.exec
之类的jacoco测试报告文件。
答案 1 :(得分:1)
似乎您的构建基于Gradle。在gradle构建中使用jacoco和sonarqube插件会更容易
plugins {
id "jacoco"
id "org.sonarqube" version "2.8"
}
您不需要sonar-project.properties
,分析是从您的构建中配置的。您可以在声纳配置中自定义默认值
// in build.gradle
sonarqube {
properties {
property "sonar.exclusions", "**/*Generated.java"
}
}
要启用覆盖,您需要配置gradle以生成XML报告
jacocoTestReport {
reports {
xml.enabled true
}
}
然后使用gradle build jacocoTestReport sonarqube
运行。可以在here和SonarScanner for Gradle doc