如何摆脱 Visual Studio 中的命名规则违规消息?

How to get rid of Naming rule violation messages in Visual Studio?

我刚刚安装了 Visual Studio 2017。当我打开一个现有的网站时,我收到各种警告消息,例如:

IDE1006 Naming rule violation: These words must begin with upper case characters: swe_calc

在代码中定义为:

[System.Runtime.InteropServices.DllImport("swedll32.dll")]
public static extern Int32 swe_calc(double tjd, int ipl, Int32 iflag, IntPtr xx, IntPtr serr);

我的 ASP.Net 控件也会出现这种情况。作为 DropDownList 的示例:

IDE1006 Naming rule violation: These words must begin with upper case characters: ddlMonth_SelectedIndexChanged

如何在 Visual Studio 下消除这些类型的警告?

您可以重命名该方法并将名称添加到具有 EntryPoint 属性 的属性。

[System.Runtime.InteropServices.DllImport("swedll32.dll", EntryPoint = "swe_calc")]
public static extern Int32 SweCalc(double tjd, int ipl, Int32 iflag, IntPtr xx, IntPtr serr);

这是一项新的可配置功能,如果您转到

Tools → Options → Text Editor → Your language (I did C#) → Code Style → Naming

在那里我去管理样式添加驼峰大小写(它在那里,但你需要将它添加到你的可选):转到“+”号,然后相应地添加你的规则。

重要提示:关闭您的解决方案并重新打开它以使更改生效。

例如,我只对私有方法使用驼峰式大小写。所以我选择 Private Method 并要求 Style 我创建的新方法“camel Case”并将其设置为 Severity Suggestion(我也将其提升到顶部)。

内置的都是“建议”,因此您也可以关闭消息。

如果您需要删除这些消息,您也可以直接抑制它们。

如果将鼠标悬停在违反命名规则的地方,您可以使用 Alt + Enter 调出该语言的命名风格。您还可以使用工具 -> 选项 -> 文本编辑器 -> {语言} -> 代码样式 -> 命名。

对于方法上的驼峰式规则,您可以添加一个新规则并将其设置为驼峰式大小写。当您关闭代码文件并再次打开它时,您应该不会再看到该警告。不确定为什么这不是默认选项,但它不是我的情况(使用 Visual Code 15.8)。我必须编辑样式以符合我们公司的标准。

Sample C# Naming Styles Settings

如果您只想在某些文件或区域中抑制它,您可以使用以下命令:

#pragma warning disable IDE1006

// the code with the warning

#pragma warning restore IDE1006

如果要在方法中忽略或取消警告消息,可以使用命名空间 System.Diagnostics.CodeAnalysis[=18 中的 SuppressMessage =]:

[SuppressMessage("Microsoft.Design", "IDE1006", Justification = "Rule violation aceppted due blah blah..")]

Justification 属性 是可选的,但值得花点时间写下原因,让您的团队知道代码已修改并且没问题。

这可以使用正常的 VS2017 和 VS2019 使用 .editorconfig 设置文件完成,使用命名规则:https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

该文件可以手动创建,或者在 VS2019 中,您可以获得 Visual Studio 根据您的偏好创建它(即在按照 中配置您的偏好之后),通过点击从设置按钮生成编辑器配置文件。

例如,以下几组规则将为所有非public方法启用camelCase,并保留VS自带的其他默认命名规则。

#### Naming styles ####

# Naming rules

dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i

dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case

dotnet_naming_rule.private_method_should_be_camelcasestyle.severity = suggestion
dotnet_naming_rule.private_method_should_be_camelcasestyle.symbols = private_method
dotnet_naming_rule.private_method_should_be_camelcasestyle.style = camelcasestyle

dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case

# Symbol specifications

dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal
dotnet_naming_symbols.interface.required_modifiers = 

dotnet_naming_symbols.private_method.applicable_kinds = method
dotnet_naming_symbols.private_method.applicable_accessibilities = private, protected, internal, protected_internal
dotnet_naming_symbols.private_method.required_modifiers = 

dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal
dotnet_naming_symbols.types.required_modifiers = 

dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal
dotnet_naming_symbols.non_field_members.required_modifiers = 

# Naming styles

dotnet_naming_style.pascal_case.required_prefix = 
dotnet_naming_style.pascal_case.required_suffix = 
dotnet_naming_style.pascal_case.word_separator = 
dotnet_naming_style.pascal_case.capitalization = pascal_case

dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix = 
dotnet_naming_style.begins_with_i.word_separator = 
dotnet_naming_style.begins_with_i.capitalization = pascal_case

dotnet_naming_style.camelcasestyle.required_prefix = 
dotnet_naming_style.camelcasestyle.required_suffix = 
dotnet_naming_style.camelcasestyle.word_separator = 
dotnet_naming_style.camelcasestyle.capitalization = camel_case

禁用规则。 右键单击错误消息和 select 严重性到 none

此规则声明的是 字段 必须是私有的。

您可以通过在字段后添加 {get;set;} 将其转换为 属性

这为我消除了错误。