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

目次

概要

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

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 を参照ください。 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-format-editor

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

Clang Format Editor

  • 機能

    • EN / JP: 説明を表示する言語を設定します。
    • UPLOAD (アップロード): 既存の .clang-format ファイルをアップロードすることで、設定を読み込みます。
    • SAVE (保存): 設定を .clang-format ファイルとして保存します。
    • RESET (リセット): 設定を初期化します。
  • 使い方

    1. すでに手元に .clang-format ファイルが存在する場合、「UPLOAD (アップロード)」ボタンをクリックしてアップロードします。
    2. 設定したいオプションの値を選択します。何も設定していないオプションはデフォルトになります。
    3. 「SAVE (保存)」ボタンをクリックし、clang-format ファイルをダウンロードします。ダウンロード後にファイル名の先頭にドットをつけて、.clang-format ファイルにリネームしてください。(ブラウザの仕様上、ドットから始まるファイル名は使用できないため)
  • 更新履歴

    • v0.2.0 (2021/6/5): .clang-format のアップロード機能を追加
    • v0.3.0 (2021/8/28): clang-format 13 に対応

コメント

コメント一覧 (8件)

  • 古い記事に恐縮です。
    clang-format-editor、便利に使わせてもらっています。
    一つ可能なら対応していただきたい点があります。
    save時にファイル名を指定できるようにできませんでしょうか。
    それができると、保存後に移動しないで済むのですが。

    • ご利用ありがとうございます。
      デフォルトの .clang-format 以外のファイル名で保存でする機能の追加を検討させていただきますね。
      作成したのが3年前で当時clang-formatのバージョンは13でしたが、オプションも当時から変わった部分もあるので、そこも更新したいなと思っております。

      フィードバックをいただきありがとうございます。

1 2

コメントする

目次