【问题标题】:Global suppression for entire solution (C#)整个解决方案的全局抑制 (C#)
【发布时间】:2018-09-20 17:05:28
【问题描述】:

你们中有人知道我可以压制的方法吗? CA2000 用于整个解决方案?

我正在考虑类似GlobalSuppressions 类的东西,代码如下:

[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope")]

提前感谢您的帮助。

【问题讨论】:

  • 需要注意的是,您可以编辑处理这些文件的文件。你可以向外扩展,ReSharper 和其他平台已经这样做了,但我相信答案已经存在于 Stack Overflow 上。
  • 如果您在一个月内问为什么会出现内存泄漏,我不会感到惊讶
  • 您不想在全球范围内这样做是有充分理由的。
  • 你为什么要禁止这个?

标签: c# code-analysis suppression


【解决方案1】:

可以在.editorconfig file 中配置全局抑制。

  1. 在解决方案的根文件夹中创建一个名为 .editorconfig 的文件
  2. 在文本编辑器中打开
  3. 在第一行添加root = true
  4. 在该行下方添加要禁用的规则
    [*.{cs,vb}]
    dotnet_diagnostic.<Rule_Code>.severity=silent
    

这是一个示例 .editorconfig 文件

root = true

[*.{cs,vb}]
dotnet_diagnostic.CA2000.severity=silent

[*.{cs,vb}]
dotnet_diagnostic.MA0004.severity=silent    # Even works with 3rd part rules/analyser 

【讨论】:

    【解决方案2】:

    最好的方法是创建一个Directory.Build.props 文件,该文件将自动包含在它所在位置的子文件夹中的所有项目中。然后将以下内容添加到文件中:

    <?xml version="1.0" encoding="utf-8" ?>
    <Project>
      <!-- This file will be automatically included in all projects because of its name -->
      <PropertyGroup>
        <NoWarn>CA2000</NoWarn>
      </PropertyGroup>
    </Project>
    

    【讨论】:

      【解决方案3】:

      如果有人偶然发现这一点,可以创建一个全局抑制文件(例如:GlobalSuppressions.cs),将其“作为链接”添加到您需要的每个项目中。它应该包含如下行:[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "ASP.NET Core doesn't use thread context to store request context.", Scope = "module")] 更多详情见:https://docs.microsoft.com/en-us/visualstudio/code-quality/in-source-suppression-overview?view=vs-2022#suppress-violations-using-a-global-suppression-file

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多