我的机器上安装了SonarQube 4.4。我正在尝试为使用Spock框架编写的测试的grails(2.4.3)项目生成度量标准。但是,声纳不显示单元测试结果或单元测试覆盖率。
我确认cobertura coverage.xml是在下面提供的路径中生成的
目标/测试报告/的Cobertura / coverage.xml
我有
我的pom.xml中的sonar.groovy.cobertura.reportPath
属性映射到上面的路径。
运行
mvn sonar:sonar (maven version 3.2.3)
此项目上的成功完成,控制台日志显示正在解析的coverage.xml。
然而,当我在声纳中查看项目时,我只看到静态代码分析指标,但没有单元测试或单元测试覆盖率。
我还尝试使用声纳 - 跑步者进行分析并获得相同的结果。
我尝试过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生成代码覆盖率指标?
答案 0 :(得分:7)
对于遇到类似问题的其他人,这是解决方案。事实证明我们需要设置&#34; sonar.sources&#34; pom.xml中的属性,用于显示覆盖范围。以下是示例(您需要指定各个目录)
<sonar.sources>src/java,src/groovy,grails-app/services,grails-app/controllers,grails-app/domain,grails-app/jobs</sonar.sources>