C言語用コーディングスタイルの設定(VS Code)
この記事の目的
C言語用のコーディングスタイルの設定方法について記述する。
clang_format によるコーディングフォーマット設定
clang_formatはC言語用のフォーマットツールであり、本ツールを用いることでコードを設定値に応じた書式に自動で変換することができる。 VS codeを用いた使用方法を下記に示す。
- 1 Clang-formatの導入
Ubuntuの場合下記コマンドを用いてaptからclang-formatをインストールする。
sudo apt install clang-format
Windowsの場合下記サイトから最新のLLVMをダウンロードし、インストールする。 LLVMをパスに通す設定があるので、"Add LLVM to the system Path for all user" を選択してパスを通す。
次にVS codeを起動し、拡張機能 clang-formatをインストールする。
上記完了後、VS codeでフォルダを開く際のルートディレクトリに".clang-format"を作成して設定を記述する。
例として下記ファイルを保存する。
# ベースとするコーディングスタイル BasedOnStyle: Google # インデント幅4つ IndentWidth: 4 # タブは使わない UseTab: Never # インクルードはソートしない SortIncludes: false # 関数の戻り値の型の後に改行を入れる(ただし宣言ではでは入れない) AlwaysBreakAfterReturnType: AllDefinitions # 関数定義のカッコだけ改行、ifとかwhileとかは改行しない。elseの前は改行する BreakBeforeBraces: Stroustrup # "case"の行でインデントを入れない IndentCaseLabels: false
ファイルを保存する際にフォーマッタを実行したい場合は下記設定を有効にする。 editor.formatOnSave
また、フォーマッタのみを実行したい場合は"shift+ alt + f"でフォーマッタによる変換を実行することができる。
フォーマッタのルールについては下記サイトを参考として設定する。
エディタ設定(改行・スペース等)
上記に加えて、VS Codeの改行・スペース等の設定も統一しておくとコード修正時のトラブルが少なくなる。
VS Codeの改行コード設定はsetting.jsonに下記記述を追加することで設定できる。
# 改行コードを\nに統一(Linux用設定) "files.eol": "\n"
また、tabキーについてはvs codeでtabをスペース4つに置き換える設定をすることができる。 ただし、C言語での開発の場合makefileはtabで入力しないと実行エラーになる箇所があるので下記の様に設定すると良い。
"editor.insertSpaces": true, "editor.tabSize": 4, "[makefile]": { "editor.insertSpaces": false, "editor.detectIndentation": false }
git設定
上記によりvs code でコードが修正された場合の書式は統一されるが、他エディタでの修正が行われた場合にWindows用の改行コードが混在してそのまま gitにpushされる可能性がある。これを防ぐためには、gitに..gitattributesファイルを用意し改行コードを強制的に変換する設定をしておくとより安全である。
*.sh text eol=lf makefile text eol=lf *.c text eol=lf *.cpp text eol=lf *.h text eol=lf