声纳服务器显示单元测试覆盖空,尽管我使用开放式封面

时间:2016-07-07 08:32:02

标签: sonarqube opencover

我是声纳的新手并尝试使用Sonar进行代码分析,包括代码覆盖,单元测试报告等。我可以使用OpenCover生成报告,我正在使用C#。我的项目是jenkins工作的一部分,该工作为Opencover构建解决方案,运行脚本,然后使用' Execute sonarQube scanner'连接到声纳。我能够将结果视为代码行气味,声纳中的问题。但单元测试部分在所有部分显示0(故障,错误,测试)。下面是我在sonar-project.properties中的声纳设置。

sonar.projectKey=TestCI
sonar.projectVersion=1.0
sonar.projectName=TestCI
sonar.sources=.
sonar.language=cs
sonar.cs.vstest.reportsPaths="%WORKSPACE%\AutoBuildTest\Results.trx"
sonar.dotnet.visualstudio.solution.file="%Workspace%\TestCI.sln"
sonar.cs.msbuild.testProjectPattern=*Tests;*UnitTests
sonar.cs.opencover.reportPaths="%WORKSPACE%\GeneratedReports\TestCI.xml"
sonar.cs.vscoveragexml.reportsPaths="%WORKSPACE%\GeneratedReports\TestCI.xml"

请帮忙。

1 个答案:

答案 0 :(得分:1)

所以我试图绕过这个,谷歌搜索并没有找到具体的解决方案。

我是CI的新手,所以我不知道很多事情。我想为我的.net应用程序执行代码覆盖,该应用程序作为jenkins作业运行(已经配置了构建和测试步骤)。我也能够整合sonarqube。

下一步是覆盖代码并在声纳中显示输出(所有这些都是jenkins工作的一部分)。我试过opencover,可以看到html输出,但无法将其集成到声纳中。尝试dotCover也没用多少。我不知道伽利略如此努力,它也没有用。然后我开始发帖说,伽利略不再受声纳支持(版本高于4.3,我的是5.3)。

所以我不得不再次从零开始,留下opencover和dotcover。我开始研究visual studio的代码覆盖工具,这个工具在我的版本(VS 2015专业版)中显然不受支持。所以我把它改成了VS 2015 Enterprise。现在,我可以访问“%VS_INSTALL_DIR%\ Microsoft Visual Studio 14.0 \ Team Tools \ Dynamic Code Coverage Tools”下的代码覆盖率工具。下一步是将所有这些整合到詹金斯中。我不得不使用“收集”代码覆盖工具(将我的测试项目dll作为输入),然后在代码覆盖率工具(基本上将“collect”中生成的二进制文件转换为xml文件)上运行“analyze”。

现在当我从我的机器运行这个,从我的开发项目的dll,它一切正常,我可以运行sonar-runner(在更改为我的项目的路径后在命令行中)我可以在sonarqube服务器中看到神奇的输出(在localhost上运行的那个:9000)。但是当我在jenkins中重复相同时(使用批处理命令)没有发生任何事情。出了什么问题

  1. 确保sonar-project.properties文件正确无误。
  2. 当我在声纳中找不到任何内容时,我检查了由代码覆盖率工具生成的xml文件(使用分析步骤)。 dll的参考来自我的本地项目,而不是我在jenkins建造的那个。我打开了jenkins从github下载的项目(作为构建步骤的一部分)。参考一切都很好。测试项目指向从github下载的项目。那个错误在哪里?
  3. 我忘了重建解决方案,以便清除旧引用并使用新位置构建新引用。

    它看起来很长的答案,但我花了更长的时间才弄明白(尽管我在研发期间阅读了它但却无法理解我为什么需要它)

    感谢Shaun的建议。我仍然无法弄清楚opencover是如何在nemo.sonarsource.org上运行的(版本是5.6),但我将在其他日子保存它。