C++ – clang-format の使い方、全オプションを解説

C++ – clang-format の使い方、全オプションを解説

概要

C++ のフォーマットツール clang-format 及び Visual Studio Code での使い方について解説します。

Advertisement

clang-format

LLVM に付属している主に C++ をターゲットとしたフォーマットツールです。.clang-format という名前の設定ファイルに yaml 形式で設定を記述することで、細かくフォーマット方法を制御できます。

.clang-format の例

BasedOnStyle: LLVM
AccessModifierOffset: -4
ColumnLimit: 80
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
DeriveLineEnding: true
IndentCaseBlocks: true
IndentCaseLabels: false
Language: Cpp
Standard: c++14
BraceWrapping: Custom
  IndentBraces: true

Visual Studio Code で clang-format を使う方法

Visual Studio Code (VS Code) で使用する方法について解説します。他の IDE やエディタで使用する場合は ClangFormat — Clang 12 documentation を参照ください。 VS Code の拡張「C/C++」をインストールすると、clang-format のバイナリが付属しています。

clang-format を実行すると、カレントディレクトリから設定ファイル .clang-format が見つかるまで、親ディレクトリを辿って検索し、最初に見つかった設定ファイルが適用されます。そのため、.clang-format を作成し、プロジェクトのルートディレクトリに配置することをおすすめします。

プロジェクトのディレクトリ構成例

my_project
├─ CMakeLists.txt
├─ .clang-format
└─ src
     └─ main.cpp

VS Code では Shift + Alt + F で開いているファイルに対して、フォーマットが実行できます。 また、貼り付け時にフォーマットを実行する「Format On Paste」、保存時にフォーマットを行う「Format On Save」という設定項目もあるので、必要に応じて有効にしてください。

.clang-format の作成方法

100個以上のオプションがあり、特に指定していないオプションは、ベースとなるフォーマットスタイル BasedOnStyle が適用されます。 まずは、デフォルト設定を決める BasedOnStyle を「LLVM/Google/Chromium/Mozilla/WebKit/Microsoft/GNU」から選択し、好みに応じて、個別の設定項目を追加するやり方で設定ファイルを作成します。

# デフォルト設定
BasedOnStyle: LLVM
# インデント幅
IndentWidth: 4
# 言語
Language: Cpp
Standard: Auto
# 1行あたりの
ColumnLimit: 120
# 改行コード
UseCRLF: false
# 個別の設定項目を以下似追加
# AccessModifierOffset: -4

全パラメータは Clang-Format Style Options — Clang 12 documentation に記載されています。

日本語の解説を見ながら、.clang-format を作成できるツール clang-format-editor を用意したので、こちらで説明を見ながら、自分に合った設定を探してください。

Clang Format Editor