'How to configure sonar.coverage.jacoco.xmlReportPaths for JaCoCo/SonarQube?
SonarQube 7.7 shows the following warning for a Java project analysis:
Property 'sonar.jacoco.reportPath' is deprecated (JaCoCo binary format). 'sonar.coverage.jacoco.xmlReportPaths' should be used instead (JaCoCo XML format).
The Gradle based project is configured via sonar-project.properties
as follows:
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
The SonarQube server URL is injected via (otherwise you end up with a "localhost:9000" error):
The SonarQube analysis is triggered via Jenkins and the JaCoCo plugin v.3.0.4 with the following Job configuration:
I read that a report.xml
is picked up by xmlReportPaths
. How can I generate it?
Related
Solution 1:[1]
It seems that your build is based on Gradle. It would be easier to use jacoco and sonarqube plugins in the gradle build
plugins {
id "jacoco"
id "org.sonarqube" version "2.8"
}
you don't need sonar-project.properties
, analysis is configured from your build. You can customize default values in sonarqube configuration
// in build.gradle
sonarqube {
properties {
property "sonar.exclusions", "**/*Generated.java"
}
}
To enable coverage you need to configure gradle to generate XML report
jacocoTestReport {
reports {
xml.enabled true
}
}
And then run with gradle build jacocoTestReport sonarqube
. More details can be found here and in SonarScanner for Gradle doc
Solution 2:[2]
We can generate Jacoco reports in XML format by specifying xml.enabled
value to true
and providing destination path
in the reports section.
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")
}
}
The SonarQube properties can be also configured through the build.gradle
file. As sonar.jacoco.reportPath
and sonar.jacoco.reportPaths
are deprecated properties from the sonar version of 7.7 which should be replaced with sonar.coverage.jacoco.xmlReportPaths
.
- Configuring the Sonarqube properties through the
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"
}
}
- If you wish to do that through
sonar-project.properties
then update the deprecated properties mentioned below to the suggested one.
sonar.jacoco.reportPath=build/reports/jacoco.xml
Finally, by executing gradle jacocoTestReport sonarqube
command, the jacoco test report files such as ${project.buildDir}/reports/jacoco.xml
and ${project.buildDir}/jacoco/test.exec
will be generated for SonarQube.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | JJD |
Solution 2 | saw303 |