如何在c# SonarQube项目中包含测试覆盖率报告?

本文关键字:测试覆盖 测试 覆盖率 报告 包含 SonarQube 项目 | 更新日期: 2023-09-27 18:13:17

我目前在SonarQube服务器上有一个生成基本分析报告的构建文件。

<>之前MSBuild.SonarQube.Runner.exe begin/k:"mykey"/n:"myname"/v:"1.0.0"msbuild……#构建产品代码MSBuild.SonarQube.Runner.exe结束msbuild……#构建测试代码OpenCover……#运行测试代码并生成(非sonarqube)覆盖率报告之前

到目前为止一切顺利。现在我想添加测试覆盖报告。这就是我被困住的地方。如何在c# SonarQube项目中包含测试覆盖率报告?

我尝试了两种方法来获得测试覆盖率报告,但都没有达到预期的效果:

  1. 运行两个单独的MSBuild.SonarQube.Runner.exe会话,一个用于分析生产代码,另一个用于处理测试覆盖率报告;使用这种方法,我没有看到错误,看到基本的分析,但是没有看到测试覆盖率报告:

    <>之前MSBuild.SonarQube.Runner.exe begin/k:"mykey"/n:"myname"/v:"1.0.0"msbuild……#构建产品代码MSBuild.SonarQube.Runner.exe结束MSBuild.SonarQube.Runner.exe begin/k:"mykey"/n:"myname"/v:"1.0.0"/d:sonar.cs. openconf . reportspath =" openconf .xml"/d:sonar.cs.nunit. reportspath ="nunit.xml"msbuild……#构建测试代码OpenCover……#运行测试代码并生成(非sonarqube)覆盖率报告MSBuild.SonarQube.Runner.exe结束
  2. 扩展原来的MSBuild.SonarQube.Runner.exe会话,以包含与测试相关的构建代码;使用这种方法,我没有看到错误,但也看到 no 报告:

    <>之前MSBuild.SonarQube.Runner.exe begin/k:"mykey"/n:"myname"/v:"1.0.0"/d:sonar.cs. openconf . reportspath =" openconf .xml"/d:sonar.cs.nunit. reportspath ="nunit.xml"msbuild……#构建产品代码msbuild……#构建测试代码OpenCover……#运行测试代码并生成(非sonarqube)覆盖率报告MSBuild.SonarQube.Runner.exe结束

技术背景
  • SonarQube 5.1.2
  • c# Plugin 5.2
  • MSBuild.SonarQube。跑步者1.0.1
  • NUnit.Runners.Net45。x64 2.6.3
  • OpenCover 4.5.3207

我的背景
  • 我有使用SonarQube的Java和Java的经验,但是对使用SonarQube的c#和c#很陌生。
  • 我读过了
    • http://docs.sonarqube.org/display/PLUG/C%23 +插件,
    • http://docs.sonarqube.org/display/PLUG/C%23 +代码+保险+结果+进口,
    • http://redirect.sonarsource.com/doc/sq-setup-guide-for-dotnet-users.html。

其他背景
  • 我把我的生产代码和测试代码分开放在两个单独的FS树和两个单独的.csproj文件中。
  • 我确定我的测试项目,它有一个MyTests。通过以下两种方式将SonarQube作为测试项目:

    1. 我在SonarQube服务器和
    2. 上设置sonar.cs.msbuild.testProjectPattern为[^'']*Test[^'']*$
    3. 我将<SonarQubeTestProject>true</SonarQubeTestProject>添加到MyTests.csproj中的无条件PropertyGroup .

如何在c# SonarQube项目中包含测试覆盖率报告?

第一种方法——运行MSBuild.SonarQube.Runner.exe两次,一次围绕构建,一次围绕测试——有效;第二种方法不需要。

这里的关键是为MSBuild.SonarQube.Runner.exe提供测试报告XML文件的正确路径。我给它提供了不正确的路径,这不起作用。