flake8 で Python のコードをチェックするときにオプションを渡すやつ
いつの間にか pep8 の 79 文字制限のところがゆるくなってたのを教えてもらった。
pep8 そろそろ 120 文字くらいにならんのかな
— ねじめちゃん (@drillbits) 2013, 10月 9
@drillbits 変わったよね、この間。
— V (@voluntas) 2013, 10月 9
@drillbits 99文字になってるよ
— Hajime Nakagami (@hajime_nakagami) 2013, 10月 9
@drillbits "いくつかのチームはより長い行を強く好みます。 あるチームによって、排他的あるいは主導的にメンテナンスされているコードは、 そのチームで合意が取れるのであれば、ウィンドウ幅の制限を80から100に 増やしてもいいでしょう。"
— V (@voluntas) 2013, 10月 9
@drillbits https://t.co/Pw3QpvkmuB
— V (@voluntas) 2013, 10月 9
チーム内で合意がとれるならまあいいんじゃね、的な感じ。
@drillbits 勉強不足 m9
— V (@voluntas) 2013, 10月 9
はい
flake8 という便利なやつがこれをチェックしてくれるけど、デフォルトは 79 文字なので引数とか設定ファイルで文字数を変えてやる必要がある。
Jenkins とかのビルドサーバーなら、コマンドに引数でいいんだけど、ローカルでチェックしたいときちょっとだるい。
http://flake8.readthedocs.org/en/latest/config.html#global
[flake8] max-line-length = 99
こういうのを ~/.config/flake8 に置けばいいけど、これだとチームごとに max-line-length とか違う場合に対応できない。
~/.config/flake8 というパスは flake8 の --config オプションで変えられるけど、vimrc で保存時に自動チェックするようにしてるので、動的に今いるプロジェクトの config のパスを与えるのがよくわからない。
autocmd FileType python autocmd BufWritePost <buffer> :!flake8 %
と思ってたら
setup.cfg でできた。~/.config/flake8 と同じ記法でプロジェクトのルートに置けばいい。setup.py も tox.ini もないプロジェクトあるのでどうかと思ってたんだけど、setup.py なくても setup.cfg で問題なかった。
http://flake8.readthedocs.org/en/latest/config.html#per-project
あと
flake8 はチェックをスルー死体業したい行に # NOQA って書くと無視してくれて便利。あまり使わないけど、Django の settings を階層化するのはよくやるので、そのときにはないと死ぬ。
おまけ
setup.cfg どこでどうやって読んでるのかと思ったら flake8 じゃなくて pep8 で読み込んでたし、単純にディレクトリさかのぼって探してた https://t.co/XvjIzUinCh
— ねじめちゃん (@drillbits) 2013, 10月 9