Convenções de formatação do EditorConfig do C++

Você pode adicionar arquivos EditorConfig ao seu projeto para configurar a formatação do C++ para impor um estilo de código consistente para todos que contribuem para o projeto. Tanto Visual Studio quanto Visual Studio Code têm suporte interno do EditorConfig para cada uma das configurações de formatação do C++ do Visual Studio global. As configurações do EditorConfig são armazenadas em um .editorconfig arquivo. Quando esse arquivo está presente em seu projeto, ele tem precedência sobre as configurações de formatação Visual Studio.

Este documento lista todas as configurações de formatação do EditorConfig C++ compatíveis com Visual Studio e Visual Studio Code.

O C++ tem configurações adicionais .editorconfig que não são configurações de formatação. Essas configurações estão documentadas com os recursos que configuram:

Para saber mais sobre:

Convenções de formatação do C++

As configurações de EditorConfig de formatação do C++ são prefixadas com cpp_. Aqui está um exemplo de como um .editorconfig arquivo pode ser:

[*.{c++,cc,cpp,cxx,h,h++,hh,hpp,hxx,inl,ipp,tlh,tli}]

cpp_indent_case_contents_when_block = true
cpp_new_line_before_open_brace_namespace = same_line

O restante deste artigo lista todas as configurações de formatação do EditorConfig C++ compatíveis com Visual Studio e VS Code.

Configurações de recuo

Chaves de recuo

  • Nome: cpp_indent_braces
  • Valores: true, false

Recuar cada linha relativamente para

  • Nome: cpp_indent_multi_line_relative_to
  • Valores:
    • outermost_parenthesis - Quando uma nova linha é digitada, ela é recuada relativamente aos parênteses abertos mais externos.
    • innermost_parenthesis - Quando uma nova linha é digitada, ela é recuada relativamente para o parêntese aberto mais interno.
    • statement_begin - Quando uma nova linha é digitada, ela é recuada relativamente ao início da instrução atual.

Dentro de parênteses, alinhe novas linhas quando as digito

  • Nome: cpp_indent_within_parentheses
  • Valores:
    • align_to_parenthesis - Alinhar o conteúdo para abrir parênteses.
    • indent - Recuar novas linhas.

No código existente, não use a configuração para alinhamento de novas linhas entre parênteses

  • Nome: cpp_indent_preserve_within_parentheses
  • Valores: true, false

Conteúdo do caso de recuo

  • Nome: cpp_indent_case_contents
  • Valores: true, false

Rótulos de maiúsculas e minúsculas de recuo

  • Nome: cpp_indent_case_labels
  • Valores: true, false

Chaves de recuo após uma instrução case

  • Nome: cpp_indent_case_contents_when_block
  • Valores: true, false

Chaves de recuo de lambdas usadas como parâmetros

  • Nome: cpp_indent_lambda_braces_when_parameter
  • Valores: true, false

Posição dos rótulos de goto

  • Nome: cpp_indent_goto_labels
  • Valores:
    • one_left - Um recuo à esquerda
    • leftmost_column - Mover para a coluna mais à esquerda
    • none - Deixe recuado

Posição das diretivas de pré-processador

  • Nome: cpp_indent_preprocessor
  • Valores:
    • one_left - Um recuo à esquerda
    • leftmost_column - Mover para a coluna mais à esquerda
    • none - Deixe recuado

Especificadores de acesso de recuo

  • Nome: cpp_indent_access_specifiers
  • Valores: true, false

Conteúdo do namespace de recuo

  • Nome: cpp_indent_namespace_contents
  • Valores: true, false

Preservar recuo de comentários

  • Nome: cpp_indent_preserve_comments
  • Valores: true, false

Configurações de nova linha

Posição de chaves abertas para namespaces

  • Nome: cpp_new_line_before_open_brace_namespace
  • Valores:
    • new_line - Mover para uma nova linha
    • same_line - Mantenha-se na mesma linha, mas adicione um espaço antes
    • ignore - Não reposicionar automaticamente

