web-dev-qa-db-fra.com

Comment configurer sonar.coverage.jacoco.xmlReportPaths pour JaCoCo / SonarQube?

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"):

Prepare SonarQube Scanner environment

L'analyse SonarQube est déclenchée via Jenkins et le plugin JaCoCo v.3.0.4 avec la configuration de Job suivante:

JaCoCo configuration

J'ai lu qu'un report.xml est récupéré par xmlReportPaths. Comment puis-je le générer?

En relation

3
JJD

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

1
Tibor Blenessy

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.

  • Configuration des propriétés Sonarqube via le 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'
    }
}

  • Si vous souhaitez le faire via 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.

0
Prasanth Rajendran