我正在尝试将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'
由于
标记
答案 0 :(得分:1)
我不确定,这是否适用于Gradle插件,但您可以试试。
Sonar有一个属性来指定集成测试JaCoCo报告的名称。此属性称为sonar.jacoco.itReportPath
(sonar.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报告混合在一起,但这是我能得到的最好的