Posição de chaves abertas para tipos

  • Nome: cpp_new_line_before_open_brace_type
  • Valores:
    • new_line - Mover para uma nova linha
    • same_line - Mantenha-se na mesma linha, mas adicione um espaço antes
    • ignore - Não reposicionar automaticamente

Posição de chaves abertas para funções

  • Nome: cpp_new_line_before_open_brace_function
  • Valores:
    • new_line - Mover para uma nova linha
    • same_line - Mantenha-se na mesma linha, mas adicione um espaço antes
    • ignore - Não reposicionar automaticamente

Posição de chaves abertas para blocos de controle

  • Nome: cpp_new_line_before_open_brace_block
  • Valores:
    • new_line - Mover para uma nova linha
    • same_line - Mantenha-se na mesma linha, mas adicione um espaço antes
    • ignore - Não reposicionar automaticamente

Posição de chaves abertas para lambdas

  • Nome: cpp_new_line_before_open_brace_lambda
  • Valores:
    • new_line - Mover para uma nova linha
    • same_line - Mantenha-se na mesma linha, mas adicione um espaço antes
    • ignore - Não reposicionar automaticamente

Colocar chaves de escopo em linhas separadas

  • Nome: cpp_new_line_scope_braces_on_separate_lines
  • Valores: true, false

Para tipos vazios, mova as chaves de fechamento para a mesma linha que as chaves de abertura

  • Nome: cpp_new_line_close_brace_same_line_empty_type
  • Valores: true, false

Para corpos de função vazios, mova as chaves de fechamento para a mesma linha que as chaves de abertura

  • Nome: cpp_new_line_close_brace_same_line_empty_function
  • Valores: true, false

Coloque 'catch' e palavras-chave semelhantes em uma nova linha

  • Nome: cpp_new_line_before_catch
  • Valores: true, false

Coloque 'else' em uma nova linha

  • Nome: cpp_new_line_before_else
  • Valores: true, false

Coloque 'while' em um loop do-while em uma nova linha

  • Nome: cpp_new_line_before_while_in_do_while
  • Valores: true, false

Configurações de espaçamento

Espaçamento entre nomes de função e parênteses de abertura de listas de argumentos

  • Nome: cpp_space_before_function_open_parenthesis
  • Valores:
    • insert - Inserir um espaço
    • remove – Remover espaços
    • ignore - Não altere espaços

Inserir espaço dentro de parênteses de uma lista de argumentos

  • Valores de nome cpp_space_within_parameter_list_parentheses : true, false

Inserir espaço entre parênteses quando a lista de argumentos estiver vazia

  • Nome: cpp_space_between_empty_parameter_list_parentheses
  • Valores: true, false

Inserir espaço entre a palavra-chave e o parêntese de abertura em instruções de fluxo de controle

  • Nome: cpp_space_after_keywords_in_control_flow_statements
  • Valores: true, false

Inserir espaço dentro de parênteses de uma instrução de controle

  • Nome: cpp_space_within_control_flow_statement_parentheses
  • Valores: true, false

Inserir espaço antes de abrir parênteses de listas de argumentos lambda

  • Nome: cpp_space_before_lambda_open_parenthesis
  • Valores: true, false

Inserir espaço dentro de parênteses de uma conversão no estilo C

  • Nome: cpp_space_within_cast_parentheses
  • Valores: true, false

Inserir espaço após fechar parênteses da conversão no estilo C

  • Nome: cpp_space_after_cast_close_parenthesis
  • Valores: true, false

Inserir espaço dentro de parênteses de uma expressão parêntese

  • Nome: cpp_space_within_expression_parentheses
  • Valores: true, false

Inserir espaço antes de abrir a chave de blocos

  • Nome: cpp_space_before_block_open_brace
  • Valores: true, false

Inserir espaço entre chaves vazias

  • Nome: cpp_space_between_empty_braces
  • Valores: true, false

