我有一个使用 Gradle 的多模块 Groovy 项目。我应用了 jacoco、sonarqube 插件。
我以前可以
但是
Code Coverage
没有被报告给 SonarQube。这是我的 build.gradle
plugins {
id "org.sonarqube" version "2.0.1"
}
allprojects {
group = 'my'
version = '1.0-SNAPSHOT'
}
subprojects {
apply plugin: 'groovy'
apply plugin: "jacoco"
dependencies {
compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.4.1'
testCompile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.4'
testCompile group: 'org.assertj', name: 'assertj-core', version: '2.4.1'
}
}
我在构建过程中观察到以下日志语句。
No binary directories defined for project core.
Project coverage is set to 0% since there is no directories with classes.
然后我尝试将以下内容添加到子项目或所有项目中,但仍然没有向 SonarQube 报告覆盖范围。
sonarqube {
properties {
property "sonar.groovy.jacoco.reportPath", "${project.buildDir}/jacoco/test.exec"
property "sonar.jacoco.reportPath", "${project.buildDir}/jacoco/test.exec"
property "sonar.binaries", "${project.buildDir}/classes"
property "sonar.groovy.binaries", "${project.buildDir}/classes"
}
}
如何启用向 SonarQube 报告 Jacoco Groovy 代码覆盖率?
最佳答案
当我与同样的问题作斗争时,您可能已经看到了我的评论。
我找到了 groovy 插件的站点,其中报告了一个问题,如下所示:
sonar.groovy.binaries is resolved only once for the root project. In a multi-module project where the property is not defined on the root module but only on leaf modules this cause missing coverage information.
https://github.com/SonarQubeCommunity/sonar-groovy/issues/52
因此,即使它是为您的模块设置的:
":myspecialsubmodule.sonar.groovy.binaries"-> "/home/user/Projects/root-project/myspecialsubmodule/build/classes/main"
它不会起作用,直到它被设置为根。
在根目录上专门设置配置后(现在,直到问题得到解决)使它对我有用。
property "sonar.groovy.binaries", "${project.buildDir.name}${File.separator}classes"
我将跟踪 github 问题以了解何时可以删除此解决方法。
关于gradle - 如何使用新的 Gradle SonarQube 插件向 Sonar 报告 Jacoco Groovy 代码覆盖率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38775704/