nownab.log

nownabe's daily posts

できるだけシンプルにFlake8でPython修行

Posted on Aug 15, 2017

はじめに

この記事では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を使っている場合はこんな感じ。

参考:

おわりに

これでだめな書き方は指摘されるようになったので、指摘を潰していけばまぁまぁ良い書き方ができるようになるのではないかと思う。 Python書いていくぞい 💪


  1. flake8-pep257は古くてルールがコンフリクトしてる ↩︎