是否可以使用 editorconfig 禁用特定的 Roslyn 分析器?

问题描述 投票:0回答:1

根据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

有这样的功能吗?或者我是否必须禁用对这些目录的所有分析?

c# roslyn-code-analysis editorconfig
1个回答
0
投票

使用

.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

© www.soinside.com 2019 - 2024. All rights reserved.