SonarQube没有拿起Cobertura代码覆盖率

时间:2014-02-16 14:18:57

标签: sonarqube sonar-runner

我正在分析一个经过单元测试并报告Cobertura coverage.xml的Java项目。我正在使用SonarQube 4.1.1和最新的Sonar Runner。我已成功将Cobertura覆盖结果导入Sonar 3.2和Ant分析器,但是在这个新版本中我遇到了问题。在新的声纳分析执行中(通过Jenkins),我在日志中看不到它会启动任何Cobertura引擎或任何东西。我在Runner Jenkins项目中的设置:

sonar.dynamicAnalysis=reuseReports
sonar.java.coveragePlugin=cobertura
sonar.cobertura.reportPath=[mypath]/coverage.xml
sonar.junit.reportsPath=[mypath]/

在分析输出中没有提到Cobertura(除了我自己的属性值),SonarQube页面在覆盖率报告中显示“ - ”。单位测试结果显示正常。

我还添加了所有源,bin和测试目录。有任何想法吗?感谢。

更新 我想知道在SonarQube页面上没有报道Cobertura报道的原因,是因为在Jenkins我的SonarQube项目克隆(克隆插件)来自之前的Project构建的工作区?如果coverage.xml文件包含静态路径,那么它可能会以某种方式出错。

2 个答案:

答案 0 :(得分:4)

好的解决方案非常明显。 SonarQube 4.1.1没有预装Cobertura,所以我安装了它,现在它可以工作:)也许它是预装在3.2版本中,我记不清了。

答案 1 :(得分:0)

对于SonarQube中的任何“重用报告”功能(可能是代码覆盖,测试执行或生成中间报告的任何其他第三方工具),必须基于相同的源文件生成报告(以术语表示)文件系统位置)比将用于SonarQube分析的那些。否则,SonarQube插件将无法将报告中的路径与分析源的路径进行匹配。

所以你猜对了:克隆工作区并在这个克隆上运行SonarQube分析是无法计算覆盖率的原因。