Visual Studio CodeでC++ソースを自分好みにフォーマットしたい

XcodeでC++書いてたら壊滅的なコードフォーマットでまともに書ける状態じゃなかったので、とりあえずVScodeで整形をかけられるようにしたい。
しかしなかなか知識ゼロから構築するところまで書いてくれてるところが見つからなくて、実際にフォーマットできるようになるまでだいぶ時間がかかったので情報をまとめてメモしておきます。

clang-formatコマンドを使う方法が移植性高そうで好みだったのでその方法を紹介します。(ツールの性質上、C++以外でも使えます。検索的な理由からC++としています。)

VScodeにclang-formatをインストールする

拡張機能から入れるだけです。
スクリーンショット 2019-10-08 13.14.53.png

clang-formatを入れる

拡張機能を入れただけだとclang-format本体が入ってないのでフォーマットできずエラーが出ます。そのままでは使えないのでコマンドを使えるようにします。
Macだとhomebrewにあるのでインストールします。Windowsでは実践してないのでここには書きません。申し訳ないですが調べてみてください。

% brew install clang-format

clang-formatの設定ファイルを作る

clang-formatに関する設定はVScode内で設定できない?(できる気はするが、色々いじってみても分からなかった)
自力で設定した方が早いです。


clang-formatにはLLVM,Google,Chromium,Mozzila等のテンプレートがあり、そこから選択することができます。当然、カスタマイズしたいですよね?

clang-formatは".clang-format"ファイルが置かれていると、その設定に応じたフォーマットをかけてくれます。カレントディレクトリだけでなく、上位のディレクトリに設置しておけばサブディレクトリにも適用してくれます。

しかし膨大な量の設定を調べるだけでも大変です。ということで、まずはこのコマンドを打ちましょう。

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

参照:http://shinriyo.hateblo.jp/entry/2015/05/11/.clang-format%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9

これで設定できる項目を全部吐き出してくれるので、 ".clang-format" ファイルをそのままソースのある場所、またはその親ディレクトリに突っ込みます。C++に適用するにはLanguage:Cppと設定する必要がありますので、配置したのにエラーが出たり、おかしい場合は中を確認してみてください。

これでVScodeからでも設定を反映してフォーマットされるようになります。VSCodeの設定からファイル保存時の自動フォーマットを有効にしておけば、とても人権のある開発ができますね。

設定をいじろう

-style=Google の Googleを別のテンプレート名に変えれば当然別のテンプレが吐き出されます。一番求めているものに近いファイルを見つけてからカスタマイズした方が早いですね。

設定は宗教によって異なるので設定を個別に取り上げることはしません。
日本語でいい感じにまとめてくれている場所があったので紹介して終わります。

http://yasuharu519.hatenablog.com/entry/2015/12/13/210825

こちらはオプションまで明記されててわかりやすかったです

http://algo13.net/clang/clang-format-style-oputions.html

clang-formatとVSCodeでよいコーディングライフを!

まとめ

あんなに何時間もネットの海をさまよって手に入れた情報なのに、記事にまとめたらスッカスカになってしまった…。結局のところ「clang-formatというフォーマットツールがあって、VSCodeと組み合わせられるよ!」が知りたかった情報でした。この点だけでも参考になれば幸いです。

para7
ゲーム開発などに興味があります。C++が好きです。
https://github.com/para7
ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
コメント
この記事にコメントはありません。
あなたもコメントしてみませんか :)
すでにアカウントを持っている方は
ユーザーは見つかりませんでした