声纳不会获取测试覆盖率信息

时间:2014-11-11 10:55:06

标签: gradle sonarqube jacoco

SonarQube does not display detailed report per file for fully covered classes via Gradle类似,但不是欺骗。

Sonar Qube版本3.7.4 Gradle版本2.1

运行gradle sonarRunner会生成一个文件test.exec,Sonar 执行选择

14:50:28.167 INFO  - Analysing D:\projname\build\jacoco\test.exec
14:50:28.265 INFO  - No information about coverage per test.
14:50:28.266 INFO  - Sensor JaCoCoSensor done: 106 ms
14:50:28.529 INFO  - Execute decorators...
14:50:29.253 INFO  - Store results in database
14:50:29.391 INFO  - ANALYSIS SUCCESSFUL, you can browse http://localhost:9000/dashboard/index/com.projname

然而,在刷新上述项目时,它显示覆盖率为0%

单位测试覆盖率 0.0% 0.0%线覆盖率 0.0%分支覆盖率

我已经设置了

sonarRunner {
    sonarProperties {
        property 'sonar.jacoco.reportPath', 'D:\\projname\\build\\jacoco\\test.exec'
        property 'sonar.junit.reportsPath','$buildDir/test-results'
        property 'sonar.tests', "$buildDir/classes/test"
     }
}

我试过\和正斜杠 - 它没有什么区别

任何想法?

修改

根据Peter的回答,删除了sonarProperties - 所以build.gradle基本上是

subprojects {
   apply plugin: 'java'
   apply plugin: 'eclipse'
   apply plugin: 'sonar-runner'
   apply plugin: 'jacoco'
   sourceCompatibility  = 1.7
   group = 'com.mycomp'
   version = '1.0-SNAPSHOT'

    repositories {
        mavenCentral()
    }

    dependencies {
        testCompile 'junit:junit:4.10'
    }
}

这不会读取在D:\ projname \ build \ jacoco \ test.exec

生成的默认exec文件

相反,它会给出消息

17:06:36.912 INFO  - Project coverage is set to 0% as no JaCoCo execution data has been dumped: D:\projname\target\jacoco.exec

问题:文件夹名称中的空格是否会导致问题

1 个答案:

答案 0 :(得分:2)

使用gradle test sonarRunner确保测试和覆盖率结果是最新的。避免构建脚本中的绝对路径。 Groovy仅对双引号字符串("$buildDir/test-results")执行字符串插值。如果您已应用jacocojava个插件,则应正确预配置代码段中显示的所有Sonar属性。