Подтвердить что ты не робот

Может ли clang-формат добавлять фигурные скобки в одну строку, если утверждения и т.д.

Есть ли опция для clang-format для добавления фигурных скобок ко всем операторам if()/do/while и т.д.

например,

if( i == 42 )
   std::cout << "You found the meaning of life\n";
else
   std::cout << "Wrong!\n";

к

if( i == 42 )
{
   std::cout << "You found the meaning of life\n";
}
else
{
   std::cout << "Wrong!\n";
}

Использование

$ clang-format --version
clang-format version 3.6.0
4b9b3361

Ответ 1

clang-tidy может делать синтаксические изменения в вашем коде с помощью FIXITS

clang-tidy YOUR_FILE.cpp -fix -checks="readability-braces-around-statements" -- COMPILE_OPTIONS

Обновлено:

clang-tidy - это немного тяжелый инструмент для этого, поскольку ему нужно компилировать параметры для синтаксического анализа файла, к сожалению, clang-format (начиная с версии 3.9) не будет добавлять фигурные скобки.

COMPILE_OPTIONS будет include paths и т.д., которые вы используете для компиляции файла, т.е. -std=c++14 -stdlib=libc++ -O2 -I.

Если у вас есть файл compile_options.json от CMake, вы можете передать путь к каталогу, в котором он содержится, в clang-tidy, и он будет искать соответствующие параметры компиляции для файла:

clang-tidy YOUR_FILE.cpp -fix -checks="readability-braces-around-statements" -p COMPILE_OPTIONS_DIR