当前位置: 首页 > 知识库问答 >
问题:

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

韦辰钊
2023-03-14

我是声纳新手,试图使用声纳进行代码分析,包括代码覆盖,单元测试报告等。我能够使用OpenCover生成报告,我使用C#。我的项目是詹金斯工作的一部分,该工作构建解决方案,运行OpenCover脚本,然后使用“执行声纳Qube扫描仪”连接到声纳。我能够将结果视为一行代码气味,声纳中的问题。但是单元测试部分显示所有部分为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个答案

殷耀
2023-03-14

所以我试图弄清楚这一点,四处搜索,却没有找到具体的解决方案。

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

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

所以我不得不再次从零开始,把openover和dotover抛在后面。我开始研究视觉工作室的代码覆盖工具,这个工具显然不支持我的版本(VS 2015专业版)。所以我把它改成了VS 2015企业版。现在我可以访问“%VS_INSTALL_DIR%\微软视觉工作室14.0\团队工具\动态代码覆盖工具”下的代码覆盖工具。下一步是在詹金斯中集成所有这些。我必须使用代码覆盖工具“收集”(给我的测试项目dll作为输入),然后在代码覆盖工具上运行“分析”(它基本上将“收集”中生成的二进制文件转换为xml文件)。

现在,当我从我的机器上,从我的开发项目的dll上运行它时,一切都很好,我可以运行sonar runner(在更改到项目路径后在命令行中),我可以在sonarqube服务器(在localhost:9000上运行的服务器)中看到神奇的输出。但当我在jenkins(使用批处理命令)中重复同样的操作时,什么也没发生。出了什么问题

  1. 确保sonar-project.properties文件是正确的。
  2. 当我在声纳中找不到任何东西时,我检查了代码覆盖工具(使用分析步骤)生成的xml文件。dll的引用来自我的本地项目,而不是我在jenkins中构建的项目。我打开了jenkins从github下载的项目(作为构建步骤的一部分)。引用都很好。测试项目指向从github下载的项目。那么错误在哪里?

我忘记重建解决方案,以便它将清除旧的引用,并使用新的位置构建新的引用。

它看起来很长的答案,但它花了我更长的时间来弄清楚(虽然我在我的R

谢谢肖恩的建议。我仍然不知道opencover是如何在nemo上运行的。声纳来源。org(版本是5.6),但我会把它留到以后的某一天。

 类似资料:
  • xccov工具仅为覆盖的代码行生成单元测试覆盖率报告。如果你举个例子。swift文件有20行,10行由单元测试覆盖,覆盖率为50%。 Karma(用于Angular 2开发)不仅为所涵盖的代码行创建报告,还为语句、分支和函数创建报告。 是否可以配置xccov,或者在iOS开发中是否有类似的工具来实现这一点?谢谢

  • 尝试查看声纳上的单元测试代码覆盖率。我正在使用Jacoco代码覆盖率,并且当我在eclipse中执行我的代码时,能够获得我的项目的代码覆盖率。但是,在 Jenkins 中运行时,我收到以下消息和警告,因为没有要运行的测试,没有要编译的源代码 我可以在声纳上报告一些代码覆盖率,但对于单元测试,它会显示。声纳如何显示单元测试的覆盖率?还有,我如何消除警告消息? 附加我的肯定和雅各插件以及杰本金斯控制台

  • 我已经看了一段时间关于stackoverflow的不同文章和答案,但我还没有找到适合我的情况的有效解决方案。我对jacoco、maven和sonar如何一起创建报告的理解肯定有问题,所以我要寻求帮助。 我有一个多模块maven项目,其结构如下(稍微简化了一下): 请允许我扩展一下。父模块只是一个带有整个依赖项及其版本的pom。这个pom被用作level1的每一个其他模块的父模块(直接位于根下面)。

  • 我有一个基本的maven多模块,父模块是POM,其子模块是domain、service和Web。 我已经在pom父级中添加了jacoco插件和所需的配置,以便将测试覆盖率报告附加到一个Sonar很容易找到的文件中。 我的问题是,Sonar只显示第一个模块的测试覆盖范围(是domain)(即使我用编辑器打开文件,看到其他模块的类名被追加在其中)。 这种配置会有什么问题? 为了它的价值,声纳分析被称为

  • 我必须在我的android测试中设置代码覆盖报告,然后在声纳中发布它们。我读到没有工具和插件可以做到这一点。我正在使用gradle脚本,我尝试Jacoco插件,cobertura,但没有结果。有什么办法解决吗?此外,我试图做像这里Gradle Jacoco代码覆盖-然后发布/显示在詹金斯

  • 我正在使用: 声纳v.3.2(有jacoco) Maven 3.0.4 跟随”http://johndobie.blogspot.in/2012/05/easy-unit-and-integration-code-coverage.html#comment-表格“以获得单元的单独代码覆盖率 日志显示如下: POM文件: