1+ # EditorConfig is awesome: https://EditorConfig.org
2+ # Taken from https://raw.githubusercontent.com/dotnet/roslyn/master/.editorconfig
3+
4+ # top-most EditorConfig file
5+ root = true
6+
7+ # Don't use tabs for indentation.
8+ [* ]
9+ indent_style = space
10+ # (Please don't specify an indent_size here; that has too many unintended consequences.)
11+
12+ # Code files
13+ [* .{cs,csx,vb,vbx} ]
14+ indent_size = 4
15+ insert_final_newline = true
16+ charset = utf-8-bom
17+
18+ # XML project files
19+ [* .{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj} ]
20+ indent_size = 2
21+
22+ # XML config files
23+ [* .{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct} ]
24+ indent_size = 2
25+
26+ # JSON files
27+ [* .json ]
28+ indent_size = 2
29+
30+ # Powershell files
31+ [* .ps1 ]
32+ indent_size = 2
33+
34+ # Shell script files
35+ [* .sh ]
36+ end_of_line = lf
37+ indent_size = 2
38+
39+ # Dotnet code style settings:
40+ [* .{cs,vb} ]
41+ # Sort using and Import directives with System.* appearing first
42+ dotnet_sort_system_directives_first = true
43+ # Avoid "this." and "Me." if not necessary
44+ dotnet_style_qualification_for_field = false:refactoring
45+ dotnet_style_qualification_for_property = false:refactoring
46+ dotnet_style_qualification_for_method = false:refactoring
47+ dotnet_style_qualification_for_event = false:refactoring
48+
49+ # Use language keywords instead of framework type names for type references
50+ dotnet_style_predefined_type_for_locals_parameters_members = true :suggestion
51+ dotnet_style_predefined_type_for_member_access = true :suggestion
52+
53+ # Suggest more modern language features when available
54+ dotnet_style_object_initializer = true :suggestion
55+ dotnet_style_collection_initializer = true :suggestion
56+ dotnet_style_coalesce_expression = true :suggestion
57+ dotnet_style_null_propagation = true :suggestion
58+ dotnet_style_explicit_tuple_names = true :suggestion
59+
60+ # Non-private static fields are PascalCase
61+ dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.severity = suggestion
62+ dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.symbols = non_private_static_fields
63+ dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.style = non_private_static_field_style
64+
65+ dotnet_naming_symbols.non_private_static_fields.applicable_kinds = field
66+ dotnet_naming_symbols.non_private_static_fields.applicable_accessibilities = public, protected, internal, protected_internal, private_protected
67+ dotnet_naming_symbols.non_private_static_fields.required_modifiers = static
68+
69+ dotnet_naming_style.non_private_static_field_style.capitalization = pascal_case
70+
71+ # Non-private readonly fields are PascalCase
72+ dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.severity = suggestion
73+ dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.symbols = non_private_readonly_fields
74+ dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.style = non_private_readonly_field_style
75+
76+ dotnet_naming_symbols.non_private_readonly_fields.applicable_kinds = field
77+ dotnet_naming_symbols.non_private_readonly_fields.applicable_accessibilities = public, protected, internal, protected_internal, private_protected
78+ dotnet_naming_symbols.non_private_readonly_fields.required_modifiers = readonly
79+
80+ dotnet_naming_style.non_private_readonly_field_style.capitalization = pascal_case
81+
82+ # Constants are PascalCase
83+ dotnet_naming_rule.constants_should_be_pascal_case.severity = suggestion
84+ dotnet_naming_rule.constants_should_be_pascal_case.symbols = constants
85+ dotnet_naming_rule.constants_should_be_pascal_case.style = constant_style
86+
87+ dotnet_naming_symbols.constants.applicable_kinds = field, local
88+ dotnet_naming_symbols.constants.required_modifiers = const
89+
90+ dotnet_naming_style.constant_style.capitalization = pascal_case
91+
92+ # Static fields are camelCase and start with s_
93+ dotnet_naming_rule.static_fields_should_be_camel_case.severity = suggestion
94+ dotnet_naming_rule.static_fields_should_be_camel_case.symbols = static_fields
95+ dotnet_naming_rule.static_fields_should_be_camel_case.style = static_field_style
96+
97+ dotnet_naming_symbols.static_fields.applicable_kinds = field
98+ dotnet_naming_symbols.static_fields.required_modifiers = static
99+
100+ dotnet_naming_style.static_field_style.capitalization = camel_case
101+ dotnet_naming_style.static_field_style.required_prefix = s_
102+
103+ # Instance fields are camelCase and start with _
104+ dotnet_naming_rule.instance_fields_should_be_camel_case.severity = suggestion
105+ dotnet_naming_rule.instance_fields_should_be_camel_case.symbols = instance_fields
106+ dotnet_naming_rule.instance_fields_should_be_camel_case.style = instance_field_style
107+
108+ dotnet_naming_symbols.instance_fields.applicable_kinds = field
109+
110+ dotnet_naming_style.instance_field_style.capitalization = camel_case
111+ dotnet_naming_style.instance_field_style.required_prefix = _
112+
113+ # Locals and parameters are camelCase
114+ dotnet_naming_rule.locals_should_be_camel_case.severity = suggestion
115+ dotnet_naming_rule.locals_should_be_camel_case.symbols = locals_and_parameters
116+ dotnet_naming_rule.locals_should_be_camel_case.style = camel_case_style
117+
118+ dotnet_naming_symbols.locals_and_parameters.applicable_kinds = parameter, local
119+
120+ dotnet_naming_style.camel_case_style.capitalization = camel_case
121+
122+ # Local functions are PascalCase
123+ dotnet_naming_rule.local_functions_should_be_pascal_case.severity = suggestion
124+ dotnet_naming_rule.local_functions_should_be_pascal_case.symbols = local_functions
125+ dotnet_naming_rule.local_functions_should_be_pascal_case.style = local_function_style
126+
127+ dotnet_naming_symbols.local_functions.applicable_kinds = local_function
128+
129+ dotnet_naming_style.local_function_style.capitalization = pascal_case
130+
131+ # By default, name items with PascalCase
132+ dotnet_naming_rule.members_should_be_pascal_case.severity = suggestion
133+ dotnet_naming_rule.members_should_be_pascal_case.symbols = all_members
134+ dotnet_naming_rule.members_should_be_pascal_case.style = pascal_case_style
135+
136+ dotnet_naming_symbols.all_members.applicable_kinds = *
137+
138+ dotnet_naming_style.pascal_case_style.capitalization = pascal_case
139+
140+ # IDE0073: File header
141+ dotnet_diagnostic.IDE0073.severity = warning
142+ file_header_template = Licensed under the Apache License, Version 2 .0 (the " License" ).\nSee the LICENSE file in the project root for more information.
143+
144+ # CSharp code style settings:
145+ [* .cs ]
146+ # Newline settings
147+ csharp_new_line_before_open_brace = all
148+ csharp_new_line_before_else = true
149+ csharp_new_line_before_catch = true
150+ csharp_new_line_before_finally = true
151+ csharp_new_line_before_members_in_object_initializers = true
152+ csharp_new_line_before_members_in_anonymous_types = true
153+ csharp_new_line_between_query_expression_clauses = true
154+
155+ # Indentation preferences
156+ csharp_indent_block_contents = true
157+ csharp_indent_braces = false
158+ csharp_indent_case_contents = true
159+ csharp_indent_case_contents_when_block = true
160+ csharp_indent_switch_labels = true
161+ csharp_indent_labels = flush_left
162+
163+ # Prefer "var" everywhere
164+ csharp_style_var_for_built_in_types = true :suggestion
165+ csharp_style_var_when_type_is_apparent = true :suggestion
166+ csharp_style_var_elsewhere = true :suggestion
167+
168+ # Prefer method-like constructs to have a block body
169+ csharp_style_expression_bodied_methods = true :none
170+ csharp_style_expression_bodied_constructors = true :none
171+ csharp_style_expression_bodied_operators = true :none
172+
173+ # Prefer property-like constructs to have an expression-body
174+ csharp_style_expression_bodied_properties = true :none
175+ csharp_style_expression_bodied_indexers = true :none
176+ csharp_style_expression_bodied_accessors = true :none
177+
178+ # Suggest more modern language features when available
179+ csharp_style_pattern_matching_over_is_with_cast_check = true :suggestion
180+ csharp_style_pattern_matching_over_as_with_null_check = true :suggestion
181+ csharp_style_inlined_variable_declaration = true :suggestion
182+ csharp_style_throw_expression = true :suggestion
183+ csharp_style_conditional_delegate_call = true :suggestion
184+
185+ # Space preferences
186+ csharp_space_after_cast = false
187+ csharp_space_after_colon_in_inheritance_clause = true
188+ csharp_space_after_comma = true
189+ csharp_space_after_dot = false
190+ csharp_space_after_keywords_in_control_flow_statements = true
191+ csharp_space_after_semicolon_in_for_statement = true
192+ csharp_space_around_binary_operators = before_and_after
193+ csharp_space_around_declaration_statements = do_not_ignore
194+ csharp_space_before_colon_in_inheritance_clause = true
195+ csharp_space_before_comma = false
196+ csharp_space_before_dot = false
197+ csharp_space_before_open_square_brackets = false
198+ csharp_space_before_semicolon_in_for_statement = false
199+ csharp_space_between_empty_square_brackets = false
200+ csharp_space_between_method_call_empty_parameter_list_parentheses = false
201+ csharp_space_between_method_call_name_and_opening_parenthesis = false
202+ csharp_space_between_method_call_parameter_list_parentheses = false
203+ csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
204+ csharp_space_between_method_declaration_name_and_open_parenthesis = false
205+ csharp_space_between_method_declaration_parameter_list_parentheses = false
206+ csharp_space_between_parentheses = false
207+ csharp_space_between_square_brackets = false
208+
209+ # Blocks are allowed
210+ csharp_prefer_braces = true :silent
211+ csharp_preserve_single_line_blocks = true
212+ csharp_preserve_single_line_statements = true
213+
214+ # warning RS0037: PublicAPI.txt is missing '#nullable enable'
215+ dotnet_diagnostic.RS0037.severity = none
216+
217+ [src/CodeStyle/** .{cs,vb} ]
218+ # warning RS0005: Do not use generic CodeAction.Create to create CodeAction
219+ dotnet_diagnostic.RS0005.severity = none
0 commit comments