CA1707常量名称警告

问题描述

为什么Microsoft保持像WM_SOMECONSTANT这样的常量文档代码,但是Visual Studio中的代码分析报告CA1707警告?

我们应该禁止所有这些警告来解决问题吗? 我们应该重命名所有常量吗?

解决方法

您似乎在引用Windows中的本机函数。这里的建议是将对该函数的调用(及其需要的任何枚举和常量)放在一个单独的NativeMethods类中,并带有自己的.cs文件。这样,很容易为整个文件隐藏代码中的CA1707

建议不要在所有非常量代码中都添加这些常量,是否可以创建一个简单的包装程序来充当丑陋的本地win32 API与您打算人们如何在C#应用程序中使用它们之间的桥梁?这样一来,其余的代码就可以很高兴地不知道它。

一些技巧可能会在这里有所帮助:

  • 使用新的.editorconfig样式规则集文件时,您可以specify a naming convention for the files to which rules apply

    [*.{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
    
  • 您可以将本机方法移至单独的类库,并在那里完全禁用规则。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...