Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apply Stylecorp rules to Resharper #145

Open
3 tasks
SebastianKuesters opened this issue Mar 30, 2022 · 2 comments
Open
3 tasks

Apply Stylecorp rules to Resharper #145

SebastianKuesters opened this issue Mar 30, 2022 · 2 comments

Comments

@SebastianKuesters
Copy link
Member

SebastianKuesters commented Mar 30, 2022

@achilles-portarinos
Copy link
Contributor

This is a (very long example) from an .editorconfig file that we used in another project.

My experience has shown that resharper can detect rules from .editorconfig directly and apply those to the IDE (VS with resharper or Rider).

I would like to have a consistent experience when I am writing code. Currently for example, when we skip brackets after an if clause, resharper warns us that those should not be skipped. Then I apply resharper's suggestion and bring those back. Then I apply silent code cleanup and the brackets are removed again. And on top we have eclint which may also behave differently (did not check).

I hope this helps to get the discussion started :)

root=true
# Remove the line below if you want to inherit .editorconfig settings from higher directories

# C# files
[*.cs]

#### Core EditorConfig Options ####

# Encoding
charset=utf-8

# Indentation and spacing
indent_size=4
indent_style=space
trim_trailing_whitespace=true

# New line preferences
end_of_line=crlf
insert_final_newline=false

#### .NET Coding Conventions ####

# Organize usings
dotnet_separate_import_directive_groups=false
dotnet_sort_system_directives_first=false
file_header_template=unset

# this. and Me. preferences
dotnet_style_qualification_for_event=false:suggestion
dotnet_style_qualification_for_field=false:suggestion
dotnet_style_qualification_for_method=false:suggestion
dotnet_style_qualification_for_property=false:suggestion

# Language keywords vs BCL types preferences
dotnet_style_predefined_type_for_locals_parameters_members=true:suggestion
dotnet_style_predefined_type_for_member_access=true:suggestion

# Parentheses preferences
dotnet_style_parentheses_in_arithmetic_binary_operators=always_for_clarity:none
dotnet_style_parentheses_in_other_binary_operators=always_for_clarity:none
dotnet_style_parentheses_in_other_operators=never_if_unnecessary:silent
dotnet_style_parentheses_in_relational_binary_operators=always_for_clarity:none

# Modifier preferences

# Expression-level preferences
dotnet_style_coalesce_expression=true:suggestion
dotnet_style_collection_initializer=true:suggestion
dotnet_style_explicit_tuple_names=true:suggestion
dotnet_style_null_propagation=true:suggestion
dotnet_style_object_initializer=true:suggestion
dotnet_style_operator_placement_when_wrapping=beginning_of_line
dotnet_style_prefer_auto_properties=true:silent
dotnet_style_prefer_compound_assignment=true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment=true:silent
dotnet_style_prefer_conditional_expression_over_return=true:silent
dotnet_style_prefer_inferred_anonymous_type_member_names=true:suggestion
dotnet_style_prefer_inferred_tuple_names=true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method=true:suggestion
dotnet_style_prefer_simplified_boolean_expressions=true:suggestion
dotnet_style_prefer_simplified_interpolation=true:suggestion

# Field preferences
dotnet_style_readonly_field=true:suggestion

# Parameter preferences
dotnet_code_quality_unused_parameters=all:suggestion

#### C# Coding Conventions ####

# var preferences
csharp_style_var_elsewhere=false:none
csharp_style_var_for_built_in_types=false:warning
csharp_style_var_when_type_is_apparent=true:none

# Expression-bodied members
csharp_style_expression_bodied_accessors=true:suggestion
csharp_style_expression_bodied_constructors=false:suggestion
csharp_style_expression_bodied_indexers=true:silent
csharp_style_expression_bodied_lambdas=when_on_single_line:suggestion
csharp_style_expression_bodied_local_functions=when_on_single_line:suggestion
csharp_style_expression_bodied_methods=true:suggestion
csharp_style_expression_bodied_operators=false:silent
csharp_style_expression_bodied_properties=true:suggestion

