java 使用Gradle的Sonarqube 8的Jacoco代码覆盖率

rsl1atfo  于 2023-03-11  发布在  Java
关注(0)|答案(3)|浏览(271)

代码覆盖率在 Jmeter 板上显示为0%

构建.gradle文件

plugins {
    id "org.sonarqube" version "2.8"
    id "java"
    id "idea"
    id "jacoco"
}

jacoco {
    toolVersion = "0.8.5"
}

jacocoTestReport {
    reports {
        html.enabled true
        xml.enabled true
        xml.destination file("${buildDir}/reports/jacoco.xml")
    }
}

plugins.withType(JacocoPlugin) {
    tasks["test"].finalizedBy 'jacocoTestReport'
}

sonarqube {
    properties {
        property "sonar.java.coveragePlugin", "jacoco"
        property "sonar.host.url", "http://169.254.1.100:9000"
        property "sonar.coverage.jacoco.xmlReportPath", "${buildDir}/reports/jacoco.xml"
    }
}

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    // https://mvnrepository.com/artifact/junit/junit
    testCompile 'junit:junit:4.12'

}

check.dependsOn jacocoTestReport

运行此命令

./gradlew build jacocoTestReport sonarqube

生成的JacoboTestReport具有正确的代码覆盖率
Sonarqube gradle任务生成此日志

> Task :sonarqube
SonarScanner will require Java 11 to run starting in SonarQube 8.x
Property 'sonar.jacoco.reportPath' is no longer supported. Use JaCoCo's xml report and sonar-jacoco plugin.
Property 'sonar.jacoco.reportPaths' is no longer supported. Use JaCoCo's xml report and sonar-jacoco plugin.

谷歌搜索了半天,这个问题的唯一真实的解决方案如下:Property 'sonar.jacoco.reportPath' is deprecated. Please use 'sonar.jacoco.reportPaths' instead
此答案here解释了以下项的双输出:

Property 'sonar.jacoco.reportPaths' is no longer supported. Use JaCoCo's xml report and sonar-jacoco plugin.

然而,这似乎还没有添加到gradle插件中,因为正在使用的插件是2.8,这是截至发布的最新版本。
我是不是漏掉了什么?

qlckcl4x

qlckcl4x1#

必须将XML报表属性启用为true。
xml.已启用真

iecba09b

iecba09b2#

为了进一步说明qasanov的答案,我必须将以下内容添加到build.gradle文件中,以便JaCoCo生成XML报告,然后SonarQube自动获取该报告:

jacocoTestReport {
    reports {
        xml.required = true
    }
}
ipakzgxi

ipakzgxi3#

配置中的问题是属性名称的类型。它是sonar.coverage.jacoco. xmlReportPath,而不是sonar.coverage.jacoco.xmlReportPath
我没有使用gradle声纳插件,而是使用Jenkin Job的-〉Execute SonarQube Scanner配置。
默认情况下,Jacoco只生成html文件,对于SonarQube,我们需要xmlReportPath。
Gradle中的以下代码将启用xml报告,并生成默认名称为jacocoTestReport.xml的文件

jacocoTestReport {
    reports {
        xml.enabled true
    }
}

这将在Jenkins工作区中的位置/ws/build/reports/jacoco/test/jacocoTestReport. xml沿着/ws/build/reports/jacoco/html文件夹中生成以下文件,该文件夹包含覆盖率报告的所有html文件。可以通过访问位于/ws/build/reports/jacoco/html/index. xml的index.html文件来访问此报告
以及要在以下属性中提供的Jacoco xml报告文件的路径

sonar.coverage.jacoco.xmlReportPaths=<rootFolder>/build/reports/jacoco/test/jacocoTestReport.xml

这对我很有效。
在此之前,在SonarQube中,我无法看到覆盖率,在其他项目中,覆盖率显示为0.0%。
因此,总而言之,SonarQube无法查看您的JaCoCo报告文件。

相关问题