techno_memo

個人用の技術メモ。python・ROS・AI系のソフトウェア・ツールなどの情報を記載

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" を選択してパスを通す。

releases.llvm.org

次にVS codeを起動し、拡張機能 clang-formatをインストールする。

marketplace.visualstudio.com

上記完了後、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"でフォーマッタによる変換を実行することができる。

フォーマッタのルールについては下記サイトを参考として設定する。

pystyle.info

エディタ設定(改行・スペース等)

上記に加えて、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