web-dev-qa-db-ja.com

ステートメントなどの場合、clang形式で単一の行に中括弧を追加できます

すべてのif()/ do/whileステートメントなどに中括弧を追加するためのclang-formatのオプションはありますか?

例えば

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
48
Adrian Cornish

clang-tidyは、FIXITSを使用してコードに構文の変更を加えることができます

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

更新しました:

clang-tidyは、ファイルを解析するためのコンパイルオプションを必要とするため、これには少し重いツールです。残念ながら、clang形式(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
31
jbcoe