SonarQube 7.7 affiche l'avertissement suivant pour une analyse de projet Java:
La propriété 'sonar.jacoco.reportPath' est obsolète (format binaire JaCoCo). 'sonar.coverage.jacoco.xmlReportPaths' doit être utilisé à la place (format XML JaCoCo).
Le projet basé sur Gradle est configuré via sonar-project.properties
comme suit:
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
L'URL du serveur SonarQube est injectée via (sinon vous vous retrouvez avec une erreur "localhost: 9000"):
L'analyse SonarQube est déclenchée via Jenkins et le plugin JaCoCo v.3.0.4 avec la configuration de Job suivante:
J'ai lu qu'un report.xml
est récupéré par xmlReportPaths
. Comment puis-je le générer?
Il semble que votre build soit basé sur Gradle. Il serait plus facile d'utiliser les plugins jacoco et sonarqube dans la version gradle
plugins {
id "jacoco"
id "org.sonarqube" version "2.8"
}
vous n'avez pas besoin de sonar-project.properties
, l'analyse est configurée à partir de votre build. Vous pouvez personnaliser les valeurs par défaut dans la configuration sonarqube
// in build.gradle
sonarqube {
properties {
property "sonar.exclusions", "**/*Generated.Java"
}
}
Pour activer la couverture, vous devez configurer gradle pour générer un rapport XML
jacocoTestReport {
reports {
xml.enabled true
}
}
Et puis exécutez avec gradle build jacocoTestReport sonarqube
. Plus de détails peuvent être trouvés ici et dans SonarScanner pour Gradle doc
Nous pouvons générer des rapports Jacoco au format XML en spécifiant xml.enabled
valeur à true
et fournir destination path
dans la section des rapports.
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")
}
}
Les propriétés SonarQube peuvent également être configurées via le build.gradle
fichier. Comme sonar.jacoco.reportPath
et sonar.jacoco.reportPaths
sont des propriétés obsolètes de la version sonar de 7.7 qui devraient être remplacées par 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
puis mettez à jour les propriétés obsolètes mentionnées ci-dessous vers celles suggérées.sonar.jacoco.reportPath=build/reports/jacoco.xml
Enfin, en exécutant gradle jacocoTestReport sonarqube
, les fichiers de rapport de test jacoco tels que ${project.buildDir}/reports/jacoco.xml
et ${project.buildDir}/jacoco/test.exec
sera généré pour SonarQube.