命名规则违规

Ste*_*erg 78 c# asp.net visual-studio-2017

我刚刚安装了visual studio 2017.当我打开一个现有的网站时,我收到各种各样的警告信息,例如:

IDE1006命名规则违规:这些单词必须以大写字符开头:swe_calc

在代码中,它被定义为:

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

我的asp.net控件也会出现这种情况.作为DropDownList的示例:

IDE1006命名规则违规:这些单词必须以大写字符开头:ddlMonth_SelectedIndexChanged

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

小智 123

它是一个新的可配置功能,如果你去

选项→文本编辑器→您的语言(我做了C#)→代码样式→命名

在那里,我去管理样式添加驼峰案例(它在那里,但你需要将它添加到你的可选择):转到"+"符号,然后相应地添加你的规则.

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

例如,我只使用camel Case作为私有方法.所以我选择私有方法并且需要Style我创建的新"camel Case"并将其设置为Severity Suggestion(我也将其提升到顶部).

内置的都是"建议",所以你也可以关闭消息.

  • 快速获取这些选项的方法是单击"快速操作"灯泡,将鼠标悬停在"修复名称冲突"上,然后单击"更改样式选项"按钮. (9认同)
  • 我刚刚删除了规则 (5认同)
  • 在Visual Studio 2019版本中,整个命名功能似乎已被修复并且不起作用。 (4认同)
  • 这与我们用于私有方法的命名约定完全相同-谢谢!现在,我只需要弄清楚如何为所有人启用此功能,而无需人们单独设置此选项。 (2认同)
  • 要与整个团队共享这样的设置/规则/样式,请参阅:/sf/ask/817912021/ (2认同)

A.J*_*uer 21

如果你需要摆脱这些消息,你也可以压制它们.

在此输入图像描述

  • @TylerH“In Source”是抛出警告的文件。“在抑制文件中”是一个生成的文件,用于存储您的所有警告。 (3认同)
  • “在源代码中”抑制它们与“在抑制文件中”抑制它们有什么区别? (2认同)

Rob*_* S. 17

如果只想在某些文件或区域中禁止显示,则可以使用以下命令:

#pragma warning disable IDE1006

// the code with the warning

#pragma warning restore IDE1006
Run Code Online (Sandbox Code Playgroud)

  • 这可能是“理想”的解决方案!它解决了整个团队的问题。 (2认同)

Dan*_*ite 13

您可以重命名该方法,并使用该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);
Run Code Online (Sandbox Code Playgroud)


Dav*_*row 6

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

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

从设置按钮生成编辑器配置文件

例如,以下几组规则将为所有非公共方法启用驼峰命名法,并保留 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
Run Code Online (Sandbox Code Playgroud)


小智 5

如果要在方法中省略或取消警告消息,可以使用命名空间System.Diagnostics.CodeAnalysis 中SuppressMessage

[SuppressMessage("Microsoft.Design", "IDE1006", Justification = "Rule violation aceppted due blah blah..")]
Run Code Online (Sandbox Code Playgroud)

理由属性是可选的,但它是值得花了一会儿写一个理由,让你的团队知道这些代码被修改,就可以了。