我如何为gradle sonar-runner插件指定cobertura报告路径?



我试图将我的配置从旧的gradle 'sonar'插件转换为gradle 1.5的新gradle 'sonar-runner'插件。

自从我切换到sonar-runner插件,sonar不再重用我的cobertura coverage.xml来计算单元测试覆盖率。我在声纳运行器用户指南中找不到任何例子来说明如何配置它。以前我使用sonar.project.coberturaReportPath来指定我的coverage.xml的位置。

我的sonar实例是v.3.4。我使用gradle cobertura插件来生成我的coverage.xml。

这是我的声纳运行器配置:

sonarRunner {
    sonarProperties{
        property "sonar.host.url", "http://sonar"
        property "sonar.jdbc.url", "jdbc:mysql://sonar:3306/sonar"
        property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
        property "sonar.username", "username"
        property "sonar.password", "password"
        property "sonar.language", "grvy"
        property "sonar.coberturaReportPath", file("$buildDir/reports/cobertura/coverage.xml") //not sure if this is right!
    }
}

这是我的旧声纳配置(工作!):

sonar {
    server {
        url = "http://sonar"
    }
    database {
        url = "jdbc:mysql://sonar:3306/sonar"
        driverClassName = "com.mysql.jdbc.Driver"
        username = "username"
        password = "password"
    }
    project {
        language = "grvy"
        coberturaReportPath = file("$buildDir/reports/cobertura/coverage.xml")
    }
}

你必须确保使用正确的Sonar属性。从http://docs.codehaus.org/display/SONAR/Code +保险+ +单位+测试+ + Java +项目:

sonarRunner {
    ...
    sonarProperty "sonar.java.coveragePlugin", "cobertura"
    sonarProperty "sonar.cobertura.reportPath", file(...)
}

我使用的是:

  • Gradle 1.5
  • 声纳3.4.1
  • Sonar Groovy Plugin 0.6

,我不能使它工作。Sonar显示的是"-",而不是覆盖代码的百分比。

我发现这个JIRA应该在Sonar Groovy Plugin 1.0中修复,如果你有和我一样的问题,并且1.0已经发布,一个更新可能会修复这个问题。

否则,本主题中讨论了一个解决方案:

  • 下载Sonar Groovy Plugin的Spantree分支
  • 解压并构建(mvn installsonar-groovy-master项目的根目录下)
  • sonar-groovy-plugin-1.0-spantree-SNAPSHOT.jar拷贝到Sonar安装目录的extensions/plugins子目录
  • 删除或更改旧sonar-groovy-plugin-0.6.jar的扩展名
  • 重新启动声纳并再次尝试gradle sonarRunner

最新更新