clang-formatのスタイル設定

clang-formatはC/C++/Objective-Cソースコードを整形するツールです。「美しいフォーマット」について自分で考えるのが面倒になってきたので導入しました。動作例などは以下を参照してください。

歌舞伎座 tech #2 LT 資料 · GitHub

スタイルオプションは以下のページが参考になります。

ClangFormatスタイルオプション — Algo13 2015.10.04 ドキュメント

私は次のようなスクリプトを書いて,リポジトリに突っ込んでいます。

#!/bin/zsh
ls src/**/*.{cpp,h} | xargs clang-format -i -style="{ BasedOnStyle: LLVM, Standard: Cpp11, ColumnLimit: 0, Cpp11BracedListStyle: false }"
  • ポインタの*や参照の&を付ける位置はint *pのように変数側に付ける派だったり,インデントはスペースで2文字分派だったりするので,BasedOnStyle: LLVMを基本としています
  • C++03縛りとかは別に無いのでStandard: Cpp11にしています
  • ColumnLimit: 0は長い行の途中に自動で改行を入れる処理を無効にするオプションです。clang-formatが入れてくれる改行の位置が私の美的センス(笑)と離れているような気がするので,改行位置を自分で決めるために無効にしています
  • { 1, 2, 3 }のようにリストリテラルの内側にはスペースを入れたいのでCpp11BracedListStyle: falseとしています