当前位置: 首页 > 知识库问答 >
问题:

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

丌官承
2023-03-14

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

build.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

JacocoTestReport使用正确的代码覆盖率生成

声纳曲渐变任务生成此日志

> 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.

在谷歌上搜索了半天,这个问题的唯一真正解决方案是:财产的sonar.jacoco。不推荐使用“报告路径”。请使用“声纳”jacoco。改为“报告路径”

此处的答案解释了双重输出:

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

但是,这似乎尚未添加到gradle插件中,因为正在使用的插件是2.8,这是发布时的最新版本。

我错过了什么吗?

共有3个答案

孔波
2023-03-14

为了扩展qasanov的回答,我必须将它添加到我的< code>build.gradle文件中,以便JaCoCo生成XML报告,然后SonarQube自动获取该报告:

jacocoTestReport {
    reports {
        xml.required = true
    }
}
宋唯
2023-03-14

配置中的问题是属性名称的类型。它是声纳报道路径,而不是声纳报道路径

我没有使用渐变声纳插件,而是使用詹金·乔布斯的 -

默认情况下,Jacoco只生成html文件,对于SonarQube,我们需要xmlReportPath。

gradle 中的以下代码将启用 xml 报告,并将生成默认名称为 jacotestReport.xml jacotestReport { 报告 { xml.enabled true } }

这将在Jenkins工作区中的位置/ws/build/reports/jacoco/test/jacocoTestReport生成以下文件。xml以及/ws/build/reports/jacoco/html文件夹,其中包含覆盖率报告的所有html文件。可通过访问索引访问此报告。html文件位于/ws/build/reports/jacoco/html/index.xml

Jacoco xml报告文件的路径将在下面的属性中提供

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

这确实对我有用。

在此之前,在SonarQube中,我无法看到覆盖范围,在其他项目中,覆盖范围显示为0.0%。

因此,总之,SonarQube无法查看您的JaCoCo报告文件。

呼延庆
2023-03-14

您必须启用 XML 报表属性作为 true。

启用真值

 类似资料:
  • 我正在尝试使用JaCoCo-javaagent传递VM参数来获得代码覆盖率 -Java agent:/test/jaco co/jaco agent . jar = dest file =/test/jaco co/jaco co . exec,includes=com。*,append=true 我能在jacoco中获得一些价值。执行文件,但无法获取覆盖率报告。我怎样才能把jacoco转化成。执

  • 我的代码运行在具有单独JVM的单独虚拟机上。我想在此虚拟机上以tcpserver模式设置JaCoCo代理以收集覆盖率数据。然后,我将在我的maven项目中以tcpclient模式设置JaCoCo代理,以连接到上面提到的VM并获取覆盖率数据。 问题是代理不收集任何覆盖数据。在中创建了覆盖率数据文件,但该文件为空。 下面是代理选项:-Java agent:/usr/xx/plugins/org . j

  • 我在声纳中的代码覆盖率显示为0%,这不是真的,因为我有单元测试。 格拉德尔 当我打开inside然后我可以看到成功的单元测试。 我在Jenkins环境中运行作为

  • 我正在使用Android Studio 1.2。2和Gradle插件1.2。3. 我正在尝试生成代码覆盖率报告,而不运行,只运行。我希望避免需要连接设备或模拟器,这样我就可以加快Jenkins服务器上的构建速度。 到目前为止,我所能做的最好的事情就是在报告中包含单元测试执行数据,如下所述:Android Studio中的Jacoco代码覆盖。这对于显示所有测试的结果很有用,但是目前我只想运行单元测

  • 我正在尝试生成Jacoco代码覆盖率报告。我已经将AndroidTestCase用于我的测试类。 在过去几天里,我已经关注了堆栈溢出的各种公认答案。结果是否定的。 我的分级文件:

  • 我正在尝试集成Jacoco,以便使用Maven获得Cucumber测试的代码覆盖率。以下是我的项目结构: > -src主java页面 -src主java助手 -src-测试-java-资源-功能 -src测试java步骤 以下是我的POM中的Jacoco配置。xml 我能够生成代码覆盖率报告。但是,在报告中,它涵盖了-src主包中的所有类。根据不同的google搜索和SO帖子,我试图修改POM以排