Search code examples
gradlejacocosonar-runner

Exclude packages from Jacoco report using Sonarrunner and Gradle


Is there a way to exclude packages from SonarQube(instrumented by gradle + sonar-runner) coverage reports(generated by jacoco) without excluding them completely from the project ?

Below is what i tried so far:

Version information

  • SonarQube 4.5.1
  • Gradle 2.2.

Jacoco configuration

// JaCoCo test coverage configuration
tasks.withType(Test) { task ->
    jacoco {
        append = false

        // excluded classes from coverage defined in above configuration
        excludes = excludedClasses()
    }

    jacocoTestReport {
        doFirst {
            classDirectories = fileTree(dir: "${buildDir}/classes/main/").exclude(excludedClasses())
        }
    }

}

Sonarrunner configuration

Property setting to exclude package from Sonar analysis. Adding this to my configuration lead to the situation that the packages do not show-up at all in Sonar.

property 'sonar.exclusions', excludedClasses().join(',')

Property setting to exclude packages from jacoco. Setting this leads to the situation that packages are excluded from coverage analysis however show up having 0% which accumulates to bad total scores.

property 'sonar.jacoco.exclusions', excludedClasses().join(',')

Solution

  • I have managed to exclude particular packages from coverage reports by using sonar.coverage.exclusions property in sonar-project.properties. Property is described in official documentation