根据MSDN的.NET代码分析文档,我们可以通过
.editorconfig
文件配置Roslyn分析器的行为。
dotnet_diagnostic.<rule ID>.severity = <severity>
dotnet_analyzer_diagnostic.category-<rule category>.severity = <severity>
dotnet_analyzer_diagnostic.severity = <severity>
但是我找不到任何关于配置特定分析器规则的提及。
假设我的项目中有一个目录不应由 Roslynator 分析,另一个目录不应由 StyleCop 分析。通过这个,我的意思是这些分析器的每一个规则应该为他们各自的目录禁用。其中一些分析器有数百条规则,单独禁用所有这些规则将花费很长时间。
注意:这只是一个示例,我的问题是关于我是否可以针对任意分析器,而不是 StyleCop 或 Roslynator 是否有自己的设置来执行此操作。
在我的
.editorconfig
文件中,我希望能够执行以下操作:
# Disable all Roslynator analysis in Foo/ directory
[/Foo/*.cs]
dotnet_analyzer.Roslynator.severity = none
# Disable all StyleCop analysis in Bar/ directory
[/Bar/*.cs]
dotnet_analyzer.StyleCop.severity = none
有这样的功能吗?或者我是否必须禁用对这些目录的所有分析?
使用
.editorconfig
没有直接的方法。但是您可以使用在 CoreCompile
目标之前运行的 MSBuild 目标完全删除特定 projects的分析器引用。
<Target Name="RemoveAnalyzerReference" BeforeTargets="CoreCompile">
<ItemGroup>
<Analyzer Remove="@(Analyzer)" Condition="'%(Analyzer.NugetPackageId)'=='ANALYZER_NUGET_PACKAGE_ID'"/>
</ItemGroup>
</Target>
请注意,这适用于给定的项目,而不是目录。两者之间的区别在于项目可以引用其目录之外的内容。
另请注意,如果您希望将其应用于所有这些项目的目录中有多个项目,则可以使用
Directory.Build.targets
。