【问题标题】:Disabling a specific VS code analysis rule (IDE0058) globally, without writing to a project-specific file?全局禁用特定的 VS 代码分析规则 (IDE0058),而不写入特定于项目的文件?
【发布时间】:2021-11-04 18:37:09
【问题描述】:

我经常在多个解决方案的多个 EF Core 项目中工作。每当我保存 DbContext 时,到处看到 IDE0058 analysis hints 会变得非常令人沮丧:

据我所知,抑制这种违反代码风格的行为需要修改至少一个文件:

  • 为每次调用 database.SaveChangesAsync 添加本地丢弃(看起来很糟糕)
  • 为每个方法添加 System.Diagnostics.CodeAnalysis.SuppressMessage 注释(同样不理想)
  • 为解决方案中的每个项目添加一个GlobalSuppressions.cs 文件(也确实不理想)
  • .editorconfig 文件添加到每个项目以配置此违规。我使用的所有项目都没有使用 editorconfig 文件。

出于代码审查的原因,我不能在处理不同项目时像这样继续添加不相关的文件/更改。

让我感动的是,我发誓这是最近的一期。到目前为止,我一直在 EF Core 中工作多年,这不是问题。

除此之外,a Roslyn team member commented on GitHub saying it has "no UI impact" and "is hidden by default"(显然不是这里的情况)。正如链接评论所暗示的那样,似乎也无法将其“重置”为默认值。

是否有办法一劳永逸地制止这种违规行为,在我从事的每个项目和解决方案中?

【问题讨论】:

  • 您不需要每个项目都有一个 .editorconfig 文件,只需要一个位于公共基础目录中的文件(除非项目确实有带有 root = true 的 .editorconfig 文件)。

标签: c# visual-studio-2019 roslyn roslyn-code-analysis


【解决方案1】:

是的,您可以创建一个全局 Analyzers.ruleset 文件并添加您希望忽略的规则 ID。

在每个项目的.csproj 文件中,您必须在PropertyGroup 部分中添加<CodeAnalysisRuleSet> 并指定ruleset 文件的路径。

ruleset 文件是 XML 文件,这是您可以执行的操作的示例:

<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Rules for Core Application" Description="Custom Rules" ToolsVersion="16.0">
  <Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp.Features" RuleNamespace="Microsoft.CodeAnalysis.CSharp.Features">
    <Rule Id="IDE0058" Action="None" />
  </Rules>
</RuleSet>

这是文件的外观:

您可以决定是否为警告/消息/错误/隐藏/信息/无。

更新

另一种方法是添加一个.editorconfig 文件并忽略那里的警告。

dotnet_style_readonly_field = false:none

【讨论】:

  • 理想情况下,我正在寻找一些全局 VS 特定设置来配置它;在我的情况下,必须专门修改每个项目(有很多)不是解决方案。特别是因为显然这不是此 CA 警告的默认行为。
  • @JackGreenhill 这是一个全球解决方案。您只需要将csproj 与这个单行文件连接起来......它将是这样的:&lt;CodeAnalysisRuleSet&gt;Analyzers.ruleset&lt;/CodeAnalysisRuleSet&gt;
  • @JackGreenhill 我还有一个想法,现在会更新我的答案。
  • @JackGreenhill 已更新。如果您需要有关.editorconfig 文件的更多信息,请告诉我,我会添加更多详细信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2017-02-04
  • 2018-01-27
  • 1970-01-01
相关资源
最近更新 更多