UbuntuにClangFormatをインストール
ClangFormat
PlayGround
以下、または /tool/clang-format にて試すことが可能です。
パッケージリストを更新
インストール前の大切な作業です。
clang-format をインストール
以下のコマンドでclang-format
をインストールします。
使ってみる
main.c
という名前のファイルを作成し、ソースコードを記述します。
ここでは変化を確認しやすくするために、読みづらいコードを書いています。
main.c
を以下のコマンドでフォーマットします。
以下のコマンドでmain.c
を確認します。
main.c
自体は変更されていないことが確認できます。
なお、以下のように-i
オプションを付けると、フォーマット後の内容がmain.c
に上書きされます。
以下のコマンドでmain.c
を確認します。
スタイルをカスタマイズ
clang-format
はスタイルをカスタマイズすることができます。
参考: https://clang.llvm.org/docs/ClangFormatStyleOptions.html
--style="{key: value, ...}"
のようにコマンドのオプションでスタイルを指定する方法と、.clang-format
または_clang-format
という名前で保存したファイルでスタイルを指定する方法があります。
コマンドのオプションでスタイルを指定
以下のコマンドでスタイルを指定してmain.c
をフォーマットします。
.clang-format でスタイルを指定
以下のような.clang-format
ファイルを作成します。
以下のコマンドでmain.c
をフォーマットします。
.clang-format を作成するコマンド
以下のコマンドで.clang-format
ファイルを作成することができます。
以下のコマンドで.clang-format
ファイルの内容を表示します。
TheAlgorithms のスタイル
https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/.clang-format
個人的に好きなスタイルです。
以下のコマンドでダウンロードできます。
優先順位
-
コマンドのオプションでスタイルを指定した場合: そのスタイルが優先されます。
-
コマンドのオプションでスタイルを指定しなかった場合:
.clang-format
ファイルの内容が優先されます。- 入力ファイルの最も近い親ディレクトリにある
.clang-format
ファイルを探そうとします。
- 入力ファイルの最も近い親ディレクトリにある
例えば、以下のようなディレクトリ構造があるとします。
clang-format /home/ubuntu/main.c
を実行した場合、/home/ubuntu/.clang-format
が優先されます。
clang-format /home/ubuntu/cpp/main.cpp
を実行した場合、/home/ubuntu/cpp/_clang-format
が優先されます。
clang-format /home/ubuntu/cpp/test/test.cpp
を実行した場合、/home/ubuntu/cpp/_clang-format
が優先されます。
なお、clang-format --style=file:設定ファイル プログラム
とすることで、指定した設定ファイルを使ってプログラムをフォーマットすることができます。
/home/ubuntu/cpp/test/test.cpp
に/home/ubuntu/.clang-format
の設定を適用するには、以下のようにします。
vim で使う
~/.vimrc
に以下の設定を追加すると、vim
でファイルを保存するたびにclang-format
が実行されます。