ClangFormat

概要:インデントスタイル(ソースコード整形)
類似ツール:Artistic Style(AStyle)

イントロダクション

概要:clang-format.exe は、ソースコードの整形を行うプログラムです。

クイックスタート

概要:ClangFormat の使い方

とりあえず使ってみる場合、コマンドプロンプトにて以下を実行(Windowsの場合)

C:\>clang-format.exe test.cpp > new_test.cpp
Can't find usable .clang-format, using LLVM style

C:\>
「使用可能な.clang-formatを見つけることができません。LLVMスタイルをします。」と出力され、実行される。
以下、実行結果。

変更前(test.cpp)変更後(new_test.cpp)
1
2
3
4
5
6
7
8
9
10
11
int funcFoo(int* ary) {
  bool isFoo=true;
  if(isFoo){
    bar((a+2),isFoo);
  }else{
    for(int i=0;i<5;++i){
      std::cout << ary[i] << std::endl;
    }
  }
return 0;
}
int funcFoo(int *ary) {
  bool isFoo = true;
  if (isFoo) {
    bar((a + 2), isFoo);
  } else {
    for (int i = 0; i < 5; ++i) {
      std::cout << ary[i] << std::endl;
    }
  }
  return 0;
}

注釈

個人的な設定は今のところ以下の通り(※以下、一行)

clang-format -i -style="{BasedOnStyle: llvm, AccessModifierOffset: -4, IndentWidth: 4, TabWidth: 4, UseTab: Always, PointerBindsToType: true}" example.cpp
  • インデントにタブを使用する
  • アクセス修飾子(public: protected: private:)のインデントはしない
  • ポインターと参照(*&)を型側に配置

引数(ソースコードとスタイルの指定方法)

概要:ClangFormat でスタイルを指定する方法

任意の書式スタイルを指定したい場合、 -style="{key: value, ...}" オプションを使って設定したり、 clang-format -style=file を使って、 プロジェクトディレクトリー内の .clang-format_clang-format ファイルでスタイル設定をする事ができます。


スタイルオプション(設定項目)

概要:ClangFormat の設定項目の日本語の概要
ドキュメント:Clang ドキュメントClangClang-Format Style Options を参照

ClangFormat との統合

概要:おもに、エディターから ClangFormat を呼び出す手段

配布物に含まれるClangFormatとの統合用のスクリプト
C:/Program Files (x86)/LLVM/share/clang
ファイル タイプ アプリケーション 概要
clang-format-bbedit.applescript Apple Script BBEdit
BBEdit から clang-format を使うためのスクリプト
clang-format-diff.py Python Script  
パッチの再フォーマット用のスクリプト
clang-format-sublime.py Python Script Sublime Text
Sublime Text から clang-format を使うためのスクリプト
clang-format.el Emacs Lisp Emacs
Emacs から clang-format を使うためのスクリプト
clang-format.py Python Script Vim
Vim(windows) から clang-format を使うためのスクリプト

for Visual Studio

alpha build site からVisual Studio(MSVC)の最新のプラグインをダウンロードして下さい。
デフォルトのキーバインディングは、 CTRL-RCtrl-F です。

for Git

C:/Program Files (x86)/LLVM/bin/git-clang-format (Python Script) 参照


for サクラエディター

概要:MS Windows上で動作する日本語テキストエディター

詳細は、 サクラエディターClangFormatとの統合 を参照


for Vim

公式の「share/clang/clang-format.py」はPythonが必要。
(Clang 3.4 ドキュメントの Vimの統合 参照)
(Vim(windows) からPythonインターフェースの呼び出しがうまくいかない場合は、「 VimでPythonインターフェースを使う 」を参照)

手っ取り早くVimで clang-format を試す場合は以下の手順を参照。

1.コマンドラインから対象のソースがあるディレクトリーで、 .clang-format を生成

clang-format -style=llvm -dump-config > .clang-format

2..vimrcを設定

vmap <C-F> :!clang-format<CR>

3.実行

(2.の例だと)ヴィジュアルモード(Shift + V)にて、
clang-formatを適用したい範囲を選択し、Ctrl + Fを押す。