web-dev-qa-db-fra.com

Le format peut-il ajouter des accolades à une seule ligne si des instructions, etc.

Existe-t-il une option permettant au format clang d'ajouter des accolades à toutes les instructions if ()/do/while, etc.?

par exemple

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";
}

En utilisant

$ clang-format --version
clang-format version 3.6.0
48
Adrian Cornish

clang-tidy peut apporter des modifications syntaxiques à votre code à l'aide de FIXITS

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

Actualisé:

clang-tidy est un peu un outil lourd pour cela car il a besoin d'options de compilation pour analyser le fichier, malheureusement le format clang (à partir de la v3.9) n'ajoutera pas d'accolades.

COMPILE_OPTIONS serait le chemin d'inclusion, etc. que vous utilisez pour compiler le fichier, c'est-à-dire -std=c++14 -stdlib=libc++ -O2 -I.

Si tu as un compile_options.json fichier de CMake alors vous pouvez passer le chemin du répertoire dans lequel il est contenu à clang-tidy et il recherchera les options de compilation appropriées pour le fichier:

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