我有一个包含大量项目的.NET解决方案。我想用SonarQube
分析项目,并显示单元测试的详细信息。我使用NUnit
进行测试,OpenCover
生成覆盖率报告。我有一个简单的batch
文件来按顺序运行所需的SonarQube任务。
现在我想要从覆盖率分析中排除一些组件。计算,并仅对装配的子集进行聚合分析。我出于此目的使用opencover filters
,但它们似乎无法正常工作。
我们说我有像
这样的集会MyProject.ViewModels
MyProject.DomainModels
MyProject.Core
MyProject.CoreTests
My.Shared.Data
MyProject.Data.Tests
MyProject.Data.Console
MyShared.Console
UIModules.Services
UIModules.Services.UnitTests
UIModules.Web
UIModules.Web.Tests
为了处理它们,我有一个batch
文件,如下所示。我添加了一些filter
来排除测试,模型&控制台组件。
似乎过滤器无法正常工作。在SonarQube
上显示的代码覆盖范围内,虽然排除了测试项目,但仍然是模型&整体覆盖率计算会考虑控制台项目。
SonarQube.Scanner.MSBuild.exe begin /k:"key" /n:"My Project" /v:"1.0" /d:sonar.cs.nunit.reportsPaths="NUnitResults.xml" /d:sonar.cs.opencover.reportsPaths="opencover.xml"
REM build the project/solution
msbuild MyProject.sln /t:rebuild
REM run NUnit tests
"C:\Program Files (x86)\NUnit 2.6.4\bin\nunit-console.exe" /result=NUnitResults.xml Core\bin\Debug\MyProject.CoreTests.dll Data\bin\Debug\MyProject.Data.Tests.dll Services\bin\Debug\UIModules.ServicesTests.dll Web\bin\Debug\UIModules.Web.Tests.dll
REM run OpenCover coverage
"C:\Users\Me\AppData\Local\Apps\OpenCover\OpenCover.Console.exe" -register:user "-target:C:\Program Files (x86)\NUnit 2.6.4\bin\nunit-console.exe" "-targetargs:Core\bin\Debug\MyProject.CoreTests.dll Data\bin\Debug\MyProject.Data.Tests.dll Services\bin\Debug\UIModules.ServicesTests.dll Web\bin\Debug\UIModules.Web.Tests.dll /noshadow" "-output:opencover.xml" "-filter:+[MyProject*]* +[My.Shared*]* +[UIModules*]* -[*Tests]* -[*.Console]* -[*Models]*"
REM process end analysis
SonarQube.Scanner.MSBuild.exe end
有人可以引导我找到正确的方向。
答案 0 :(得分:0)
不确定在哪里寻找规则。 Coverage工具中的coverage筛选器规则应影响coverage的输出。
导入险种后,将应用其他规则。 Sonar Qube还有其他规则。跑步者也可以内置过滤器规则。
某些跑步者可以忽略声纳设置。
既然您是在讨论覆盖范围,我假设您想跳过测试数据。
为此,测试项目名称必须以一个或多个测试结尾。 这里提到: https://docs.sonarqube.org/display/SCAN/Miscellaneous+Advanced+Usages
我也倾向于排除我在声纳主机中设置的AssemblyInfo.cs。
在Configuration -> Analysis Scope -> Global Source File Exclusions
中,我的模式为**/AssemblyInfo.cs
希望这可以帮助您入门。
我认为您应该将“其他”项目保留为未涵盖范围并列出。
如果您确实想排除每个项目,则可以尝试将其他参数传递给声纳扫描仪,例如sonar.exclusions
跑步者可能会忽略sonar.exclusions
。
有关其他排除方法的启发,请参见this answer:
答案 1 :(得分:0)
用于解析声纳的根目录。exclusions相对路径是每个.csproj文件的位置。