【问题标题】:Jacoco does not generate xml fileJacoco 不生成 xml 文件
【发布时间】:2020-09-20 06:30:31
【问题描述】:

我正在使用 gradle 与 kotlin 合作。现在我需要改进代码,我正在使用带有 jacoco 的 sonarqube。但我的覆盖率始终为 0.0%。 我的毕业典礼:

plugins {
    kotlin("jvm") version "1.3.70"
    id("org.sonarqube") version "2.8"
    jacoco
    `maven-publish`
}

repositories {
    mavenLocal()
    jcenter()      
}

sonarqube {
    properties {
        property("sonar.host.url", "http://localhost:9000")
        property("sonar.language", "kotlin")
        property("sonar.sourceEncoding", "UTF-8")
        property("sonar.projectName", "Commons.Pulsar")
        property("sonar.projectKey", "Aries.kt")
        property("sonar.projectVersion", "0.0.1")
        property("sonar.sources", "src/main/kotlin/")
        property("sonar.junit.reportPaths", "src/test/kotlin/")
        property("sonar.login", "admin")
        property("sonar.password", "admin")
        property("sonar.coverage.jacoco.xmlReportPaths", "build/jacoco/test/jacocoTestReport.xml")
    }
}

java {
    withJavadocJar()
    withSourcesJar()
}

publishing {
    publications {
        create<MavenPublication>("mavenJava") {
            from(components["java"])
        }
    }
}

tasks {
    test {
        useJUnitPlatform()
        testLogging {
            events("passed", "skipped", "failed")
        }
    }
    jacocoTestReport {
        reports {
            xml.isEnabled = true
        }
    }

    compileKotlin {
        kotlinOptions.jvmTarget = "11"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "11"
    }
}

但我注意到没有创建 jacocoTestReport.xml。没有创建 xml。 有人可以帮忙吗?

【问题讨论】:

  • 将 jacocoTestReport 块放在任务块之外是否有效?

标签: kotlin sonarqube jacoco gradle-kotlin-dsl


【解决方案1】:

你不需要指定sonar.coverage.jacoco.xmlReportPaths属性,你只需要确保任务jacocoTestReportsonarqube目标之前执行。 sonarqube gradle 插件足够智能,可以根据 jacoco 报告检测配置。例如,我链接Junit Pioneer build configuration,我们也这样做。

一般来说,sonarqube gradle 插件非常强大,如果你使用所有带有 gradle 的构建,你的 sonarqube 块只需要看起来像这样

sonarqube {
    properties {
        property("sonar.host.url", "http://localhost:9000")
        property("sonar.sourceEncoding", "UTF-8")
        property("sonar.login", "admin")
        property("sonar.password", "admin")
    }
}

因为它会从您的 gradle 配置中检测其余部分,如 sonarqube documentation 中所述

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 2018-09-09
    • 2023-03-22
    相关资源
    最近更新 更多