我目前有一个构建文件,可以在我的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项目中包含测试覆盖率报告?
我尝试了两种获取测试覆盖率报告的方法,但都没有达到预期的效果:
运行两个单独的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
展开原始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
我将具有MyTests.csproj项目文件的测试项目以两种方式识别为SonarQube作为测试项目:
[^\\]*Test[^\\]*$
并<SonarQubeTestProject>true</SonarQubeTestProject>
添加到MyTests.csproj中的无条件PropertyGroup。答案 0 :(得分:2)
第一种方法 - 运行MSBuild.SonarQube.Runner.exe两次,一次围绕构建,一次围绕测试 - 工作;第二种方法没有。
这里的关键是为MSBuild.SonarQube.Runner.exe提供测试报告XML文件的正确路径。我为它提供了不正确的路径,但这并不起作用。