4

我的机器上安装了 SonarQube 4.4。我正在尝试为 grails (2.4.3) 项目生成指标,该项目具有用 Spock 框架编写的测试。但是,声纳不显示单元测试结果或单元测试覆盖率。

我验证了 cobertura coverage.xml 在下面提供的路径中生成

目标/测试报告/cobertura/coverage.xml

我有

sonar.groovy.cobertura.reportPath

我的 pom.xml 中的属性映射到上述路径。

跑步

mvn sonar:sonar (maven version 3.2.3)

该项目成功完成,控制台日志显示正在解析的coverage.xml。

但是,当我在声纳中查看项目时,我只看到静态代码分析指标,而没有看到单元测试或单元测试覆盖率。

我还尝试使用 sonar-runner 运行分析并获得相同的结果。

我尝试了 sonar-groovy-plugin(版本:0.5、0.6 和 1.0.1)和 sonar-cobertura-plugin-1.6.3

这是运行 groovy spock 测试的 pom.xml 构建部分

<plugin>
<groupId>org.grails</groupId>
<artifactId>grails-maven-plugin</artifactId>
<version>2.4.3</version>
<configuration>
    <grailsVersion>${grails.version}</grailsVersion>
    <fork>false</fork>
</configuration>
<extensions>true</extensions>
<executions>
    <execution>
        <id>grails-tests</id>
        <phase>test</phase>
        <goals>
            <goal>exec</goal>
        </goals>
        <configuration>
            <command>test-app</command>
            <args>--unit:spock</args>
        </configuration>
    </execution>
</executions>
</plugin>

任何人都使用过类似的配置并能够使用 sonarqube 和 cobertura 生成代码覆盖率指标?

4

1 回答 1

7

对于其他面临类似问题的人,这里是解决方案。事实证明,我们需要在 pom.xml 中设置“sonar.sources”属性才能显示覆盖范围。这是示例(您需要指定各个目录)

<sonar.sources>src/java,src/groovy,grails-app/services,grails-app/controllers,grails-app/domain,grails-app/jobs</sonar.sources>
于 2014-09-17T23:15:53.343 回答