Gerar um arquivo EditorConfig

Os arquivos EditorConfig ajudam a manter seu código consistente ao definir formatos e estilos de código. Essas convenções permitem que o Visual Studio ofereça correções automáticas de estilo e formato para limpar o documento. Para desenvolvedores em C#, o IntelliCode pode inferir nas convenções de formatação e estilo de código para criar dinamicamente um arquivo EditorConfig.

Você pode adicionar um arquivo gerado pelo IntelliCode EditorConfig no nível do projeto ou solução no Visual Studio (ou para uma pasta de solução). Para adicionar um arquivo EditorConfig previamente populado, clique com o botão direito do mouse no local desejado no Gerenciador de Soluções e escolha Adicionar > Novo EditorConfig (IntelliCode)

Adicionar o arquivo EditorConfig gerado pelo IntelliCode no Visual Studio

Depois de adicionar o arquivo dessa forma, o IntelliCode o preenche automaticamente com as convenções de estilo de código que ele infere da base de código.

Observação

A inferência de estilo de código é uma versão prévia do recurso e está desabilitada por padrão. Ele pode ser habilitado por meio de ferramentas > Opções > IntelliCode. Ela está disponível apenas para código C# no momento. Para acessar esse recurso, certifique-se de atualizar para a versão de visualização mais recente do Visual Studio 2019.

Para obter mais informações sobre como gerar um arquivo EditorConfig com base em estilos de código na base de código, consulte este artigo de blog.

Aplicar as convenções do EditorConfig

Violações de convenções de estilo de código em um arquivo EditorConfig não aparecem na Lista de Erros nem como "rabiscos" no seu código. No entanto, elas podem ser aplicadas usando o comando Limpeza de Código (Visual Studio 2019) ou o comando Formatar Documento (Visual Studio 2017).

Se estiver usando o Visual Studio 2017 e o comando Formatar Documento não estiver corrigindo suas convenções de estilo, você não poderá fazer correções no estilo do código durante a formatação do documento. Por exemplo, a opção Aplicar preferências de tipo implícitas/explícitas executará as regras de estilo sobre o uso de var. Configure quais problemas são corrigidos usando a caixa de diálogo Opções de formatação. Escolha ferramentas > Opções > Editor de texto > C# > código estilo > formatação > geral > Formatar configurações de documento (experimento).

Referência de convenção inferida

O IntelliCode ainda não dá suporte a todo o conjunto de convenções documentado na referência de configurações de estilo de código. Atualmente, o IntelliCode pode inferir as seguintes convenções de formatação e estilo:

Convenções de formatação

  • csharp_space_between_method_declaration_parameter_list_parentheses
  • csharp_space_between_method_declaration_empty_parameter_list_parentheses
  • csharp_space_between_method_call_name_and_opening_parenthesis
  • csharp_space_between_method_call_parameter_list_parentheses
  • csharp_space_between_method_call_empty_parameter_list_parentheses
  • csharp_space_after_keywords_in_control_flow_statements
  • csharp_space_between_parentheses
  • csharp_space_after_cast
  • csharp_space_after_colon_in_inheritance_clause
  • csharp_space_before_colon_in_inheritance_clause
  • csharp_space_around_binary_operators
  • csharp_indent_switch_labels
  • csharp_indent_case_contents
  • csharp_indent_case_contents_when_block
  • csharp_indent_labels
  • csharp_preserve_single_line_blocks
  • csharp_preserve_single_line_statements
  • csharp_new_line_before_open_brace
  • csharp_new_line_before_else
  • csharp_new_line_before_catch
  • csharp_new_line_before_finally
  • csharp_new_line_before_members_in_object_initializers
  • csharp_new_line_before_members_in_anonymous_types
  • csharp_new_line_between_query_expression_clauses

Convenções de estilo

  • csharp_new_line_before_catch
  • csharp_new_line_before_else
  • csharp_new_line_before_members_in_anonymous_types
  • csharp_new_line_before_members_in_object_initializers
  • csharp_new_line_before_finally_style
  • csharp_new_line_between_query_expression_clauses
  • csharp_prefer_braces
  • csharp_preferred_modifier_order_style
  • csharp_prefer_simple_default_expression
  • csharp_preserve_single_line_blocks
  • csharp_space_after_cast
  • csharp_space_after_keywords_in_control_flow_statements
  • csharp_space_between_method_call_parameter_list_parentheses
  • csharp_space_between_method_declaration_parameter_list_parentheses
  • csharp_space_between_parentheses
  • csharp_style_expression_bodied_accessors
  • csharp_style_expression_bodied_constructors
  • csharp_style_expression_bodied_indexers
  • csharp_style_expression_bodied_methods
  • csharp_style_expression_bodied_operators
  • csharp_style_expression_bodied_properties
  • csharp_style_inlined_variable_declaration
  • csharp_style_pattern_local_over_anonymous_function
  • csharp_style_pattern_matching_over_as_with_null_check
  • csharp_style_var_for_built_in_types
  • csharp_style_var_when_type_is_apparent
  • dotnet_sort_system_directives_first
  • dotnet_style_explicit_tuple_names
  • dotnet_style_object_initializer
  • dotnet_style_predefined_type_for_locals_parameters_members
  • dotnet_style_predefined_type_for_member_access
  • dotnet_style_prefer_inferred_anonymous_type_member_names
  • dotnet_style_qualification_for_event
  • dotnet_style_qualification_for_field
  • dotnet_style_qualification_for_method
  • dotnet_style_qualification_for_property
  • dotnet_style_require_accessibility_modifiers

Consulte também