Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sonarqube Sonarqu可能没有发现Cobertura代码的覆盖范围_Sonarqube_Sonar Runner - Fatal编程技术网

Sonarqube Sonarqu可能没有发现Cobertura代码的覆盖范围

Sonarqube Sonarqu可能没有发现Cobertura代码的覆盖范围,sonarqube,sonar-runner,Sonarqube,Sonar Runner,我正在分析一个经过单元测试的Java项目,并报告了Cobertura coverage.xml。我正在使用SonarQube 4.1.1和最新的Sonar Runner。我已经成功地将Cobertura覆盖结果导入到Sonar 3.2和Ant analyzer中,但是在这个新版本中,我遇到了问题。在新的声纳分析执行(通过Jenkins)中,我在日志中没有看到它会启动任何Cobertura引擎或任何东西。Runner Jenkins项目中的我的设置: sonar.dynamicAnalysis=r

我正在分析一个经过单元测试的Java项目,并报告了Cobertura coverage.xml。我正在使用SonarQube 4.1.1和最新的Sonar Runner。我已经成功地将Cobertura覆盖结果导入到Sonar 3.2和Ant analyzer中,但是在这个新版本中,我遇到了问题。在新的声纳分析执行(通过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项目克隆(克隆插件)中,工作区来自以前的项目构建?如果coverage.xml文件包含静态路径,那么它可能会以某种方式出错。

对于SonarQube中的任何“重用报告”功能(可能是代码覆盖率、测试执行或生成中间报告的任何其他第三方工具),报告必须基于相同的源文件生成(根据文件系统位置)而不是用于声纳分析的。否则,SonarQube插件将无法将报告中的路径与分析源的路径匹配


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

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

嗯,我想它仍然不能工作。现在,我在构建中构建、测试并运行代码覆盖率。然后我运行了SonarQube分析,但它仍然没有得到报道。Sonar Runner输出中甚至没有出现关键词“Cobertura”,这让我觉得还有其他问题。你是如何安装它的……以及你采取了哪些步骤来覆盖Sonar的。解决方案听起来可能很明显,但症状显然并不明显。。。日志中应该有某种警告或错误消息@amit_kumar作为SQ的管理员,去更新中心寻找Cobertura插件。(这适用于服务器,而不是客户端)