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

时间:2015-09-17 22:59:27

标签: c# sonarqube

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

MSBuild.SonarQube.Runner.exe begin /k:"mykey" /n:"myname" /v:"1.0.0"
msbuild ... # build production code
MSBuild.SonarQube.Runner.exe end
msbuild ... # build test code
OpenCover ... # run test code and generate a (non-SonarQube) coverage report

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

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

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

    MSBuild.SonarQube.Runner.exe begin /k:"mykey" /n:"myname" /v:"1.0.0"
    msbuild ... # build production code
    MSBuild.SonarQube.Runner.exe end
    MSBuild.SonarQube.Runner.exe begin /k:"mykey" /n:"myname" /v:"1.0.0" /d:sonar.cs.opencover.reportsPaths="opencover.xml" /d:sonar.cs.nunit.reportsPaths="nunit.xml"
    msbuild ... # build test code
    OpenCover ... # run test code and generate a (non-SonarQube) coverage report
    MSBuild.SonarQube.Runner.exe end
    
  2. 展开原始MSBuild.SonarQube.Runner.exe会话以包含与测试相关的构建代码;使用这种方法,我看到没有错误,但也看到报告:

    MSBuild.SonarQube.Runner.exe begin /k:"mykey" /n:"myname" /v:"1.0.0" /d:sonar.cs.opencover.reportsPaths="opencover.xml" /d:sonar.cs.nunit.reportsPaths="nunit.xml"
    msbuild ... # build production code
    msbuild ... # build test code
    OpenCover ... # run test code and generate a (non-SonarQube) coverage report
    MSBuild.SonarQube.Runner.exe end
    
  3. 技术背景

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

    我的背景

    其他背景

    • 我将生产代码和测试代码分成两个独立的FS树和两个单独的.csproj文件。
    • 我将具有MyTests.csproj项目文件的测试项目以两种方式识别为SonarQube作为测试项目:

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

1 个答案:

答案 0 :(得分:2)

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

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