Соглашения о форматировании C++ EditorConfig

Файлы EditorConfig можно добавить в проект, чтобы настроить форматирование C++ для обеспечения согласованного стиля кода для всех участников проекта. Обе Visual Studio и Visual Studio Code поддерживают встроенную поддержку EditorConfig для каждого из глобальных параметров форматирования Visual Studio C++. Параметры EditorConfig хранятся в .editorconfig файле. Когда этот файл присутствует в проекте, он имеет приоритет над параметрами форматирования Visual Studio.

В этом документе перечислены все параметры форматирования EditorConfig C++, поддерживаемые Visual Studio и Visual Studio Code.

В C++ есть дополнительные .editorconfig параметры, которые не являются параметрами форматирования. Эти параметры задокументированы с помощью функций, которые они настраивают:

Ознакомьтесь также с информацией по смежным темам:

Соглашения о форматировании C++

Параметры editorConfig форматирования C++ префиксируются с cpp_префиксом. Ниже приведен пример того, как .editorconfig может выглядеть файл:

[*.{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

В остальной части этой статьи перечислены все параметры форматирования EditorConfig C++, поддерживаемые Visual Studio и VS Code.

Параметры отступа

Отступные фигурные скобки

  • Имя: cpp_indent_braces
  • Значения: true, false

Отступ каждой линии относительно

  • Имя: cpp_indent_multi_line_relative_to
  • Значения:
    • outermost_parenthesis — При вводе новой строки он отступен относительно внешней открытой скобки.
    • innermost_parenthesis — При вводе новой строки он отступен относительно самой внутренней открытой скобки.
    • statement_begin — При вводе новой строки он отступил относительно начала текущей инструкции.

В скобках выровняйте новые строки при вводе

  • Имя: cpp_indent_within_parentheses
  • Значения:
    • align_to_parenthesis — выравнивание содержимого до открытия круглых скобок.
    • indent — Отступ новых строк.

В существующем коде не используйте параметр для выравнивания новых строк в скобках

  • Имя: cpp_indent_preserve_within_parentheses
  • Значения: true, false

Содержимое регистра отступа

  • Имя: cpp_indent_case_contents
  • Значения: true, false

Метки регистра отступа

  • Имя: cpp_indent_case_labels
  • Значения: true, false

Отступы скобок после оператора case

  • Имя: cpp_indent_case_contents_when_block
  • Значения: true, false

Отступ скобок лямбда-лямбда-объектов, используемых в качестве параметров

  • Имя: cpp_indent_lambda_braces_when_parameter
  • Значения: true, false

Позиция меток goto

  • Имя: cpp_indent_goto_labels
  • Значения:
    • one_left - Один отступ слева
    • leftmost_column — Перемещение в самый левый столбец
    • none - Оставьте отступ

Позиция директив препроцессора

  • Имя: cpp_indent_preprocessor
  • Значения:
    • one_left - Один отступ слева
    • leftmost_column — Перемещение в самый левый столбец
    • none - Оставьте отступ

Описатели отступа доступа

  • Имя: cpp_indent_access_specifiers
  • Значения: true, false

Содержимое пространства имен отступа

  • Имя: cpp_indent_namespace_contents
  • Значения: true, false

Сохранение отступа примечаний

  • Имя: cpp_indent_preserve_comments
  • Значения: true, false

Параметры новой линии

Позиция открытых фигурных скобок для пространств имен

  • Имя: cpp_new_line_before_open_brace_namespace
  • Значения:
    • new_line — Переход к новой строке
    • same_line - Сохраняйте в той же строке, но добавьте пробел перед
    • ignore — Не переместите положение автоматически

Позиция открытых фигурных скобок для типов

  • Имя: cpp_new_line_before_open_brace_type
  • Значения:
    • new_line — Переход к новой строке
    • same_line - Сохраняйте в той же строке, но добавьте пробел перед
    • ignore — Не переместите положение автоматически

Позиция открытых фигурных скобок для функций

  • Имя: cpp_new_line_before_open_brace_function
  • Значения:
    • new_line — Переход к новой строке
    • same_line - Сохраняйте в той же строке, но добавьте пробел перед
    • ignore — Не переместите положение автоматически

Позиция открытых фигурных скобок для блоков управления

  • Имя: cpp_new_line_before_open_brace_block
  • Значения:
    • new_line — Переход к новой строке
    • same_line - Сохраняйте в той же строке, но добавьте пробел перед
    • ignore — Не переместите положение автоматически

Позиция открытых фигурных скобок для лямбда-лямбда-фигурных скобок

  • Имя: cpp_new_line_before_open_brace_lambda
  • Значения:
    • new_line — Переход к новой строке
    • same_line - Сохраняйте в той же строке, но добавьте пробел перед
    • ignore — Не переместите положение автоматически

Поместите фигурные скобки области в отдельные строки

  • Имя: cpp_new_line_scope_braces_on_separate_lines
  • Значения: true, false

Для пустых типов перемещайте закрывающие фигурные скобки в ту же строку, что и открывающие фигурные скобки

  • Имя: cpp_new_line_close_brace_same_line_empty_type
  • Значения: true, false

Для пустых тел функции перемещайте закрывающие фигурные скобки в ту же строку, что и открывающие фигурные скобки

  • Имя: cpp_new_line_close_brace_same_line_empty_function
  • Значения: true, false

Поместите "catch" и аналогичные ключевые слова в новую строку

  • Имя: cpp_new_line_before_catch
  • Значения: true, false

Место "else" в новой строке

  • Имя: cpp_new_line_before_else
  • Значения: true, false

Поместите "в то время" в цикл do-while на новой строке

  • Имя: cpp_new_line_before_while_in_do_while
  • Значения: true, false

Параметры интервала

Интервал между именами функций и открытием круглых скобок списков аргументов

  • Имя: cpp_space_before_function_open_parenthesis
  • Значения:
    • insert — Вставка пробела
    • remove — удаление пробелов
    • ignore - Не изменяйте пробелы

Вставка пробела в скобках списка аргументов

  • Значения имени cpp_space_within_parameter_list_parentheses : true, false

Вставка пробела между скобками, когда список аргументов пуст

  • Имя: cpp_space_between_empty_parameter_list_parentheses
  • Значения: true, false

Вставка пробела между ключевым словом и открытием скобки в операторах потока управления

  • Имя: cpp_space_after_keywords_in_control_flow_statements
  • Значения: true, false

Вставка пространства в круглые скобки инструкции элемента управления

  • Имя: cpp_space_within_control_flow_statement_parentheses
  • Значения: true, false

Вставка пробела перед открытием круглых скобок списков лямбда-аргументов

  • Имя: cpp_space_before_lambda_open_parenthesis
  • Значения: true, false

Вставка пробела в круглые скобки приведения в стиле C

  • Имя: cpp_space_within_cast_parentheses
  • Значения: true, false

Вставка пробела после закрытия скобки приведения в стиле C

  • Имя: cpp_space_after_cast_close_parenthesis
  • Значения: true, false

Вставка пробела в круглые скобки скобок

  • Имя: cpp_space_within_expression_parentheses
  • Значения: true, false

Вставка пробела перед открытием фигурных скобок блоков

  • Имя: cpp_space_before_block_open_brace
  • Значения: true, false

Вставка пробела между пустыми фигурными скобками

  • Имя: cpp_space_between_empty_braces
  • Значения: true, false

Вставка пробела перед открытием фигурной скобки списков инициализации и инициализатора

  • Имя: cpp_space_before_initializer_list_open_brace
  • Значения: true, false

Вставка пространства в фигурные скобки списков инициализации и инициализатора

  • Имя: cpp_space_within_initializer_list_braces
  • Значения: true, false

Сохранение пробелов внутри универсальных списков инициализации и инициализатора

  • Имя: cpp_space_preserve_in_initializer_list
  • Значения: true, false

Вставка пробела перед открытием квадратных квадратных скобок

  • Имя: cpp_space_before_open_square_bracket
  • Значения: true, false

Вставка пробела в квадратные скобки

  • Имя: cpp_space_within_square_brackets
  • Значения: true, false

Вставка пробела перед пустыми квадратными скобками

  • Имя: cpp_space_before_empty_square_brackets
  • Значения: true, false

Вставка пробела между пустыми квадратными скобками

  • Имя: cpp_space_between_empty_square_brackets
  • Значения: true, false

Группировать квадратные скобки для многомерных массивов вместе

  • Имя: cpp_space_group_square_brackets
  • Значения: true, false

Вставка пробела в квадратные скобки для лямбда-лямбда-скобок

  • Имя: cpp_space_within_lambda_brackets
  • Значения: true, false

SpaceBetweenEmptyLambdaBrackets

  • Имя: cpp_space_between_empty_lambda_brackets
  • Значения: true, false

Вставка пробела перед запятыми

  • Имя: cpp_space_before_comma
  • Значения: true, false

Вставка пробела после запятых

  • Имя: cpp_space_after_comma
  • Значения: true, false

Удаление пробелов до и после операторов-членов

  • Имя: cpp_space_remove_around_member_operators
  • Значения: true, false

Вставка пробела перед двоеточием для базовых объявлений типов

  • Имя: cpp_space_before_inheritance_colon
  • Значения: true, false

Вставка пробела перед двоеточием для конструкторов

  • Имя: cpp_space_before_constructor_colon
  • Значения: true, false

Удаление пространства перед точкой с запятой

  • Имя: cpp_space_remove_before_semicolon
  • Значения: true, false

Вставка пробела после запятой

  • Имя: cpp_space_after_semicolon
  • Значения: true, false

Удаление пробелов между унарными операторами и их операндами

  • Имя: cpp_space_remove_around_unary_operator
  • Значения: true, false

Интервал для двоичных операторов

  • Имя: cpp_space_around_binary_operator
  • Значения:
    • insert — Вставка пробелов до и после двоичных операторов.
    • remove — удаление пробелов вокруг двоичных операторов.
    • ignore — Не изменяйте пробелы вокруг двоичных операторов.

Интервал для операторов назначения

  • Имя: cpp_space_around_assignment_operator
  • Значения:
    • insert — Вставка пробелов вокруг операторов назначения.
    • remove — удаление пробелов вокруг операторов назначения.
    • ignore — Не изменяйте пробелы вокруг операторов назначения.

Выравнивание указателей и ссылок

  • Имя: cpp_space_pointer_reference_alignment
  • Значения:
    • left — выровнять по левому краю.
    • center — Выровнять центр.
    • right — выровнять по правому краю.
    • ignore - Оставьте без изменений.

Интервал для условных операторов

  • Имя: cpp_space_around_ternary_operator
  • Значения:
    • insert — Вставка пробелов вокруг условных операторов.
    • remove — удаление пробелов вокруг условных операторов.
    • ignore — Не изменяйте пробелы вокруг условных операторов.

Параметры упаковки

Параметры упаковки блоков

  • Имя: cpp_wrap_preserve_blocks
  • Значения:
    • one_liners — Не обтекайте блоки однострочный код.
    • all_one_line_scopes — Не закрывайте блоки кода, в которых открытые и закрывающие фигурные скобки находятся в следующей строке.
    • never — Всегда применять параметры новых строк для блоков.

См. также