プロジェクトのコーディングスタイルをIDEに自動適用する(EditorConfig)


開発者がそれぞれ異なるIDEを使用している開発プロジェクトで
効率的にコーディングスタイル(文字コード・改行コード・インデント幅等)を共有する方法として
EditorConfigを紹介します

以下のような内容の.editorconfigファイルを
プロジェクトのディレクトリに配置することで
IDEでプロジェクトを開いた際に自動的にコーディングスタイルが設定されます

.editorconfigの例
root = true

# 基本設定
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 4
tab_width = 4
trim_trailing_whitespace = true
insert_final_newline = true

# Markdownファイルは行末スペースを削除しない
[*.md]
trim_trailing_whitespace = false

# JavaScriptとJSONファイルはインデントをスペース2文字にする
[*.{js,json}]
indent_size = 2

# Makefileはタブでインデントする
[Makefile]
indent_style = tab

設定項目

.editorconfigファイルはINIファイル形式です

  • root = true
    この指定がない場合、上位のディレクトリに遡って継承元とする.editorconfigを検索します
  • #から行末まではコメントです
  • []で囲まれたセクション名
    ルールを適用するファイル名のパターンを指定します
    [*]であれば、すべてのファイルに
    [*.md]であればMarkdownドキュメント(拡張子が.md)のファイルに
    [*.{js,json}]であれば、JavaScript(拡張子が.js)とJSON(拡張子が.json)に適用されます
  • charset
    ファイルの文字コードを指定します
  • end_of_line
    改行コードを指定します
  • indent_style
    インデントに使用する文字tabまたはspaceを指定します
  • indent_size
    1インデントの幅を何文字分にするかを指定します
  • tab_width
    1タブの幅を何文字分にするかを指定します
  • trim_trailing_whitespace
    ファイル保存時に、各行末のスペース文字を自動削除するtrueか、しないfalseを指定します
    上記の例では、Markdownファイル(*.md)のみ行末のスペースを削除しない設定になっています
  • trim_trailing_whitespace
    ファイル保存時に、ファイル末尾を改行文字にするtrueか、何もしないfalseを指定します

これ以外にも言語やIDE特有の設定項目があります
完全なリストは EditorConfigのWiki(英語)を参照してください

各種IDEの対応状況

初期状態で有効な(EditorConfigプラグインがインストールされている)もの

  • IntelliJ IDEA
  • PyCharm
  • RubyMine
  • WebStorm など

プラグインをインストールすると有効になるもの

  • ATOM
  • VisualStudio Code
  • eclipse
  • PhpStrom など