# Pattern matching preferences
csharp_style_pattern_matching_over_as_with_null_check=true:suggestion
csharp_style_pattern_matching_over_is_with_cast_check=true:suggestion
csharp_style_prefer_switch_expression=true:suggestion

# Null-checking preferences
csharp_style_conditional_delegate_call=true:suggestion

# Modifier preferences
csharp_prefer_static_local_function=true:suggestion

# Code-block preferences
csharp_prefer_braces=true:none
csharp_prefer_simple_using_statement=true:suggestion

# Expression-level preferences
csharp_prefer_simple_default_expression=true:suggestion
csharp_style_deconstructed_variable_declaration=true:suggestion
csharp_style_inlined_variable_declaration=true:suggestion
csharp_style_pattern_local_over_anonymous_function=true:suggestion
csharp_style_prefer_index_operator=true:suggestion
csharp_style_prefer_range_operator=true:suggestion
csharp_style_throw_expression=true:suggestion
csharp_style_unused_value_assignment_preference=discard_variable:suggestion
csharp_style_unused_value_expression_statement_preference=discard_variable:silent

# 'using' directive preferences

#### C# Formatting Rules ####

# New line preferences
csharp_new_line_before_catch=true
csharp_new_line_before_else=true
csharp_new_line_before_finally=true
csharp_new_line_before_members_in_anonymous_types=true
csharp_new_line_before_members_in_object_initializers=true
csharp_new_line_before_open_brace=all
csharp_new_line_between_query_expression_clauses=true

# Indentation preferences
csharp_indent_block_contents=true
csharp_indent_braces=false
csharp_indent_case_contents=true
csharp_indent_case_contents_when_block=true
csharp_indent_labels=one_less_than_current
csharp_indent_switch_labels=true

# Space preferences
csharp_space_after_cast=false
csharp_space_after_colon_in_inheritance_clause=true
csharp_space_after_comma=true
csharp_space_after_dot=false
csharp_space_after_keywords_in_control_flow_statements=true
csharp_space_after_semicolon_in_for_statement=true
csharp_space_around_binary_operators=before_and_after
csharp_space_around_declaration_statements=false
csharp_space_before_colon_in_inheritance_clause=true
csharp_space_before_comma=false
csharp_space_before_dot=false
csharp_space_before_open_square_brackets=false
csharp_space_before_semicolon_in_for_statement=false
csharp_space_between_empty_square_brackets=false
csharp_space_between_method_call_empty_parameter_list_parentheses=false
csharp_space_between_method_call_name_and_opening_parenthesis=false
csharp_space_between_method_call_parameter_list_parentheses=false
csharp_space_between_method_declaration_empty_parameter_list_parentheses=false
csharp_space_between_method_declaration_name_and_open_parenthesis=false
csharp_space_between_method_declaration_parameter_list_parentheses=false
csharp_space_between_parentheses=false
csharp_space_between_square_brackets=false

# Wrapping preferences
csharp_preserve_single_line_blocks=true
csharp_preserve_single_line_statements=false

#### 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.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

dotnet_naming_rule.private_constants_rule.severity=suggestion
dotnet_naming_rule.private_constants_rule.style=upper_camel_case_style
dotnet_naming_rule.private_constants_rule.symbols=private_constants_symbols

dotnet_naming_rule.private_instance_fields_rule.severity=suggestion
dotnet_naming_rule.private_instance_fields_rule.style=lower_camel_case_style
dotnet_naming_rule.private_instance_fields_rule.symbols=private_instance_fields_symbols

dotnet_naming_rule.private_static_fields_rule.severity=suggestion
dotnet_naming_rule.private_static_fields_rule.style=lower_camel_case_style
dotnet_naming_rule.private_static_fields_rule.symbols=private_static_fields_symbols

dotnet_naming_rule.private_static_readonly_rule.severity=suggestion
dotnet_naming_rule.private_static_readonly_rule.style=upper_camel_case_style
dotnet_naming_rule.private_static_readonly_rule.symbols=private_static_readonly_symbols

# Symbol specifications

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

dotnet_naming_symbols.types.applicable_kinds=class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities=public, internal, private, protected, protected_internal, private_protected
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, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers=

dotnet_naming_symbols.private_constants_symbols.applicable_accessibilities=private
dotnet_naming_symbols.private_constants_symbols.applicable_kinds=field
dotnet_naming_symbols.private_constants_symbols.required_modifiers=const

dotnet_naming_symbols.private_instance_fields_symbols.applicable_accessibilities=private
dotnet_naming_symbols.private_instance_fields_symbols.applicable_kinds=field

dotnet_naming_symbols.private_static_fields_symbols.applicable_accessibilities=private
dotnet_naming_symbols.private_static_fields_symbols.applicable_kinds=field
dotnet_naming_symbols.private_static_fields_symbols.required_modifiers=static

dotnet_naming_symbols.private_static_readonly_symbols.applicable_accessibilities=private
dotnet_naming_symbols.private_static_readonly_symbols.applicable_kinds=field
dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers=static,readonly

# Naming styles

dotnet_naming_style.lower_camel_case_style.capitalization=camel_case
dotnet_naming_style.upper_camel_case_style.capitalization=pascal_case

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

# ReSharper properties
resharper_braces_for_dowhile=required
resharper_braces_for_fixed=required
resharper_braces_for_for=required
resharper_braces_for_foreach=required
resharper_braces_for_ifelse=required
resharper_braces_for_lock=required
resharper_braces_for_using=required
resharper_braces_for_while=required
resharper_braces_redundant=true
resharper_csharp_empty_block_style=together_same_line
resharper_csharp_indent_style=space
resharper_csharp_max_line_length=250
resharper_csharp_naming_rule.event=AaBb:do_not_check
resharper_csharp_naming_rule.interfaces=I + AaBb, AaBb:do_not_check
resharper_csharp_naming_rule.method=AaBb:do_not_check
resharper_csharp_naming_rule.private_constants=AaBb
resharper_csharp_naming_rule.private_static_fields=aaBb
resharper_csharp_naming_rule.private_static_readonly=AaBb
resharper_csharp_naming_rule.property=AaBb:do_not_check
resharper_csharp_naming_rule.types_and_namespaces=AaBb:do_not_check
resharper_csharp_stick_comment=false
resharper_csharp_wrap_extends_list_style=chop_if_long
resharper_enforce_line_ending_style=true
resharper_for_built_in_types=use_var_when_evident
resharper_for_simple_types=use_var_when_evident
resharper_keep_existing_declaration_block_arrangement=false
resharper_keep_existing_embedded_arrangement=false
resharper_keep_existing_embedded_block_arrangement=false
resharper_keep_existing_enum_arrangement=false
resharper_keep_existing_switch_expression_arrangement=false
resharper_local_function_body=expression_body
resharper_max_array_initializer_elements_on_line=1
resharper_max_enum_members_on_line=1
resharper_max_formal_parameters_on_line=250
resharper_max_initializer_elements_on_line=1
resharper_modifiers_order=public private protected internal static extern new virtual abstract sealed override readonly unsafe volatile async
resharper_place_attribute_on_same_line=false
resharper_place_simple_embedded_statement_on_same_line=false
resharper_place_simple_initializer_on_single_line=true
resharper_show_autodetect_configure_formatting_tip=false
resharper_sort_usings_with_system_first=false
resharper_space_within_single_line_array_initializer_braces=true
resharper_use_heuristics_for_body_style=false
resharper_use_indent_from_vs=false
resharper_wrap_array_initializer_style=chop_if_long
resharper_wrap_object_and_collection_initializer_style=chop_if_long
resharper_xmldoc_attribute_indent=align_by_first_attribute
resharper_xmldoc_blank_line_after_pi=false
resharper_xmldoc_indent_text=DoNotTouch
resharper_xmldoc_max_line_length=250
resharper_xml_indent_size=2
resharper_xml_max_line_length=250
resharper_xml_tab_width=2
tab_width=4

# Microsoft .NET properties
dotnet_naming_rule.event_rule.severity=none
dotnet_naming_rule.event_rule.style=pascal_case
dotnet_naming_rule.event_rule.symbols=event_symbols
dotnet_naming_rule.interfaces_rule.severity=none
dotnet_naming_rule.interfaces_rule.style=begins_with_i
dotnet_naming_rule.interfaces_rule.symbols=interfaces_symbols
dotnet_naming_rule.method_rule.severity=none
dotnet_naming_rule.method_rule.style=pascal_case
dotnet_naming_rule.method_rule.symbols=method_symbols
dotnet_naming_rule.property_rule.severity=none
dotnet_naming_rule.property_rule.style=pascal_case
dotnet_naming_rule.property_rule.symbols=property_symbols
dotnet_naming_rule.types_and_namespaces_rule.severity=none
dotnet_naming_rule.types_and_namespaces_rule.style=pascal_case
dotnet_naming_rule.types_and_namespaces_rule.symbols=types_and_namespaces_symbols
dotnet_naming_symbols.event_symbols.applicable_accessibilities=*
dotnet_naming_symbols.event_symbols.applicable_kinds=event
dotnet_naming_symbols.interfaces_symbols.applicable_accessibilities=*
dotnet_naming_symbols.interfaces_symbols.applicable_kinds=interface
dotnet_naming_symbols.method_symbols.applicable_accessibilities=*
dotnet_naming_symbols.method_symbols.applicable_kinds=method
dotnet_naming_symbols.property_symbols.applicable_accessibilities=*
dotnet_naming_symbols.property_symbols.applicable_kinds=property
dotnet_naming_symbols.types_and_namespaces_symbols.applicable_accessibilities=*
dotnet_naming_symbols.types_and_namespaces_symbols.applicable_kinds=namespace,class,struct,enum,delegate

# ReSharper inspection severities
resharper_arrange_modifiers_order_highlighting=none
resharper_arrange_type_member_modifiers_highlighting=none
resharper_arrange_type_modifiers_highlighting=none
resharper_convert_to_using_declaration_highlighting=hint
resharper_inconsistent_naming_highlighting=suggestion
resharper_suggest_var_or_type_elsewhere_highlighting=warning
resharper_suggest_var_or_type_simple_types_highlighting=warning

# C# project, SQL, XML and XAML files
[*.{csproj,sql,xml,xaml}]

#### Core EditorConfig Options ####

# Encoding
charset=utf-8

# Indentation and spacing
indent_size=4
indent_style=space
trim_trailing_whitespace=true

# New line preferences
end_of_line=crlf
insert_final_newline=false

# Microsoft .NET properties
csharp_new_line_before_members_in_object_initializers=false
csharp_preferred_modifier_order=public, private, protected, internal, new, abstract, virtual, sealed, override, static, readonly, extern, unsafe, volatile, async:suggestion
csharp_style_var_elsewhere=true:suggestion
csharp_style_var_for_built_in_types=true:suggestion
csharp_style_var_when_type_is_apparent=true:suggestion
dotnet_naming_rule.private_constants_rule.severity=warning
dotnet_naming_rule.private_constants_rule.style=upper_camel_case_style
dotnet_naming_rule.private_constants_rule.symbols=private_constants_symbols
dotnet_naming_rule.private_instance_fields_rule.severity=warning
dotnet_naming_rule.private_instance_fields_rule.style=lower_camel_case_style
dotnet_naming_rule.private_instance_fields_rule.symbols=private_instance_fields_symbols
dotnet_naming_rule.private_static_fields_rule.severity=warning
dotnet_naming_rule.private_static_fields_rule.style=lower_camel_case_style_1
dotnet_naming_rule.private_static_fields_rule.symbols=private_static_fields_symbols
dotnet_naming_rule.private_static_readonly_rule.severity=warning
dotnet_naming_rule.private_static_readonly_rule.style=upper_camel_case_style
dotnet_naming_rule.private_static_readonly_rule.symbols=private_static_readonly_symbols
dotnet_naming_style.lower_camel_case_style.capitalization=camel_case
dotnet_naming_style.lower_camel_case_style_1.capitalization=camel_case
dotnet_naming_style.lower_camel_case_style_1.required_prefix=_
dotnet_naming_style.upper_camel_case_style.capitalization=pascal_case
dotnet_naming_symbols.private_constants_symbols.applicable_accessibilities=private
dotnet_naming_symbols.private_constants_symbols.applicable_kinds=field
dotnet_naming_symbols.private_constants_symbols.required_modifiers=const
dotnet_naming_symbols.private_instance_fields_symbols.applicable_accessibilities=private
dotnet_naming_symbols.private_instance_fields_symbols.applicable_kinds=field
dotnet_naming_symbols.private_static_fields_symbols.applicable_accessibilities=private
dotnet_naming_symbols.private_static_fields_symbols.applicable_kinds=field
dotnet_naming_symbols.private_static_fields_symbols.required_modifiers=static
dotnet_naming_symbols.private_static_readonly_symbols.applicable_accessibilities=private
dotnet_naming_symbols.private_static_readonly_symbols.applicable_kinds=field
dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers=static,readonly
dotnet_style_parentheses_in_arithmetic_binary_operators=never_if_unnecessary:none
dotnet_style_parentheses_in_other_binary_operators=never_if_unnecessary:none
dotnet_style_parentheses_in_relational_binary_operators=never_if_unnecessary:none
dotnet_style_predefined_type_for_locals_parameters_members=true:suggestion
dotnet_style_predefined_type_for_member_access=true:suggestion
dotnet_style_qualification_for_event=false:suggestion
dotnet_style_qualification_for_field=false:suggestion
dotnet_style_qualification_for_method=false:suggestion
dotnet_style_qualification_for_property=false:suggestion
dotnet_style_require_accessibility_modifiers=for_non_interface_members:suggestion

# ReSharper properties
resharper_apply_on_completion=true
resharper_csharp_max_line_length=240
resharper_enforce_line_ending_style=true
resharper_show_autodetect_configure_formatting_tip=false
resharper_sort_usings_with_system_first=false
resharper_use_indent_from_vs=false
resharper_xmldoc_indent_size=2
resharper_xmldoc_indent_text=DoNotTouch
resharper_xmldoc_tab_width=2
resharper_xml_indent_size=2

# ReSharper inspection severities
resharper_arrange_redundant_parentheses_highlighting=hint
resharper_arrange_this_qualifier_highlighting=hint
resharper_arrange_type_member_modifiers_highlighting=hint
resharper_arrange_type_modifiers_highlighting=hint
resharper_built_in_type_reference_style_for_member_access_highlighting=hint
resharper_built_in_type_reference_style_highlighting=hint
resharper_redundant_base_qualifier_highlighting=warning
resharper_suggest_var_or_type_built_in_types_highlighting=hint
resharper_suggest_var_or_type_elsewhere_highlighting=hint
resharper_suggest_var_or_type_simple_types_highlighting=hint

[*.{appxmanifest,asax,ascx,aspx,axml,build,config,cs,cshtml,csproj,css,dbml,discomap,dtd,htm,html,js,json,jsproj,jsx,lsproj,master,njsproj,nuspec,proj,props,proto,razor,resjson,resw,resx,skin,StyleCop,targets,tasks,ts,tsx,vb,vbproj,xaml,xamlx,xml,xoml,xsd}]
indent_style=space
indent_size=4
tab_width=4

# ReSharper properties
resharper_xml_indent_size=2
resharper_xml_tab_width=2

[*.{appxmanifest,axml,build,config,csproj,dbml,discomap,dtd,jsproj,lsproj,njsproj,nuspec,proj,props,StyleCop,targets,tasks,vbproj,xaml,xamlx,xml,xoml,xsd}]
indent_style=space
indent_size=2
tab_width=2

# ReSharper properties
resharper_space_within_single_line_array_initializer_braces=true

[*.{asax,ascx,aspx,cs,cshtml,css,htm,html,js,json,jsx,master,proto,razor,resjson,resw,resx,skin,ts,tsx,vb}]
indent_style=space
indent_size=4
tab_width=4


@robinmanuelthiel
Copy link
Member

I do not want to define coding rules for C# at two different locations (StyleCop and .editorconfig). Can't we disable code styling in Resharper at all or point it to StyleCop?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants