.editorconfig 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. # EditorConfig is awesome: https://EditorConfig.org
  2. # top-most EditorConfig file
  3. root = true
  4. # Don't use tabs for indentation.
  5. [*]
  6. indent_style = space
  7. # (Please don't specify an indent_size here; that has too many unintended consequences.)
  8. # Code files
  9. [*.{cs,csx,vb,vbx}]
  10. indent_size = 4
  11. insert_final_newline = true
  12. # XML project files
  13. [*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
  14. indent_size = 2
  15. # XML config files
  16. [*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]
  17. indent_size = 2
  18. # Powershell files
  19. [*.ps1]
  20. indent_size = 2
  21. # Shell script files
  22. [*.sh]
  23. end_of_line = lf
  24. indent_size = 2
  25. # Dotnet code style settings:
  26. [*.{cs,vb}]
  27. # IDE0055: Fix formatting
  28. dotnet_diagnostic.IDE0055.severity = warning
  29. # Error CA1051 : Do not declare visible instance fields
  30. dotnet_diagnostic.CA1051.severity = none
  31. # Error CA1720 : Identifiers should not contain type names
  32. dotnet_diagnostic.CA1720.severity = none
  33. # Error CA1711: Identifiers should not have incorrect suffix
  34. dotnet_diagnostic.CA1711.severity = none
  35. # Error CA1710: Identifiers should have correct suffix
  36. dotnet_diagnostic.CA1710.severity = none
  37. # Error CA1716: Identifiers should have correct suffix
  38. dotnet_diagnostic.CA1716.severity = none
  39. # Error MA0026: TODO
  40. dotnet_diagnostic.MA0026.severity = none
  41. # Error MA0048 : File name must match type name
  42. dotnet_diagnostic.MA0048.severity = none
  43. # Error MA0016 : Prefer using collection abstraction instead of implementation
  44. dotnet_diagnostic.MA0016.severity = none
  45. # Error MA0017 : Abstract types should not have public or internal constructors
  46. dotnet_diagnostic.MA0017.severity = none
  47. # Error MA0051 : Method is too long
  48. dotnet_diagnostic.MA0051.severity = none
  49. # Error MA0046 : The delegate must return void
  50. dotnet_diagnostic.MA0046.severity = none
  51. # Error MA0097 : A class that implements IComparable<T> or IComparable should override comparison operators
  52. dotnet_diagnostic.MA0097.severity = none
  53. # Error MA0025 : Implement the functionality (or raise NotSupportedException or PlatformNotSupportedException)
  54. dotnet_diagnostic.MA0025.severity = none
  55. # Error MA0091 : Sender parameter should be 'this' for instance events
  56. dotnet_diagnostic.MA0091.severity = none
  57. # Sort using and Import directives with System.* appearing first
  58. dotnet_sort_system_directives_first = true
  59. dotnet_separate_import_directive_groups = false
  60. # Avoid "this." and "Me." if not necessary
  61. dotnet_style_qualification_for_field = false:refactoring
  62. dotnet_style_qualification_for_property = false:refactoring
  63. dotnet_style_qualification_for_method = false:refactoring
  64. dotnet_style_qualification_for_event = false:refactoring
  65. # Use language keywords instead of framework type names for type references
  66. dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
  67. dotnet_style_predefined_type_for_member_access = true:suggestion
  68. # Suggest more modern language features when available
  69. dotnet_style_object_initializer = true:suggestion
  70. dotnet_style_collection_initializer = true:suggestion
  71. dotnet_style_coalesce_expression = true:suggestion
  72. dotnet_style_null_propagation = true:suggestion
  73. dotnet_style_explicit_tuple_names = true:suggestion
  74. # Whitespace options
  75. dotnet_style_allow_multiple_blank_lines_experimental = false
  76. # Constants are PascalCase
  77. dotnet_naming_rule.constants_should_be_pascal_case.severity = suggestion
  78. dotnet_naming_rule.constants_should_be_pascal_case.symbols = constants
  79. dotnet_naming_rule.constants_should_be_pascal_case.style = constant_style
  80. dotnet_naming_symbols.constants.applicable_kinds = field, local
  81. dotnet_naming_symbols.constants.required_modifiers = const
  82. dotnet_naming_style.constant_style.capitalization = pascal_case
  83. # Static fields are camelCase and start with s_
  84. dotnet_naming_rule.static_fields_should_be_camel_case.severity = suggestion
  85. dotnet_naming_rule.static_fields_should_be_camel_case.symbols = static_fields
  86. dotnet_naming_rule.static_fields_should_be_camel_case.style = static_field_style
  87. dotnet_naming_symbols.static_fields.applicable_kinds = field
  88. dotnet_naming_symbols.static_fields.required_modifiers = static
  89. dotnet_naming_style.static_field_style.capitalization = camel_case
  90. dotnet_naming_style.static_field_style.required_prefix = s_
  91. # Instance fields are camelCase and start with _
  92. dotnet_naming_rule.instance_fields_should_be_camel_case.severity = suggestion
  93. dotnet_naming_rule.instance_fields_should_be_camel_case.symbols = instance_fields
  94. dotnet_naming_rule.instance_fields_should_be_camel_case.style = instance_field_style
  95. dotnet_naming_symbols.instance_fields.applicable_kinds = field
  96. dotnet_naming_style.instance_field_style.capitalization = camel_case
  97. dotnet_naming_style.instance_field_style.required_prefix = _
  98. # Locals and parameters are camelCase
  99. dotnet_naming_rule.locals_should_be_camel_case.severity = suggestion
  100. dotnet_naming_rule.locals_should_be_camel_case.symbols = locals_and_parameters
  101. dotnet_naming_rule.locals_should_be_camel_case.style = camel_case_style
  102. dotnet_naming_symbols.locals_and_parameters.applicable_kinds = parameter, local
  103. dotnet_naming_style.camel_case_style.capitalization = camel_case
  104. # Local functions are PascalCase
  105. dotnet_naming_rule.local_functions_should_be_pascal_case.severity = suggestion
  106. dotnet_naming_rule.local_functions_should_be_pascal_case.symbols = local_functions
  107. dotnet_naming_rule.local_functions_should_be_pascal_case.style = local_function_style
  108. dotnet_naming_symbols.local_functions.applicable_kinds = local_function
  109. dotnet_naming_style.local_function_style.capitalization = pascal_case
  110. # By default, name items with PascalCase
  111. dotnet_naming_rule.members_should_be_pascal_case.severity = suggestion
  112. dotnet_naming_rule.members_should_be_pascal_case.symbols = all_members
  113. dotnet_naming_rule.members_should_be_pascal_case.style = pascal_case_style
  114. dotnet_naming_symbols.all_members.applicable_kinds = *
  115. dotnet_naming_style.pascal_case_style.capitalization = pascal_case
  116. # error RS2008: Enable analyzer release tracking for the analyzer project containing rule '{0}'
  117. dotnet_diagnostic.RS2008.severity = none
  118. # IDE0035: Remove unreachable code
  119. dotnet_diagnostic.IDE0035.severity = warning
  120. # IDE0036: Order modifiers
  121. dotnet_diagnostic.IDE0036.severity = warning
  122. # IDE0043: Format string contains invalid placeholder
  123. dotnet_diagnostic.IDE0043.severity = warning
  124. # IDE0044: Make field readonly
  125. dotnet_diagnostic.IDE0044.severity = warning
  126. # RS0016: Only enable if API files are present
  127. dotnet_public_api_analyzer.require_api_files = true
  128. # CSharp code style settings:
  129. [*.cs]
  130. # Newline settings
  131. csharp_new_line_before_open_brace = all
  132. csharp_new_line_before_else = true
  133. csharp_new_line_before_catch = true
  134. csharp_new_line_before_finally = true
  135. csharp_new_line_before_members_in_object_initializers = true
  136. csharp_new_line_before_members_in_anonymous_types = true
  137. csharp_new_line_between_query_expression_clauses = true
  138. # Indentation preferences
  139. csharp_indent_block_contents = true
  140. csharp_indent_braces = false
  141. csharp_indent_case_contents = true
  142. csharp_indent_case_contents_when_block = true
  143. csharp_indent_switch_labels = true
  144. csharp_indent_labels = flush_left
  145. # Whitespace options
  146. csharp_style_allow_embedded_statements_on_same_line_experimental = false
  147. csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false
  148. csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = false
  149. # Prefer "var" everywhere
  150. csharp_style_var_for_built_in_types = true:suggestion
  151. csharp_style_var_when_type_is_apparent = true:suggestion
  152. csharp_style_var_elsewhere = true:suggestion
  153. # Prefer method-like constructs to have a block body
  154. csharp_style_expression_bodied_methods = false:none
  155. csharp_style_expression_bodied_constructors = false:none
  156. csharp_style_expression_bodied_operators = false:none
  157. # Prefer property-like constructs to have an expression-body
  158. csharp_style_expression_bodied_properties = true:none
  159. csharp_style_expression_bodied_indexers = true:none
  160. csharp_style_expression_bodied_accessors = true:none
  161. # Suggest more modern language features when available
  162. csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
  163. csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
  164. csharp_style_inlined_variable_declaration = true:suggestion
  165. csharp_style_throw_expression = true:suggestion
  166. csharp_style_conditional_delegate_call = true:suggestion
  167. # Space preferences
  168. csharp_space_after_cast = true
  169. csharp_space_after_colon_in_inheritance_clause = true
  170. csharp_space_after_comma = true
  171. csharp_space_after_dot = false
  172. csharp_space_after_keywords_in_control_flow_statements = true
  173. csharp_space_after_semicolon_in_for_statement = true
  174. csharp_space_around_binary_operators = before_and_after
  175. csharp_space_around_declaration_statements = do_not_ignore
  176. csharp_space_before_colon_in_inheritance_clause = true
  177. csharp_space_before_comma = false
  178. csharp_space_before_dot = false
  179. csharp_space_before_open_square_brackets = false
  180. csharp_space_before_semicolon_in_for_statement = false
  181. csharp_space_between_empty_square_brackets = false
  182. csharp_space_between_method_call_empty_parameter_list_parentheses = false
  183. csharp_space_between_method_call_name_and_opening_parenthesis = false
  184. csharp_space_between_method_call_parameter_list_parentheses = false
  185. csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
  186. csharp_space_between_method_declaration_name_and_open_parenthesis = false
  187. csharp_space_between_method_declaration_parameter_list_parentheses = false
  188. csharp_space_between_parentheses = false
  189. csharp_space_between_square_brackets = false
  190. # Blocks are allowed
  191. csharp_prefer_braces = true:silent
  192. csharp_preserve_single_line_blocks = true
  193. csharp_preserve_single_line_statements = true
  194. # Currently only enabled for C# due to crash in VB analyzer. VB can be enabled once
  195. # https://github.com/dotnet/roslyn/pull/54259 has been published.
  196. dotnet_style_allow_statement_immediately_after_block_experimental = false
  197. [src/CodeStyle/**.{cs,vb}]
  198. # warning RS0005: Do not use generic CodeAction.Create to create CodeAction
  199. dotnet_diagnostic.RS0005.severity = none
  200. [src/{Analyzers,CodeStyle,Features,Workspaces,EditorFeatures,VisualStudio}/**/*.{cs,vb}]
  201. # IDE0011: Add braces
  202. csharp_prefer_braces = when_multiline:warning
  203. # NOTE: We need the below severity entry for Add Braces due to https://github.com/dotnet/roslyn/issues/44201
  204. dotnet_diagnostic.IDE0011.severity = warning
  205. # IDE0040: Add accessibility modifiers
  206. dotnet_diagnostic.IDE0040.severity = warning
  207. # CONSIDER: Are IDE0051 and IDE0052 too noisy to be warnings for IDE editing scenarios? Should they be made build-only warnings?
  208. # IDE0051: Remove unused private member
  209. dotnet_diagnostic.IDE0051.severity = warning
  210. # IDE0052: Remove unread private member
  211. dotnet_diagnostic.IDE0052.severity = warning
  212. # IDE0059: Unnecessary assignment to a value
  213. dotnet_diagnostic.IDE0059.severity = warning
  214. # IDE0060: Remove unused parameter
  215. dotnet_diagnostic.IDE0060.severity = warning
  216. # CA1012: Abstract types should not have public constructors
  217. dotnet_diagnostic.CA1012.severity = warning
  218. # CA1822: Make member static
  219. dotnet_diagnostic.CA1822.severity = warning
  220. # Prefer "var" everywhere
  221. dotnet_diagnostic.IDE0007.severity = warning
  222. csharp_style_var_for_built_in_types = true:warning
  223. csharp_style_var_when_type_is_apparent = true:warning
  224. csharp_style_var_elsewhere = true:warning
  225. # dotnet_style_allow_multiple_blank_lines_experimental
  226. dotnet_diagnostic.IDE2000.severity = warning
  227. # csharp_style_allow_embedded_statements_on_same_line_experimental
  228. dotnet_diagnostic.IDE2001.severity = warning
  229. # csharp_style_allow_blank_lines_between_consecutive_braces_experimental
  230. dotnet_diagnostic.IDE2002.severity = warning
  231. # dotnet_style_allow_statement_immediately_after_block_experimental
  232. dotnet_diagnostic.IDE2003.severity = warning
  233. # csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental
  234. dotnet_diagnostic.IDE2004.severity = warning
  235. [src/{VisualStudio}/**/*.{cs,vb}]
  236. # CA1822: Make member static
  237. # 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
  238. # Additionally, there is a risk of accidentally breaking an internal API that partners rely on though IVT.
  239. dotnet_diagnostic.CA1822.severity = suggestion