【发布时间】:2016-12-11 01:41:38
【问题描述】:
我有一个使用 Gradle 的多模块 Groovy 项目。我应用了 jacoco、sonarqube 插件。
我可以
- 找到 build/jacoco/test.exec。 Jenkins 能够正确渲染它。
- 浏览 jacocoHtml 的所有代码覆盖率详细信息
- 在 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 代码覆盖率?
【问题讨论】:
-
我认为您的配置似乎还可以。尽管我们将它用于二进制文件:“$project.buildDir.name/classes”。也许您可以从日志中添加更长的 sn-p,它专门列出您的模块和查找覆盖文件的路径。更新:您想将 sonarqube 插件应用到根目录,否则它可能会认为它们实际上是单独的项目。
-
现在我有一个类似的问题,其中一个项目有效,但不适用于另一个。您是否尝试过直接在根上应用配置?
标签: gradle groovy sonarqube jacoco sonarqube-scan