.clang-format

.clang-format — описывает правила форматирования кода с помощью YAML. Поддерживается большинством современных IDE. 90% проблем форматирования решается c помощью.clang-format

BasedOnStyle: Microsoft
IndentWidth: 4
UseTab: Never
TabWidth: 4
BreakBeforeBraces: Allman
ColumnLimit: 140
AccessModifierOffset: -4
SortIncludes: false
AllowShortBlocksOnASingleLine: false
AlignAfterOpenBracket: DontAlign
AllowShortFunctionsOnASingleLine: Inline
PointerAlignment: Left
AllowShortIfStatementsOnASingleLine: true
SpacesBeforeTrailingComments: 2
AllowShortCaseLabelsOnASingleLine: true
IndentCaseLabels: true
AlwaysBreakTemplateDeclarations: Yes

Для оставшихся 10% проблем необходимо иметь документ по стандартам кодирования.

Хороший пример для этого Google C++ Style Guide.

Unreal Engine также имеет статью в документации на эту тему, но это всего лишь статья, полноценным документом это назвать нельзя. В любом случае там полезная информация, рекомендую с ней ознакомиться.

Автоформатирование также можно настроить при коммите в репозиторий с помощью pre-commit .git hook. Об этом рассказывается в видео ниже (справка по git hooks).

Рекомендую для форматирования использовать плагины VS или создать собственный bat файл, в корне проекта:

format_all_files.bat

который будет вызывать .clang-format и форматировать все кодовые файлы проекта, с содержимым:

@echo off

set ProjectRoot=C:\_Projects\_Jenkins\TPS
set SourceCodePath=%ProjectRoot%\Source

FOR /R "%SourceCodePath%" %%f IN (*.cpp, *.h, *.cs) DO (
    clang-format -i "%%f"
    echo %%f
)
PAUSE

Перед этим необходимо путь до .clang-format добавить в переменную среды PATH, либо использовать полный путь до файла. Исполняемый файл .clang-format устанавливается вместе с VS и находится в директории:

c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\Llvm\bin\

Подробнее в видео уроке

Last updated