.editorconfigでチーム開発しようよ

本日ご紹介するのはこちらの商品!

ででん!

editorconfig.org

  • え、君インデントがタブ使ってるの??
  • 改行コードがなんか違くないこれ?
  • 意味のない空白だらけのコード
  • PEP8則ってないじゃんか。。

こんなお悩みに答えてくれます。
エディタをまたいで、プロジェクト単位に、設定を共有できるツール です。

これまでは

  • 各人がエディタごと、言語ごとにコーディング規約を規定。
  • ドキュメントを渡されて各個人が使用するエディタでわちゃわちゃ設定。
  • エディタごとにも設定ファイルが違うし

→ プロジェクト内に微妙に違うフォーマットが混在。。

これからは

  • プロジェクトごとにコーディング規約を規定。
  • 最低限のルールに関して.editorconfig で一括管理。
  • コーディング規約に関してもバージョン管理

→ キレイキレイ。読みやすい!余計な修正しなくていい!

書き方

本家の例を拝借。

見るだけでわかる優秀なフォーマット。
要するにファイルの種類ごとにコーディング規約を設定することができるのです。

# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true

# Matches multiple files with brace expansion notation
# Set default charset
[*.{js,py}]
charset = utf-8

# 4 space indentation
[*.py]
indent_style = space
indent_size = 4

# Tab indentation (no size specified)
[Makefile]
indent_style = tab

# Indentation override for all JS under lib directory
[lib/**.js]
indent_style = space
indent_size = 2

# Matches the exact files either package.json or .travis.yml
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2

定義できる項目

wikiにいっぱい書いてあるよ。
使いそうなのはこの辺。

項目名 内容
max_line_length 1行の最大文字数 79
indent_style インデントのスタイル tab
indent_size インデントの文字数 4
end_of_line 改行コード lf
trim_trailing_whitespace 行末の空白を削除するか否か true
charset 文字コード utf-8

対応しているエディタ

f:id:kimoppy126:20190821193449p:plain

いっぱい!! 我らがvimもあります。

導入方法(vimだけ)

vimの場合だけ導入方法書いておきます。 他のエディタの方は適当にどうぞ。

NeoBundleを入れて下記を .vimrc に追記するだけ!

NeoBundle 'editorconfig/editorconfig-vim'

https://github.com/editorconfig/editorconfig-vim

PEP8なeditorconfig

コーディング規約といえばPEP8。 PEP8といえばDjango。

PEP8に則らせようと思ったらこんな感じの .editconfig を置いておけばいい。

[*.py]
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
end_of_line = lf
charset = utf-8
max_line_length = 79

おまけ

djangoのeditorconfig みっけ。
max_line_length = 119 なとこがイケてますね。