首页 > 解决方案 > Jacoco-不排除文件

问题描述

我正在使用 Gradle 和 Jacoco。这是我的build.gradle

jacocoTestReport {
    reports {
        xml.enabled true
        csv.enabled false
    }

    afterEvaluate {
        classDirectories = files(classDirectories.files.collect {
            fileTree(dir: it, exclude: [
                    '**/TrackingDataRecord.java'
                    ])
        })
    }
}
test.finalizedBy(project.tasks.jacocoTestReport)

我试图排除该 java 文件,但它仍然显示 SonarQube 的覆盖范围。这是为什么?

标签: gradlesonarqubejacoco

解决方案


Gradle 任务jacocoTestReport通过分析 JaCoCoexec文件和 Javaclass文件生成 XML/HTML/CSV 报告。

SonarQube 不使用 Gradle 任务生成的报告,而是通过分析 JaCoCo文件和 Java文件jacocoTestReport来生成自己的报告- 作为来自https://docs.sonarqube.org/display/PLUG/Code+Coverage+by的证明引用+单元+测试+for+Java+项目execclass

| Property                 | Example            | Description
| sonar.jacoco.reportPaths | target/jacoco.exec | Import JaCoCo code coverage reports. Set the property to the path of the JaCoCo .exec

这可能会在未来发生变化,SonarQube 可能会开始导入 XML 报告 - 请参阅https://jira.sonarsource.com/browse/MMF-1362

关于 SonarQube 中的排除项,请参阅https://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus

忽略代码覆盖率

您可以防止某些文件被单元测试考虑到代码覆盖率。

为此,请转到 Administration > General Settings > Analysis Scope > Code Coverage 并设置 Coverage Exclusions 属性。


推荐阅读