sonarqube gradle插件,不包括jacoco集成测试

时间:2016-10-26 07:22:19

标签: gradle sonarqube gradlew

我正在尝试将sonarqube gradle插件与jacoco插件集成:

classpath'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.1'

申请插件:'org.sonarqube' 申请插件:'jacoco'

我的build / jacoco文件夹包含: integrationTest.exec test.exec

但是,sonarqube插件只识别'test.exec'文件:

18:20:45.130 INFO - JaCoCoItSensor:未找到JaCoCo IT报告:C:\ Users \ abc3 \ Downloads \ sme-letter \ target \ jacoco-it.exec : 18:05:55.609 INFO - 分析C:\ Users \ abc3 \ Downloads \ sme-letter \ build \ jacoco \ test.exec

如何让sonarqube插件识别'integrationTest.exec'

由于

标记

2 个答案:

答案 0 :(得分:1)

我不确定,这是否适用于Gradle插件,但您可以试试。

Sonar有一个属性来指定集成测试JaCoCo报告的名称。此属性称为sonar.jacoco.itReportPathsonar.jacoco.reportPath用于单元测试报告)。

据我所知,gradle sonar插件允许你添加自定义属性。因此,您可以通过以下属性更改IT报告名称:

sonarqube {
    properties {
        property "sonar.jacoco.itReportPath", "build/jacoco/ integrationTest.exec"
    }
}

答案 1 :(得分:1)

它适用于我,但只有在将所有jacoco报告合并到一个文件中并且(重要)删除所有其他报告之后

        property "sonar.java.coveragePlugin", "jacoco"
        property "sonar.junit.reportsPath", "$projectDir/build/test-results"
        property 'sonar.jacoco.reportPaths', "${rootProject.buildDir}/jacoco/mergeJacoco.exec"

你需要合并jacoco任务

Task mergeJacoco = tasks.create('mergeJacoco', JacocoMerge, {
  doFirst {
      delete "$buildDir/jacoco/mergeJacoco.exec"
  }
  destinationFile(new File(buildDir, 'jacoco/mergeJacoco.exec'))
  executionData fileTree('./').include('**/*.exec-partial')
  doLast {
      delete fileTree('./').include('**/test.exec-partial')
  }
})

mergeJacoco.outputs.upToDateWhen { false }
project.tasks["sonarqube"].dependsOn mergeJacoco
mergeJacoco.mustRunAfter ":myProject:test"

设置jacoco使用那些“部分”文件

subprojects {
    ....
    jacoco {
        destinationFile file("$buildDir/jacoco/test.exec-partial")
        append = false
        includes = ['com.mypackage.*']
    }
}

你会将单位和IT报告混合在一起,但这是我能得到的最好的