123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- # EditorConfig is awesome: https://EditorConfig.org
- # top-most EditorConfig file
- root = true
- # Don't use tabs for indentation.
- [*]
- indent_style = space
- # (Please don't specify an indent_size here; that has too many unintended consequences.)
- # Code files
- [*.{cs,csx,vb,vbx}]
- indent_size = 4
- insert_final_newline = true
- # XML project files
- [*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
- indent_size = 2
- # XML config files
- [*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]
- indent_size = 2
- # Powershell files
- [*.ps1]
- indent_size = 2
- # Shell script files
- [*.sh]
- end_of_line = lf
- indent_size = 2
- # Dotnet code style settings:
- [*.{cs,vb}]
- # IDE0055: Fix formatting
- dotnet_diagnostic.IDE0055.severity = warning
- # Error CA1051 : Do not declare visible instance fields
- dotnet_diagnostic.CA1051.severity = none
- # Error CA1720 : Identifiers should not contain type names
- dotnet_diagnostic.CA1720.severity = none
- # Error CA1711: Identifiers should not have incorrect suffix
- dotnet_diagnostic.CA1711.severity = none
- # Error CA1710: Identifiers should have correct suffix
- dotnet_diagnostic.CA1710.severity = none
- # Error CA1716: Identifiers should have correct suffix
- dotnet_diagnostic.CA1716.severity = none
- # Error MA0026: TODO
- dotnet_diagnostic.MA0026.severity = none
- # Error MA0048 : File name must match type name
- dotnet_diagnostic.MA0048.severity = none
- # Error MA0016 : Prefer using collection abstraction instead of implementation
- dotnet_diagnostic.MA0016.severity = none
- # Error MA0017 : Abstract types should not have public or internal constructors
- dotnet_diagnostic.MA0017.severity = none
- # Error MA0051 : Method is too long
- dotnet_diagnostic.MA0051.severity = none
- # Error MA0046 : The delegate must return void
- dotnet_diagnostic.MA0046.severity = none
- # Error MA0097 : A class that implements IComparable<T> or IComparable should override comparison operators
- dotnet_diagnostic.MA0097.severity = none
- # Error MA0025 : Implement the functionality (or raise NotSupportedException or PlatformNotSupportedException)
- dotnet_diagnostic.MA0025.severity = none
- # Error MA0091 : Sender parameter should be 'this' for instance events
- dotnet_diagnostic.MA0091.severity = none
- # Sort using and Import directives with System.* appearing first
- dotnet_sort_system_directives_first = true
- dotnet_separate_import_directive_groups = false
- # Avoid "this." and "Me." if not necessary
- dotnet_style_qualification_for_field = false:refactoring
- dotnet_style_qualification_for_property = false:refactoring
- dotnet_style_qualification_for_method = false:refactoring
- dotnet_style_qualification_for_event = false:refactoring
- # Use language keywords instead of framework type names for type references
- dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
- dotnet_style_predefined_type_for_member_access = true:suggestion
- # Suggest more modern language features when available
- dotnet_style_object_initializer = true:suggestion
- dotnet_style_collection_initializer = true:suggestion
- dotnet_style_coalesce_expression = true:suggestion
- dotnet_style_null_propagation = true:suggestion
- dotnet_style_explicit_tuple_names = true:suggestion
- # Whitespace options
- dotnet_style_allow_multiple_blank_lines_experimental = false
- # Constants are PascalCase
- dotnet_naming_rule.constants_should_be_pascal_case.severity = suggestion
- dotnet_naming_rule.constants_should_be_pascal_case.symbols = constants
- dotnet_naming_rule.constants_should_be_pascal_case.style = constant_style
- dotnet_naming_symbols.constants.applicable_kinds = field, local
- dotnet_naming_symbols.constants.required_modifiers = const
- dotnet_naming_style.constant_style.capitalization = pascal_case
- # Static fields are camelCase and start with s_
- dotnet_naming_rule.static_fields_should_be_camel_case.severity = suggestion
- dotnet_naming_rule.static_fields_should_be_camel_case.symbols = static_fields
- dotnet_naming_rule.static_fields_should_be_camel_case.style = static_field_style
- dotnet_naming_symbols.static_fields.applicable_kinds = field
- dotnet_naming_symbols.static_fields.required_modifiers = static
- dotnet_naming_style.static_field_style.capitalization = camel_case
- dotnet_naming_style.static_field_style.required_prefix = s_
- # Instance fields are camelCase and start with _
- dotnet_naming_rule.instance_fields_should_be_camel_case.severity = suggestion
- dotnet_naming_rule.instance_fields_should_be_camel_case.symbols = instance_fields
- dotnet_naming_rule.instance_fields_should_be_camel_case.style = instance_field_style
- dotnet_naming_symbols.instance_fields.applicable_kinds = field
- dotnet_naming_style.instance_field_style.capitalization = camel_case
- dotnet_naming_style.instance_field_style.required_prefix = _
- # Locals and parameters are camelCase
- dotnet_naming_rule.locals_should_be_camel_case.severity = suggestion
- dotnet_naming_rule.locals_should_be_camel_case.symbols = locals_and_parameters
- dotnet_naming_rule.locals_should_be_camel_case.style = camel_case_style
- dotnet_naming_symbols.locals_and_parameters.applicable_kinds = parameter, local
- dotnet_naming_style.camel_case_style.capitalization = camel_case
- # Local functions are PascalCase
- dotnet_naming_rule.local_functions_should_be_pascal_case.severity = suggestion
- dotnet_naming_rule.local_functions_should_be_pascal_case.symbols = local_functions
- dotnet_naming_rule.local_functions_should_be_pascal_case.style = local_function_style
- dotnet_naming_symbols.local_functions.applicable_kinds = local_function
- dotnet_naming_style.local_function_style.capitalization = pascal_case
- # By default, name items with PascalCase
- dotnet_naming_rule.members_should_be_pascal_case.severity = suggestion
- dotnet_naming_rule.members_should_be_pascal_case.symbols = all_members
- dotnet_naming_rule.members_should_be_pascal_case.style = pascal_case_style
- dotnet_naming_symbols.all_members.applicable_kinds = *
- dotnet_naming_style.pascal_case_style.capitalization = pascal_case
- # error RS2008: Enable analyzer release tracking for the analyzer project containing rule '{0}'
- dotnet_diagnostic.RS2008.severity = none
- # IDE0035: Remove unreachable code
- dotnet_diagnostic.IDE0035.severity = warning
- # IDE0036: Order modifiers
- dotnet_diagnostic.IDE0036.severity = warning
- # IDE0043: Format string contains invalid placeholder
- dotnet_diagnostic.IDE0043.severity = warning
- # IDE0044: Make field readonly
- dotnet_diagnostic.IDE0044.severity = warning
- # RS0016: Only enable if API files are present
- dotnet_public_api_analyzer.require_api_files = true
- # CSharp code style settings:
- [*.cs]
- # Newline settings
- 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 preferences
- csharp_indent_block_contents = true
- csharp_indent_braces = false
- csharp_indent_case_contents = true
- csharp_indent_case_contents_when_block = true
- csharp_indent_switch_labels = true
- csharp_indent_labels = flush_left
- # Whitespace options
- csharp_style_allow_embedded_statements_on_same_line_experimental = false
- csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false
- csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = false
- # Prefer "var" everywhere
- csharp_style_var_for_built_in_types = true:suggestion
- csharp_style_var_when_type_is_apparent = true:suggestion
- csharp_style_var_elsewhere = true:suggestion
- # Prefer method-like constructs to have a block body
- csharp_style_expression_bodied_methods = false:none
- csharp_style_expression_bodied_constructors = false:none
- csharp_style_expression_bodied_operators = false:none
- # Prefer property-like constructs to have an expression-body
- csharp_style_expression_bodied_properties = true:none
- csharp_style_expression_bodied_indexers = true:none
- csharp_style_expression_bodied_accessors = true:none
- # Suggest more modern language features when available
- csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
- csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
- csharp_style_inlined_variable_declaration = true:suggestion
- csharp_style_throw_expression = true:suggestion
- csharp_style_conditional_delegate_call = true:suggestion
- # Space preferences
- csharp_space_after_cast = true
- 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 = do_not_ignore
- 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
- # Blocks are allowed
- csharp_prefer_braces = true:silent
- csharp_preserve_single_line_blocks = true
- csharp_preserve_single_line_statements = true
- # Currently only enabled for C# due to crash in VB analyzer. VB can be enabled once
- # https://github.com/dotnet/roslyn/pull/54259 has been published.
- dotnet_style_allow_statement_immediately_after_block_experimental = false
- [src/CodeStyle/**.{cs,vb}]
- # warning RS0005: Do not use generic CodeAction.Create to create CodeAction
- dotnet_diagnostic.RS0005.severity = none
- [src/{Analyzers,CodeStyle,Features,Workspaces,EditorFeatures,VisualStudio}/**/*.{cs,vb}]
- # IDE0011: Add braces
- csharp_prefer_braces = when_multiline:warning
- # NOTE: We need the below severity entry for Add Braces due to https://github.com/dotnet/roslyn/issues/44201
- dotnet_diagnostic.IDE0011.severity = warning
- # IDE0040: Add accessibility modifiers
- dotnet_diagnostic.IDE0040.severity = warning
- # CONSIDER: Are IDE0051 and IDE0052 too noisy to be warnings for IDE editing scenarios? Should they be made build-only warnings?
- # IDE0051: Remove unused private member
- dotnet_diagnostic.IDE0051.severity = warning
- # IDE0052: Remove unread private member
- dotnet_diagnostic.IDE0052.severity = warning
- # IDE0059: Unnecessary assignment to a value
- dotnet_diagnostic.IDE0059.severity = warning
- # IDE0060: Remove unused parameter
- dotnet_diagnostic.IDE0060.severity = warning
- # CA1012: Abstract types should not have public constructors
- dotnet_diagnostic.CA1012.severity = warning
- # CA1822: Make member static
- dotnet_diagnostic.CA1822.severity = warning
- # Prefer "var" everywhere
- dotnet_diagnostic.IDE0007.severity = warning
- csharp_style_var_for_built_in_types = true:warning
- csharp_style_var_when_type_is_apparent = true:warning
- csharp_style_var_elsewhere = true:warning
- # dotnet_style_allow_multiple_blank_lines_experimental
- dotnet_diagnostic.IDE2000.severity = warning
- # csharp_style_allow_embedded_statements_on_same_line_experimental
- dotnet_diagnostic.IDE2001.severity = warning
- # csharp_style_allow_blank_lines_between_consecutive_braces_experimental
- dotnet_diagnostic.IDE2002.severity = warning
- # dotnet_style_allow_statement_immediately_after_block_experimental
- dotnet_diagnostic.IDE2003.severity = warning
- # csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental
- dotnet_diagnostic.IDE2004.severity = warning
- [src/{VisualStudio}/**/*.{cs,vb}]
- # CA1822: Make member static
- # Not enforced as a build 'warning' for 'VisualStudio' layer due to large number of false positives from https://github.com/dotnet/roslyn-analyzers/issues/3857 and https://github.com/dotnet/roslyn-analyzers/issues/3858
- # Additionally, there is a risk of accidentally breaking an internal API that partners rely on though IVT.
- dotnet_diagnostic.CA1822.severity = suggestion
|