CA1707 常量名称警告

CA1707 warning on constants names

提问人:Federico Bianchi 提问时间:9/3/2020 最后编辑:jessehouwingFederico Bianchi 更新时间:9/3/2020 访问量:1498

问:

为什么 Microsoft 一直使用常量记录代码,例如 WM_SOMECONSTANT但 Visual Studio 中的代码分析报告 CA1707 警告?

我们是否应该抑制所有这些警告以寻求解决方案? 我们应该重命名所有常量吗?

visual-studio fxcop roslyn 代码分析

评论


答:

1赞 jessehouwing 9/3/2020 #1

看起来您正在引用 Windows 中的本机函数。这里的建议是将对该函数(以及它所需的任何枚举和常量)的调用放在一个单独的类中,该类具有自己的文件。这样就很容易抑制整个文件的 in 代码。NativeMethods.csCA1707

建议不要在非本机代码中散布所有这些常量,是否可以创建一个简单的包装器,作为丑陋的本机 win32 API 与你希望人们在 C# 应用中使用它的方式之间的桥梁?这样一来,代码的其余部分就可以幸福地保持不知情。

一些可能会有所帮助的技巧:

  • 使用新的样式规则集文件时,可以为应用规则的文件指定命名约定.editorconfig

    [*.{cs,vb}]
    dotnet_diagnostic.CA1707.severity = warning
    
    [NativeMethods.{cs,vb}]
    dotnet_diagnostic.CA1707.severity = none
    
  • 您可以对整个文件使用编译器指令内联禁止显示:

    #pragma warning disable CA1707 // Identifiers should not contain underscores
    
    public class Class1
    {
        public string WM_ERSHSERHSEHRSER;
    }
    
    #pragma warning restore CA1707 // Identifiers should not contain underscores
    
  • 您可以将本机方法移动到单独的类库中,并在那里完全禁用该规则。