Inserir espaço antes de abrir a chave de listas de inicialização e inicializador uniformes

  • Nome: cpp_space_before_initializer_list_open_brace
  • Valores: true, false

Inserir espaço dentro de chaves de listas de inicialização e inicializador uniformes

  • Nome: cpp_space_within_initializer_list_braces
  • Valores: true, false

Preservar espaços dentro de listas de inicialização e inicializador uniformes

  • Nome: cpp_space_preserve_in_initializer_list
  • Valores: true, false

Inserir espaço antes de abrir colchetes

  • Nome: cpp_space_before_open_square_bracket
  • Valores: true, false

Inserir espaço dentro do colchete

  • Nome: cpp_space_within_square_brackets
  • Valores: true, false

Inserir espaço antes de colchetes vazios

  • Nome: cpp_space_before_empty_square_brackets
  • Valores: true, false

Inserir espaço entre colchetes vazios

  • Nome: cpp_space_between_empty_square_brackets
  • Valores: true, false

Agrupar colchetes para matrizes multidimensionais em conjunto

  • Nome: cpp_space_group_square_brackets
  • Valores: true, false

Inserir espaço dentro de colchetes para lambdas

  • Nome: cpp_space_within_lambda_brackets
  • Valores: true, false

SpaceBetweenEmptyLambdaBrackets

  • Nome: cpp_space_between_empty_lambda_brackets
  • Valores: true, false

Inserir espaço antes das vírgulas

  • Nome: cpp_space_before_comma
  • Valores: true, false

Inserir espaço após vírgulas

  • Nome: cpp_space_after_comma
  • Valores: true, false

Remover espaços antes e depois dos operadores membro

  • Nome: cpp_space_remove_around_member_operators
  • Valores: true, false

Inserir espaço antes de dois-pontos para base em declarações de tipo

  • Nome: cpp_space_before_inheritance_colon
  • Valores: true, false

Inserir espaço antes de dois-pontos para construtores

  • Nome: cpp_space_before_constructor_colon
  • Valores: true, false

Remover espaço antes dos ponto-e-vírgula

  • Nome: cpp_space_remove_before_semicolon
  • Valores: true, false

Inserir espaço após ponto-e-vírgula

  • Nome: cpp_space_after_semicolon
  • Valores: true, false

Remover espaços entre operadores unários e seus operandos

  • Nome: cpp_space_remove_around_unary_operator
  • Valores: true, false

Espaçamento para operadores binários

  • Nome: cpp_space_around_binary_operator
  • Valores:
    • insert - Inserir espaços antes e depois de operadores binários.
    • remove – Remover espaços em torno de operadores binários.
    • ignore - Não altere espaços em torno de operadores binários.

Espaçamento para operadores de atribuição

  • Nome: cpp_space_around_assignment_operator
  • Valores:
    • insert - Inserir espaços em torno de operadores de atribuição.
    • remove – Remover espaços em torno de operadores de atribuição.
    • ignore - Não altere espaços em torno de operadores de atribuição.

Alinhamento de ponteiro/referência

  • Nome: cpp_space_pointer_reference_alignment
  • Valores:
    • left - Alinhar à esquerda.
    • center - Alinhar centro.
    • right - Alinhar à direita.
    • ignore - Deixe inalterado.

Espaçamento para operadores condicionais

  • Nome: cpp_space_around_ternary_operator
  • Valores:
    • insert - Inserir espaços em torno de operadores condicionais.
    • remove – Remover espaços em torno de operadores condicionais.
    • ignore - Não altere espaços em torno de operadores condicionais.

Opções de encapsulamento

Opções de encapsulamento para blocos

  • Nome: cpp_wrap_preserve_blocks
  • Valores:
    • one_liners - Não encapsular blocos de código de uma linha.
    • all_one_line_scopes - Não encapsular blocos de código em que as chaves de abertura e fechamento estão na próxima linha.
    • never – Sempre aplique as configurações de Novas Linhas para blocos.

Consulte também