editorconfig - cannot get naming conventions to work

…衆ロ難τιáo~ 提交于 2021-02-06 09:19:47

问题


I created the following setup for C#.

The idea is to have everything that's private named in camelCase and everything public and protected in UpperCase.

Here's my .editorconfig setup (simplified):

[*.{cs,cshtml}]
# styles
dotnet_naming_style.camel_case.capitalization = camel_case
dotnet_naming_style.first_upper.capitalization = first_word_upper

# symbols
dotnet_naming_symbols.private_symbols.applicable_accessibilities = private
dotnet_naming_symbols.public_symbols.applicable_accessibilities = public, protected

# rules
dotnet_naming_rule.camel_case_for_private.severity = warning
dotnet_naming_rule.camel_case_for_private.symbols  = private_symbols
dotnet_naming_rule.camel_case_for_private.style = camel_case

dotnet_naming_rule.first_upper_for_public.severity = warning
dotnet_naming_rule.first_upper_for_public.symbols  = public_symbols
dotnet_naming_rule.first_upper_for_public.style = first_upper

It doesn't seem to work for private: Message IDE1006 Naming rule violation: These words must begin with upper case characters: composeEmail

Public seems to work correctly.

Here's the full .editorconfig in case the error is elsewhere:

# top-most EditorConfig file
root = true

[*]
end_of_line              = crlf
charset                  = utf-8
trim_trailing_whitespace = true
insert_final_newline     = true
max_line_length = 170

[*.xml]
indent_style = space

[*.{cs,cshtml}]
dotnet_style_predefined_type_for_locals_parameters_members = true:warning
dotnet_style_predefined_type_for_member_access = true:warning
dotnet_style_explicit_tuple_names = true:warning
dotnet_style_null_propagation = true:warning
csharp_style_var_when_type_is_apparent = true:warning
csharp_style_pattern_matching_over_is_with_cast_check = true:warning
csharp_style_pattern_matching_over_as_with_null_check = true:warning
csharp_style_inlined_variable_declaration = true:warning

csharp_prefer_simple_default_expression = true
csharp_style_throw_expression = false:warning
csharp_prefer_braces = true
dotnet_sort_system_directives_first = true

csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true

csharp_indent_case_contents = true
csharp_indent_switch_labels = true

csharp_space_after_cast = true
csharp_space_after_keywords_in_control_flow_statements = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_parentheses = false

csharp_preserve_single_line_statements = false
csharp_preserve_single_line_blocks = true

### naming conventions

# styles
dotnet_naming_style.camel_case.capitalization = camel_case
dotnet_naming_style.first_upper.capitalization = first_word_upper

# prefix_interface_interface_with_i - Interfaces must be PascalCase and the first character of an interface must be an 'I'
dotnet_naming_style.prefix_interface_interface_with_i.capitalization = first_word_upper
dotnet_naming_style.prefix_interface_interface_with_i.required_prefix = I

# symbols
dotnet_naming_symbols.private_symbols.applicable_accessibilities = private
dotnet_naming_symbols.public_symbols.applicable_accessibilities = public, protected
dotnet_naming_symbols.interface_types.applicable_kinds = interface


# rules
dotnet_naming_rule.camel_case_for_private.severity = warning
dotnet_naming_rule.camel_case_for_private.symbols  = private_symbols
dotnet_naming_rule.camel_case_for_private.style = camel_case

dotnet_naming_rule.first_upper_for_public.severity = warning
dotnet_naming_rule.first_upper_for_public.symbols  = public_symbols
dotnet_naming_rule.first_upper_for_public.style = first_upper

# Interfaces must be FirstUpper and start with an 'I'
dotnet_naming_rule.interface_types_must_be_prefixed_with_i.severity = warning
dotnet_naming_rule.interface_types_must_be_prefixed_with_i.symbols = interface_types
dotnet_naming_rule.interface_types_must_be_prefixed_with_i.style = prefix_interface_interface_with_i

Maybe I should also mention that I'm using Resharper, but I disabled it to confirm that the warning still stays.


回答1:


The IDE1006 portions appear to be working for me. It might have been fixed (I'm running Visual Studio Enterprise 2017 Version 15.8.8 right now) or something conflicts.

Here is what I added to my .editorconfig (I had other things before):

#IDE1006
dotnet_naming_style.camel_case.capitalization = camel_case
dotnet_naming_symbols.private_symbols.applicable_accessibilities = private
dotnet_naming_rule.camel_case_for_private.severity = warning
dotnet_naming_rule.camel_case_for_private.symbols  = private_symbols
dotnet_naming_rule.camel_case_for_private.style = camel_case

And here is the full file:

root = true

[*]
indent_style = tab
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true

#[*.cs]
#IDE1006
dotnet_naming_style.camel_case.capitalization = camel_case
dotnet_naming_symbols.private_symbols.applicable_accessibilities = private
dotnet_naming_rule.camel_case_for_private.severity = warning
dotnet_naming_rule.camel_case_for_private.symbols  = private_symbols
dotnet_naming_rule.camel_case_for_private.style = camel_case
#IDE0018
csharp_style_inlined_variable_declaration = false:none
#IDE0039
csharp_style_pattern_local_over_anonymous_function = false:none
#IDE0019
csharp_style_pattern_matching_over_as_with_null_check = false:none
#IDE0011
csharp_prefer_braces = true:suggestion
#IDE0017
dotnet_style_object_initializer = false:none
#IDE0028
dotnet_style_collection_initializer = false:none
#IDE0037
dotnet_prefer_inferred_anonymous_type_member_names = false:none
#IDE0016
csharp_style_throw_expression = false:none

[*.md]
max_line_length = off
trim_trailing_whitespace = false


来源:https://stackoverflow.com/questions/48460115/editorconfig-cannot-get-naming-conventions-to-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!