Sonarqube不会同时关注Kotlin和Java覆盖率gradle项目

Sonarqube不会同时关注Kotlin和Java覆盖率gradle项目,java,gradle,kotlin,sonarqube,jacoco,Java,Gradle,Kotlin,Sonarqube,Jacoco,这是一个混合源代码Java和Kotlin的android项目。 尽管许多人在覆盖范围、kotlin和声纳方面存在问题。我没有为这个案子找到一个 Sonarqube没有同时获得Jacoco生成的Kotlin和Java覆盖率: 梯度4.8 Java 1.8 科特林1.3.50 它得到了Java类,但是所有的Kotlin类都被忽略了。 我已经在gradle文件中应用了所有必需的插件: allprojects { apply plugin: 'jacoco' apply plugin

这是一个混合源代码Java和Kotlin的android项目。 尽管许多人在覆盖范围、kotlin和声纳方面存在问题。我没有为这个案子找到一个

Sonarqube没有同时获得Jacoco生成的Kotlin和Java覆盖率:

  • 梯度4.8
  • Java 1.8
  • 科特林1.3.50
它得到了Java类,但是所有的Kotlin类都被忽略了。 我已经在gradle文件中应用了所有必需的插件:

allprojects {
    apply plugin: 'jacoco'
    apply plugin: 'java'
    apply plugin: 'org.sonarqube'
    apply plugin: 'kotlin'

   ...
}

首先确保您的
jacotestreport
创建了一个xml报告:

jacocoTestReport {
    reports {
        xml {
            enabled true
        }
        xml.destination "build/reports/jacocoTestReport.xml"
    }
} 
然后,对于所有项目,您需要使用sonaqube中的
xmlReportPaths
属性将这些xml报告强制输入sonar

您可以在这里看到多个路径,以防您的项目中有多个子项目,其中也有混合源Java/Kotlin

sonarqube {
        properties {
            property "sonar.java.coveragePlugin", "jacoco"
            property("sonar.coverage.jacoco.xmlReportPaths", "../../build/reports/jacocoTestReport.xml,../build/reports/jacocoTestReport.xml")
        }
}

声纳将考虑所有XML报告并生成整个覆盖范围。