【问题标题】:How can I include test-coverage reports in my C# SonarQube project?如何在我的 C# SonarQube 项目中包含测试覆盖率报告?
【发布时间】:2015-12-14 23:14:09
【问题描述】:

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

MSBuild.SonarQube.Runner.exe 开始 /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 开始 /k:"mykey" /n:"myname" /v:"1.0.0" msbuild ... # 构建生产代码 MSBuild.SonarQube.Runner.exe 结束 MSBuild.SonarQube.Runner.exe 开始 /k:"mykey" /n:"myname" /v:"1.0.0" /d:sonar.cs.opencover.reportsPaths="opencover.xml" /d:sonar.cs .nu​​nit.reportsPaths="nunit.xml" msbuild ... # 构建测试代码 OpenCover ... # 运行测试代码并生成(非 SonarQube)覆盖率报告 MSBuild.SonarQube.Runner.exe 结束
  2. 扩展原来的 MSBuild.SonarQube.Runner.exe 会话以包含与测试相关的构建代码;使用这种方法,我看不到任何错误,但也看到 NO 报告:

    MSBuild.SonarQube.Runner.exe 开始 /k:"mykey" /n:"myname" /v:"1.0.0" /d:sonar.cs.opencover.reportsPaths="opencover.xml" /d:sonar.cs .nu​​nit.reportsPaths="nunit.xml" msbuild ... # 构建生产代码 msbuild ... # 构建测试代码 OpenCover ... # 运行测试代码并生成(非 SonarQube)覆盖率报告 MSBuild.SonarQube.Runner.exe 结束

技术背景

  • SonarQube 5.1.2
  • C# 插件 5.2
  • MSBuild.SonarQube.Runner 1.0.1
  • NUnit.Runners.Net45.x64 2.6.3
  • OpenCover 4.5.3207

我的背景

其他背景

  • 我用两个单独的 .csproj 文件将我的生产代码和测试代码分隔在两个单独的 FS 树中。
  • 我通过两种方式将我的测试项目(具有 MyTests.csproj 项目文件)标识为 SonarQube 的测试项目:

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

【问题讨论】:

    标签: c# sonarqube


    【解决方案1】:

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

    这里的关键是为 MSBuild.SonarQube.Runner.exe 提供测试报告 XML 文件的正确路径。我没有为它提供不正确的路径,这是行不通的。

    【讨论】:

      猜你喜欢
      • 2016-10-13
      • 2015-04-18
      • 2019-07-07
      • 2019-10-23
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 2020-01-12
      • 2012-01-07
      相关资源
      最近更新 更多