问题描述
为什么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
-
您可以将本机方法移至单独的类库,并在那里完全禁用规则。