我正在分析一个已经过单元测试和Cobertura coverage.xml报告的Java项目。我正在使用SonarQube 4.1.1和最新的声纳运行。我已经成功地将Cobertura覆盖结果导入到Sonar 3.2和Ant分析器,但是使用这个新版本我遇到了问题。在新的Sonar分析执行过程中(通过Jenkins),我没有看到日志中提到它会启动任何Cobertura引擎或其他任何东西。我在Runner Jenkins项目中的设置:
sonar.dynamicAnalysis=reuseReports
sonar.java.coveragePlugin=cobertura
sonar.cobertura.reportPath=[mypath]/coverage.xml
sonar.junit.reportsPath=[mypath]/
在分析输出中没有提到Cobertura (除了我自己的属性值)和SonarQube页面在覆盖率报告中显示"-“。单元测试结果显示良好。
我还添加了所有源目录、bin目录和测试目录。有什么想法吗?谢谢。
更新我想知道为什么Cobertura覆盖没有在SonarQube页面上报告,是因为在Jenkins中,我的SonarQube项目克隆(克隆插件)是以前项目构建的工作区吗?如果coverage.xml文件包含静态路径,那么它可能出了问题。
发布于 2014-02-21 00:24:23
好的,解决方案很明显。SonarCube 4.1.1没有预装Cobertura,所以我安装了它,现在它可以工作了:)也许它是在3.2个版本中预装的,我不记得了。
发布于 2014-02-20 02:41:20
对于SonarQube中的任何“重用报告”特性(可能是用于代码覆盖、测试执行或生成中间报表的任何其他第三方工具),报告必须基于与用于SonarQube分析的源文件相同的源文件(就文件系统位置而言)。否则,SonarQube插件将无法将报表中的路径与分析源的路径相匹配。
因此,您猜对了:克隆工作区并在此克隆上运行SonarQube分析是无法计算覆盖率的原因。
https://stackoverflow.com/questions/21812371
复制相似问题