できるだけシンプルにFlake8でPython修行
はじめに
この記事では Python の良い書き方を身につけるために Vim から Lint ツールを使う方法を紹介する。
Python は前から使う必要があるときに書いていたが、これから書く機会も増えるだろうから本格的に学ぼうと考えている。 そこで、良い書き方を身につけるために Lint 系のツールを導入した。
結論
Flake8 に以下のプラグインを入れて使うのが最強っぽい。
- hacking
- flake8-import-order
- flake8-docstrings
Flake8
Flake8: Your Tool For Style Guide Enforcement — flake8 3.4.1 documentation
Flake8 は Python のコードチェックツールである。 複数のコードチェックツールのラッパーであり、つまり広範囲のコードチェックをやってくれる。
Python の Lint で調べると PEP 8 やら pyflakes やら色々見つかるが、とりあえず Flake8 だけ入れておけば良い。
参考:
Flake8のプラグイン
Flake8 はプラグイン機構を持っており、プラグインによってより厳しくチェックできる。
有名なプラグインに OpenStack の Style Guildelines のルールをチェックする hacking がある。 OpenStack Docs: hacking: OpenStack Hacking Guideline Enforcement
今回の目的は修行で厳しければ厳しいほどありがたいため以下のプラグインを導入した。
- hacking
- flake8-import-order
- flake8-docstrings1
- pep8-naming
- flake8-double-quotes
参考: Python の Lint (文法チェッカ) まとめ - flake8 + hacking を使う - - Qiita
インストール
pip でインストールする。
pip install flake8 hacking flake8-import-order flake8-docstrings pep8-naming flake8-double-quotes
Vimで使う
とりあえずここではシンプルに、syntastic を使って保存時にチェックするようにする。 いろいろカスタマイズはできると思う。
" ...
NeoBundle 'scrooloose/syntastic'
" ...
let g:syntastic_mode_map = { 'mode': 'passive', 'active_filetypes': ['python'] }
let g:syntastic_python_checkers = ['flake8']
NeoBundle を使っている場合はこんな感じ。
参考:
- Vimメモ : flake8でPythonのコードをチェックする - もた日記
- vim で python を書いてる時に flake8 をいい感じに実行する - Hack like a rolling stone
おわりに
これでだめな書き方は指摘されるようになったので、指摘を潰していけばまぁまぁ良い書き方ができるようになるのではないかと思う。 Python 書いていくぞい 💪
Footnotes
-
flake8-pep257 は古くてルールがコンフリクトしてる ↩