【问题标题】:How to suppress StyleCop Warning SA1649如何抑制 StyleCop 警告 SA1649
【发布时间】:2014-04-11 18:03:38
【问题描述】:

我正在尝试抑制 StyleCop 中出现两次 SA1649 错误。

根据documentation,抑制属性看起来像下面的属性

[SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1649:FileHeaderFileNameDocumentationMustMatchTypeName", Justification = "Reviewed.")]

但是,我不知道应该将属性应用到哪个元素。如果我将属性放在文件的第一个元素(IClassFactory 接口)上,则会收到以下错误:

SA1649 : CSharp.Documentation : 文件中的文件属性 标题的版权标签必须包含第一个类型的名称 文件,可以是以下任何一种: "IClassFactory" C:(...)COMHelper.cs

可以抑制该错误吗?它应该应用于什么元素?

【问题讨论】:

  • 您使用的是哪个版本的 stylecop?
  • 希望这个答案对您有所帮助。 [1]:*.com/questions/7796073/…
  • 您必须将 SuppressMessage 放在界面顶部。你能告诉我们你的界面标题
  • Mug4n 如果我将抑制消息放在文件顶部,我会收到一条错误消息,指出无法将属性应用于命名空间。 (因为第一个非注释元素是命名空间声明

标签: c# stylecop


【解决方案1】:

使用命名空间级别的抑制:

[module: System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1649:FileHeaderFileNameDocumentationMustMatchTypeName", Justification = "Reviewed.")]

namespace MyNamespace
{

}

【讨论】:

    【解决方案2】:

    suppress 属性应该放在类或接口声明中。这应该在您不希望应用此规则的每个 cs 文件中完成。

    但是,如果您想为项目中的所有 cs 文件禁止此规则,则应考虑在设置中一起禁用此规则。这样你就不会在每个类文件上都有一个禁止规则声明。

    【讨论】:

    • 正如我在问题中所写,如果我把它放在第一个项目上,我仍然会收到 style cop 错误。
    【解决方案3】:

    Chris 的回答有效,但要添加到它,您可能也必须取消文件头规则。

    [module: System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1649:FileHeaderFileNameDocumentationMustMatchTypeName", Justification = "Reviewed.")]
    [module: System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1633:FileMustHaveHeader", Justification = "Reviewed.")]
    
    //----------------------------------------------------------------------------------------------------
    // <copyright file="FileName.cs" company="Company">
    //     Copyright (c) Company. All rights reserved.
    // </copyright>
    // <author>n00bz</author>
    //----------------------------------------------------------------------------------------------------
    namespace TestNamespace
    {
    }
    

    【讨论】:

      【解决方案4】:

      更好:

      //----------------------------------------------------------------------------------------------------
      // <copyright file="FileName.cs" company="Company">
      //     Copyright (c) Company. All rights reserved.
      // </copyright>
      // <author>n00bz</author>
      //----------------------------------------------------------------------------------------------------
      [module: System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1649:FileHeaderFileNameDocumentationMustMatchTypeName", Justification = "Reviewed.")]
      
      namespace TestNamespace
      {
      }
      

      【讨论】: