Last active
March 16, 2024 17:26
-
-
Save SeidChr/60c54944920f3f5c47c4b2b79a552023 to your computer and use it in GitHub Desktop.
well defined editorconfig for all c# projects
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
################################################ | |
## ## | |
## READ FIRST ## | |
## ## | |
################################################ | |
# You can find the source of this document here: | |
# https://gist.github.com/SeidChr/60c54944920f3f5c47c4b2b79a552023 | |
# To learn more about .editorconfig see https://aka.ms/editorconfigdocs | |
# !!! EditorConfig files are read top to bottom. If there are multiple properties | |
# with the same name, the most recently found property with that name takes precedence. | |
# Later entries override earlier ones | |
# General direction of this file, is to follow Stylecop ruling as close as possble, | |
# but to deactivate the requirement for comments, and also specify a few styles | |
# which are not predefined by stylecop | |
# This file is separated into multiple sections: | |
# - Default config from here: https://github.com/RehanSaeed/EditorConfig/blob/main/.editorconfig | |
# - RESHARPER SETTINGS | |
# - IDE Diagnostic Settings | |
# - (other) Non-Default overrides | |
################################################ | |
## ## | |
## DEFAULT FROM RehanSaeed ## | |
## ## | |
################################################ | |
# Version: 4.1.1 (Using https://semver.org/) | |
# Updated: 2022-05-23 | |
# See https://github.com/RehanSaeed/EditorConfig/releases for release notes. | |
# See https://github.com/RehanSaeed/EditorConfig for updates to this file. | |
# See http://EditorConfig.org for more information about .editorconfig files. | |
########################################## | |
# Common Settings | |
########################################## | |
# This file is the top-most EditorConfig file | |
root = true | |
# All Files | |
[*] | |
charset = utf-8 | |
indent_style = space | |
indent_size = 4 | |
insert_final_newline = true | |
trim_trailing_whitespace = true | |
########################################## | |
# File Extension Settings | |
########################################## | |
# Visual Studio Solution Files | |
[*.sln] | |
indent_style = tab | |
# Visual Studio XML Project Files | |
[*.{csproj,vbproj,vcxproj.filters,proj,projitems,shproj}] | |
indent_size = 2 | |
# XML Configuration Files | |
[*.{xml,config,props,targets,nuspec,resx,ruleset,vsixmanifest,vsct}] | |
indent_size = 2 | |
# JSON Files | |
[*.{json,json5,webmanifest}] | |
indent_size = 2 | |
# YAML Files | |
[*.{yml,yaml}] | |
indent_size = 2 | |
# Markdown Files | |
[*.{md,mdx}] | |
trim_trailing_whitespace = false | |
# Web Files | |
[*.{htm,html,js,jsm,ts,tsx,cjs,cts,ctsx,mjs,mts,mtsx,css,sass,scss,less,pcss,svg,vue}] | |
indent_size = 2 | |
# Batch Files | |
[*.{cmd,bat}] | |
end_of_line = crlf | |
# Bash Files | |
[*.sh] | |
end_of_line = lf | |
# Makefiles | |
[Makefile] | |
indent_style = tab | |
########################################## | |
# Default .NET Code Style Severities | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/configuration-options#scope | |
########################################## | |
[*.{cs,csx,cake,vb,vbx}] | |
# Default Severity for all .NET Code Style rules below | |
dotnet_analyzer_diagnostic.severity = warning | |
########################################## | |
# Language Rules | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/language-rules | |
########################################## | |
# .NET Style Rules | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/language-rules#net-style-rules | |
[*.{cs,csx,cake,vb,vbx}] | |
# "this." and "Me." qualifiers | |
dotnet_style_qualification_for_field = true:warning | |
dotnet_style_qualification_for_property = true:warning | |
dotnet_style_qualification_for_method = true:warning | |
dotnet_style_qualification_for_event = true:warning | |
# Language keywords instead of framework type names for type references | |
dotnet_style_predefined_type_for_locals_parameters_members = true:warning | |
dotnet_style_predefined_type_for_member_access = true:warning | |
# Modifier preferences | |
dotnet_style_require_accessibility_modifiers = always:warning | |
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:warning | |
visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:warning | |
dotnet_style_readonly_field = true:warning | |
# Parentheses preferences | |
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:warning | |
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:warning | |
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:warning | |
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:warning | |
# Expression-level preferences | |
dotnet_style_object_initializer = true:warning | |
dotnet_style_collection_initializer = true:warning | |
dotnet_style_explicit_tuple_names = true:warning | |
dotnet_style_prefer_inferred_tuple_names = true:warning | |
dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning | |
dotnet_style_prefer_auto_properties = true:warning | |
dotnet_style_prefer_conditional_expression_over_assignment = false:suggestion | |
dotnet_diagnostic.IDE0045.severity = suggestion | |
dotnet_style_prefer_conditional_expression_over_return = false:suggestion | |
dotnet_diagnostic.IDE0046.severity = suggestion | |
dotnet_style_prefer_compound_assignment = true:warning | |
dotnet_style_prefer_simplified_interpolation = true:warning | |
dotnet_style_prefer_simplified_boolean_expressions = true:warning | |
# Null-checking preferences | |
dotnet_style_coalesce_expression = true:warning | |
dotnet_style_null_propagation = true:warning | |
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning | |
# File header preferences | |
# file_header_template = <copyright file="{fileName}" company="PROJECT-AUTHOR">\n© PROJECT-AUTHOR\n</copyright> | |
# If you use StyleCop, you'll need to disable SA1636: File header copyright text should match. | |
# dotnet_diagnostic.SA1636.severity = none | |
# Undocumented | |
dotnet_style_operator_placement_when_wrapping = end_of_line:warning | |
csharp_style_prefer_null_check_over_type_check = true:warning | |
# C# Style Rules | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/language-rules#c-style-rules | |
[*.{cs,csx,cake}] | |
# 'var' preferences | |
csharp_style_var_for_built_in_types = true:warning | |
csharp_style_var_when_type_is_apparent = true:warning | |
csharp_style_var_elsewhere = true:warning | |
# Expression-bodied members | |
csharp_style_expression_bodied_methods = true:warning | |
csharp_style_expression_bodied_constructors = true:warning | |
csharp_style_expression_bodied_operators = true:warning | |
csharp_style_expression_bodied_properties = true:warning | |
csharp_style_expression_bodied_indexers = true:warning | |
csharp_style_expression_bodied_accessors = true:warning | |
csharp_style_expression_bodied_lambdas = true:warning | |
csharp_style_expression_bodied_local_functions = true:warning | |
# Pattern matching preferences | |
csharp_style_pattern_matching_over_is_with_cast_check = true:warning | |
csharp_style_pattern_matching_over_as_with_null_check = true:warning | |
csharp_style_prefer_switch_expression = true:warning | |
csharp_style_prefer_pattern_matching = true:warning | |
csharp_style_prefer_not_pattern = true:warning | |
# Expression-level preferences | |
csharp_style_inlined_variable_declaration = true:warning | |
csharp_prefer_simple_default_expression = true:warning | |
csharp_style_pattern_local_over_anonymous_function = true:warning | |
csharp_style_deconstructed_variable_declaration = true:warning | |
csharp_style_prefer_index_operator = true:warning | |
csharp_style_prefer_range_operator = true:warning | |
csharp_style_implicit_object_creation_when_type_is_apparent = true:warning | |
# "Null" checking preferences | |
csharp_style_throw_expression = true:warning | |
csharp_style_conditional_delegate_call = true:warning | |
# Code block preferences | |
csharp_prefer_braces = true:warning | |
csharp_prefer_simple_using_statement = true:suggestion | |
dotnet_diagnostic.IDE0063.severity = suggestion | |
# 'using' directive preferences | |
csharp_using_directive_placement = inside_namespace:warning | |
# Modifier preferences | |
csharp_prefer_static_local_function = true:warning | |
########################################## | |
# Unnecessary Code Rules | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/unnecessary-code-rules | |
########################################## | |
# .NET Unnecessary code rules | |
[*.{cs,csx,cake,vb,vbx}] | |
dotnet_code_quality_unused_parameters = all:warning | |
dotnet_remove_unnecessary_suppression_exclusions = none:warning | |
# C# Unnecessary code rules | |
[*.{cs,csx,cake}] | |
csharp_style_unused_value_expression_statement_preference = discard_variable:suggestion | |
dotnet_diagnostic.IDE0058.severity = suggestion | |
csharp_style_unused_value_assignment_preference = discard_variable:suggestion | |
dotnet_diagnostic.IDE0059.severity = suggestion | |
########################################## | |
# Formatting Rules | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules | |
########################################## | |
# .NET formatting rules | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#net-formatting-rules | |
[*.{cs,csx,cake,vb,vbx}] | |
# Organize using directives | |
dotnet_sort_system_directives_first = true | |
dotnet_separate_import_directive_groups = false | |
# Dotnet namespace options | |
dotnet_style_namespace_match_folder = true:suggestion | |
dotnet_diagnostic.IDE0130.severity = suggestion | |
# C# formatting rules | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#c-formatting-rules | |
[*.{cs,csx,cake}] | |
# Newline options | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#new-line-options | |
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_new_line_between_query_expression_clauses = true | |
# Indentation options | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#indentation-options | |
csharp_indent_case_contents = true | |
csharp_indent_switch_labels = true | |
csharp_indent_labels = no_change | |
csharp_indent_block_contents = true | |
csharp_indent_braces = false | |
csharp_indent_case_contents_when_block = false | |
# Spacing options | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#spacing-options | |
csharp_space_after_cast = false | |
csharp_space_after_keywords_in_control_flow_statements = true | |
csharp_space_between_parentheses = false | |
csharp_space_before_colon_in_inheritance_clause = true | |
csharp_space_after_colon_in_inheritance_clause = true | |
csharp_space_around_binary_operators = before_and_after | |
csharp_space_between_method_declaration_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_call_parameter_list_parentheses = false | |
csharp_space_between_method_call_empty_parameter_list_parentheses = false | |
csharp_space_between_method_call_name_and_opening_parenthesis = false | |
csharp_space_after_comma = true | |
csharp_space_before_comma = false | |
csharp_space_after_dot = false | |
csharp_space_before_dot = false | |
csharp_space_after_semicolon_in_for_statement = true | |
csharp_space_before_semicolon_in_for_statement = false | |
csharp_space_around_declaration_statements = false | |
csharp_space_before_open_square_brackets = false | |
csharp_space_between_empty_square_brackets = false | |
csharp_space_between_square_brackets = false | |
# Wrap options | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#wrap-options | |
csharp_preserve_single_line_statements = false | |
csharp_preserve_single_line_blocks = true | |
# Namespace options | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#namespace-options | |
csharp_style_namespace_declarations = file_scoped:warning | |
########################################## | |
# .NET Naming Rules | |
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/naming-rules | |
########################################## | |
[*.{cs,csx,cake,vb,vbx}] | |
########################################## | |
# Styles | |
########################################## | |
# camel_case_style - Define the camelCase style | |
dotnet_naming_style.camel_case_style.capitalization = camel_case | |
# pascal_case_style - Define the PascalCase style | |
dotnet_naming_style.pascal_case_style.capitalization = pascal_case | |
# first_upper_style - The first character must start with an upper-case character | |
dotnet_naming_style.first_upper_style.capitalization = first_word_upper | |
# prefix_interface_with_i_style - Interfaces must be PascalCase and the first character of an interface must be an 'I' | |
dotnet_naming_style.prefix_interface_with_i_style.capitalization = pascal_case | |
dotnet_naming_style.prefix_interface_with_i_style.required_prefix = I | |
# prefix_type_parameters_with_t_style - Generic Type Parameters must be PascalCase and the first character must be a 'T' | |
dotnet_naming_style.prefix_type_parameters_with_t_style.capitalization = pascal_case | |
dotnet_naming_style.prefix_type_parameters_with_t_style.required_prefix = T | |
# disallowed_style - Anything that has this style applied is marked as disallowed | |
dotnet_naming_style.disallowed_style.capitalization = pascal_case | |
dotnet_naming_style.disallowed_style.required_prefix = ____RULE_VIOLATION____ | |
dotnet_naming_style.disallowed_style.required_suffix = ____RULE_VIOLATION____ | |
# internal_error_style - This style should never occur... if it does, it indicates a bug in file or in the parser using the file | |
dotnet_naming_style.internal_error_style.capitalization = pascal_case | |
dotnet_naming_style.internal_error_style.required_prefix = ____INTERNAL_ERROR____ | |
dotnet_naming_style.internal_error_style.required_suffix = ____INTERNAL_ERROR____ | |
########################################## | |
# .NET Design Guideline Field Naming Rules | |
# Naming rules for fields follow the .NET Framework design guidelines | |
# https://docs.microsoft.com/dotnet/standard/design-guidelines/index | |
########################################## | |
# All public/protected/protected_internal constant fields must be PascalCase | |
# https://docs.microsoft.com/dotnet/standard/design-guidelines/field | |
dotnet_naming_symbols.public_protected_constant_fields_group.applicable_accessibilities = public, protected, protected_internal | |
dotnet_naming_symbols.public_protected_constant_fields_group.required_modifiers = const | |
dotnet_naming_symbols.public_protected_constant_fields_group.applicable_kinds = field | |
dotnet_naming_rule.public_protected_constant_fields_must_be_pascal_case_rule.symbols = public_protected_constant_fields_group | |
dotnet_naming_rule.public_protected_constant_fields_must_be_pascal_case_rule.style = pascal_case_style | |
dotnet_naming_rule.public_protected_constant_fields_must_be_pascal_case_rule.severity = warning | |
# All public/protected/protected_internal static readonly fields must be PascalCase | |
# https://docs.microsoft.com/dotnet/standard/design-guidelines/field | |
dotnet_naming_symbols.public_protected_static_readonly_fields_group.applicable_accessibilities = public, protected, protected_internal | |
dotnet_naming_symbols.public_protected_static_readonly_fields_group.required_modifiers = static, readonly | |
dotnet_naming_symbols.public_protected_static_readonly_fields_group.applicable_kinds = field | |
dotnet_naming_rule.public_protected_static_readonly_fields_must_be_pascal_case_rule.symbols = public_protected_static_readonly_fields_group | |
dotnet_naming_rule.public_protected_static_readonly_fields_must_be_pascal_case_rule.style = pascal_case_style | |
dotnet_naming_rule.public_protected_static_readonly_fields_must_be_pascal_case_rule.severity = warning | |
# No other public/protected/protected_internal fields are allowed | |
# https://docs.microsoft.com/dotnet/standard/design-guidelines/field | |
dotnet_naming_symbols.other_public_protected_fields_group.applicable_accessibilities = public, protected, protected_internal | |
dotnet_naming_symbols.other_public_protected_fields_group.applicable_kinds = field | |
dotnet_naming_rule.other_public_protected_fields_disallowed_rule.symbols = other_public_protected_fields_group | |
dotnet_naming_rule.other_public_protected_fields_disallowed_rule.style = disallowed_style | |
dotnet_naming_rule.other_public_protected_fields_disallowed_rule.severity = error | |
########################################## | |
# StyleCop Field Naming Rules | |
# Naming rules for fields follow the StyleCop analyzers | |
# This does not override any rules using disallowed_style above | |
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers | |
########################################## | |
# All constant fields must be PascalCase | |
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1303.md | |
dotnet_naming_symbols.stylecop_constant_fields_group.applicable_accessibilities = public, internal, protected_internal, protected, private_protected, private | |
dotnet_naming_symbols.stylecop_constant_fields_group.required_modifiers = const | |
dotnet_naming_symbols.stylecop_constant_fields_group.applicable_kinds = field | |
dotnet_naming_rule.stylecop_constant_fields_must_be_pascal_case_rule.symbols = stylecop_constant_fields_group | |
dotnet_naming_rule.stylecop_constant_fields_must_be_pascal_case_rule.style = pascal_case_style | |
dotnet_naming_rule.stylecop_constant_fields_must_be_pascal_case_rule.severity = warning | |
# All static readonly fields must be PascalCase | |
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1311.md | |
dotnet_naming_symbols.stylecop_static_readonly_fields_group.applicable_accessibilities = public, internal, protected_internal, protected, private_protected, private | |
dotnet_naming_symbols.stylecop_static_readonly_fields_group.required_modifiers = static, readonly | |
dotnet_naming_symbols.stylecop_static_readonly_fields_group.applicable_kinds = field | |
dotnet_naming_rule.stylecop_static_readonly_fields_must_be_pascal_case_rule.symbols = stylecop_static_readonly_fields_group | |
dotnet_naming_rule.stylecop_static_readonly_fields_must_be_pascal_case_rule.style = pascal_case_style | |
dotnet_naming_rule.stylecop_static_readonly_fields_must_be_pascal_case_rule.severity = warning | |
# No non-private instance fields are allowed | |
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1401.md | |
dotnet_naming_symbols.stylecop_fields_must_be_private_group.applicable_accessibilities = public, internal, protected_internal, protected, private_protected | |
dotnet_naming_symbols.stylecop_fields_must_be_private_group.applicable_kinds = field | |
dotnet_naming_rule.stylecop_instance_fields_must_be_private_rule.symbols = stylecop_fields_must_be_private_group | |
dotnet_naming_rule.stylecop_instance_fields_must_be_private_rule.style = disallowed_style | |
dotnet_naming_rule.stylecop_instance_fields_must_be_private_rule.severity = error | |
# Private fields must be camelCase | |
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1306.md | |
dotnet_naming_symbols.stylecop_private_fields_group.applicable_accessibilities = private | |
dotnet_naming_symbols.stylecop_private_fields_group.applicable_kinds = field | |
dotnet_naming_rule.stylecop_private_fields_must_be_camel_case_rule.symbols = stylecop_private_fields_group | |
dotnet_naming_rule.stylecop_private_fields_must_be_camel_case_rule.style = camel_case_style | |
dotnet_naming_rule.stylecop_private_fields_must_be_camel_case_rule.severity = warning | |
# Local variables must be camelCase | |
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1312.md | |
dotnet_naming_symbols.stylecop_local_fields_group.applicable_accessibilities = local | |
dotnet_naming_symbols.stylecop_local_fields_group.applicable_kinds = local | |
dotnet_naming_rule.stylecop_local_fields_must_be_camel_case_rule.symbols = stylecop_local_fields_group | |
dotnet_naming_rule.stylecop_local_fields_must_be_camel_case_rule.style = camel_case_style | |
dotnet_naming_rule.stylecop_local_fields_must_be_camel_case_rule.severity = silent | |
# This rule should never fire. However, it's included for at least two purposes: | |
# First, it helps to understand, reason about, and root-case certain types of issues, such as bugs in .editorconfig parsers. | |
# Second, it helps to raise immediate awareness if a new field type is added (as occurred recently in C#). | |
dotnet_naming_symbols.sanity_check_uncovered_field_case_group.applicable_accessibilities = * | |
dotnet_naming_symbols.sanity_check_uncovered_field_case_group.applicable_kinds = field | |
dotnet_naming_rule.sanity_check_uncovered_field_case_rule.symbols = sanity_check_uncovered_field_case_group | |
dotnet_naming_rule.sanity_check_uncovered_field_case_rule.style = internal_error_style | |
dotnet_naming_rule.sanity_check_uncovered_field_case_rule.severity = error | |
########################################## | |
# Other Naming Rules | |
########################################## | |
# All of the following must be PascalCase: | |
# - Namespaces | |
# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-namespaces | |
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1300.md | |
# - Classes and Enumerations | |
# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces | |
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1300.md | |
# - Delegates | |
# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces#names-of-common-types | |
# - Constructors, Properties, Events, Methods | |
# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-type-members | |
dotnet_naming_symbols.element_group.applicable_kinds = namespace, class, enum, struct, delegate, event, method, property | |
dotnet_naming_rule.element_rule.symbols = element_group | |
dotnet_naming_rule.element_rule.style = pascal_case_style | |
dotnet_naming_rule.element_rule.severity = warning | |
# Interfaces use PascalCase and are prefixed with uppercase 'I' | |
# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces | |
dotnet_naming_symbols.interface_group.applicable_kinds = interface | |
dotnet_naming_rule.interface_rule.symbols = interface_group | |
dotnet_naming_rule.interface_rule.style = prefix_interface_with_i_style | |
dotnet_naming_rule.interface_rule.severity = warning | |
# Generics Type Parameters use PascalCase and are prefixed with uppercase 'T' | |
# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces | |
dotnet_naming_symbols.type_parameter_group.applicable_kinds = type_parameter | |
dotnet_naming_rule.type_parameter_rule.symbols = type_parameter_group | |
dotnet_naming_rule.type_parameter_rule.style = prefix_type_parameters_with_t_style | |
dotnet_naming_rule.type_parameter_rule.severity = warning | |
# Function parameters use camelCase | |
# https://docs.microsoft.com/dotnet/standard/design-guidelines/naming-parameters | |
dotnet_naming_symbols.parameters_group.applicable_kinds = parameter | |
dotnet_naming_rule.parameters_rule.symbols = parameters_group | |
dotnet_naming_rule.parameters_rule.style = camel_case_style | |
dotnet_naming_rule.parameters_rule.severity = warning | |
########################################## | |
# License | |
########################################## | |
# The following applies as to the .editorconfig file ONLY, and is | |
# included below for reference, per the requirements of the license | |
# corresponding to this .editorconfig file. | |
# See: https://github.com/RehanSaeed/EditorConfig | |
# | |
# MIT License | |
# | |
# Copyright (c) 2017-2019 Muhammad Rehan Saeed | |
# Copyright (c) 2019 Henry Gabryjelski | |
# | |
# Permission is hereby granted, free of charge, to any | |
# person obtaining a copy of this software and associated | |
# documentation files (the "Software"), to deal in the | |
# Software without restriction, including without limitation | |
# the rights to use, copy, modify, merge, publish, distribute, | |
# sublicense, and/or sell copies of the Software, and to permit | |
# persons to whom the Software is furnished to do so, subject | |
# to the following conditions: | |
# | |
# The above copyright notice and this permission notice shall be | |
# included in all copies or substantial portions of the Software. | |
# | |
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
# OTHER DEALINGS IN THE SOFTWARE. | |
########################################## | |
################################################ | |
## ## | |
## RESHARPER SETTINGS ## | |
## ## | |
################################################ | |
# https://www.jetbrains.com/help/resharper/EditorConfig_Index.html | |
# https://www.jetbrains.com/help/rider/EditorConfig_CSHARP_CSharpCodeStylePageImplSchema.html#resharper_csharp_qualified_using_at_nested_scope | |
resharper_csharp_qualified_using_at_nested_scope=true:hint | |
# break the line before the operator, not after it | |
# https://www.jetbrains.com/help/resharper/EditorConfig_CSHARP_LineBreaksPageSchema.html#resharper_csharp_wrap_before_eq | |
resharper_csharp_wrap_before_eq=true | |
# wrap directly after the open round-brace, not after 'a few' parameters | |
# https://www.jetbrains.com/help/resharper/EditorConfig_CSHARP_LineBreaksPageSchema.html#resharper_csharp_wrap_after_declaration_lpar | |
resharper_csharp_wrap_after_declaration_lpar=true | |
# do not wrap the closing round-brace to the next line, but keep it on the same as the last parameter | |
# https://www.jetbrains.com/help/resharper/EditorConfig_CSHARP_LineBreaksPageSchema.html#resharper_csharp_wrap_before_declaration_rpar | |
resharper_csharp_wrap_before_declaration_rpar=false | |
# allows a maximum of 1 parameters on a single line | |
# improves readability because you do not 'miss' out on parameters which are not on the front of the line | |
# https://www.jetbrains.com/help/resharper/EditorConfig_CSHARP_LineBreaksPageSchema.html#resharper_csharp_max_formal_parameters_on_line | |
resharper_csharp_max_formal_parameters_on_line=1 | |
# breaking the line before the arrow, and not after it, so the arrow is on the front of the line | |
# improved readability as you can instantly identify the body and that there is a expression | |
# https://www.jetbrains.com/help/resharper/EditorConfig_CSHARP_LineBreaksPageSchema.html#resharper_csharp_wrap_before_arrow_with_expressions | |
resharper_csharp_wrap_before_arrow_with_expressions=true | |
# https://www.jetbrains.com/help/resharper/EditorConfig_CSHARP_CSharpIndentStylePageSchema.html#Align_multiline_constructs | |
# do not artificially indent more than the standard indentation just to ... | |
# (JUST DONT!) | |
# ... match indentation of another parameter | |
resharper_csharp_align_multiline_parameter=false | |
# ... match indentation of the '=' sign | |
resharper_csharp_align_linq_query=false | |
# ... match indentation of another binary operator | |
resharper_csharp_align_multiline_binary_expressions_chain=false | |
# ... continue a chained method call | |
resharper_csharp_align_multiline_calls_chain=false | |
# ... indentation of 'new' keyword | |
resharper_csharp_align_multiline_array_and_object_initializer=false | |
# ... the beginning of the switch exp | |
resharper_csharp_align_multiline_switch_expression=false | |
# ... the beginning of a multiline pattern | |
resharper_csharp_align_multiline_property_pattern=false | |
# ... the beginning of a delegate declaration / anonymous block | |
resharper_csharp_indent_anonymous_method_block=false | |
# ... the beginning of the parameter declaration bracket | |
resharper_csharp_align_first_arg_by_paren=false | |
resharper_csharp_align_multiline_argument=false | |
# ... the first tuple parameter / component | |
resharper_csharp_align_tuple_components=false | |
# ... match indentation of the first ternary operand | |
resharper_csharp_align_multiline_expression=false | |
# ... the beginning of the multiline statement | |
resharper_csharp_align_multiline_for_stmt=false | |
################################################ | |
## ## | |
## IDE Diagnostic Settings ## | |
## ## | |
################################################ | |
# IDE0003: Remove qualification (we want 'this'!) | |
# should not be required as of the stylecop declarations above | |
# dotnet_diagnostic.IDE0003.severity = none | |
################################################ | |
## ## | |
## Non-Default overrides ## | |
## ## | |
################################################ | |
[*.cs] | |
# have a empty line between groups of using statements helps readability by alot | |
dotnet_separate_import_directive_groups=true | |
# classic bracing style for c# | |
indent_brace_style=Allman | |
# suggests to convert to expression if it fits on a single line | |
# diviation from default to improve readability by having less structural overhead to comprehend | |
# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/ide0022 | |
csharp_style_expression_bodied_methods=when_on_single_line | |
# increase to warning level | |
# it just makes i hard to work with these files | |
# enabling this warning may be problematic in maui projects as they work with namespace to include platform specific code from platform-folders in a non specific namespace | |
dotnet_style_namespace_match_folder=true:warning | |
# using var helps sometimes, but being explicit should not be punished. | |
# Just suggest var. | |
csharp_style_var_for_built_in_types = true:suggestion | |
csharp_style_var_when_type_is_apparent = true:suggestion | |
csharp_style_var_elsewhere = true:suggestion | |
# undocumented | |
# https://github.com/MicrosoftDocs/visualstudio-docs/issues/3641 | |
# deviate from default. Operator at beginning increases "vertical" readability | |
dotnet_style_operator_placement_when_wrapping = beginning_of_line:warning | |
# documentation analysis off, as we do not require code comments | |
dotnet_diagnostic.SA0001.severity=none | |
# SA1600: Elements should be documented | |
# -> code should only be commented when the complexity is high (which is not desireable) | |
dotnet_diagnostic.SA1600.severity=none | |
dotnet_diagnostic.SA1601.severity=none | |
dotnet_diagnostic.SA1602.severity=none | |
dotnet_diagnostic.SA1611.severity=none | |
dotnet_diagnostic.SA1615.severity=none | |
dotnet_diagnostic.SA1617.severity=none | |
dotnet_diagnostic.SA1618.severity=none | |
dotnet_diagnostic.SA1633.severity=none | |
# SA1028: Code should not contain trailing whitespace | |
dotnet_diagnostic.SA1028.severity = none | |
# do not use expression bodies on constructors. they change too often to be worth it | |
csharp_style_expression_bodied_constructors = false:warning | |
# CA1805: Do not initialize unnecessarily | |
dotnet_diagnostic.CA1805.severity = suggestion |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment