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

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

например

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

to

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

используя

$ clang-format --version
clang-format version 3.6.0

1 ответов


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

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

обновление:

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

COMPILE_OPTIONS будет включать пути и т. д., которые вы используете для компиляции файла, т. е. -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