9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LintAdvent Calendar 2016

Day 22

100人に聞いたみんなの.flake8

Posted at

PythonのLintで使われる、flake8の設定ファイル.flake8を調べてみました。
例外にするルールなどが書かれていて、みんなLintのどこに不満を持つかがわかります。
やってみてわかったことですが、みなさん結構無法者ですね

集計条件

GitHubで公開された.flake8を100こ抽出しました。
サンプル数が少ない点は認めていて、今後頑張ろうかと思います。

ignore

ルールの例外です。
例外ルールは一人で同じものを記述しているかもしれませんが、
そういうのは考慮しないで集計しています。

1位 18票

E501 line too long
でましたね。

2位 13票

E402 module level import not at top of file
なるほど。

3位 7票

E128 continuation line under-indented for visual indent
これはたぶん、自動インデントの赴くままに書きたいというやつですね。

以下、得票数のみ記載です。

5票 E111,E226
4票 E114,E121,F401
3票 D203,E133,E241,E251,E302,F403
2票 E123,E125,E126,E221,E228,E261,E731,I100,N802,N803,W191,W391,W503
1票 C901,D100,D101,D102,D103,D104,D105,D200,D204,E113,E12,E122,E129,E201,E202,E203,E211,E222,E231,E242,E266,E303,E305,E4,E41,E5,E702,E711,E712,E721,F811,H306,I201,Q000,W292

max-line-length

一行あたりの文字数です。

11票 100
8票 160
8票 120
6票 80
6票 99
5票 119
3票 200
2票 110
1票 130
1票 92
1票 82

1位が11票ですが、E501が18票入っているので、やはり治安がない感じがしますね。

苦労話

GitHubのAPIでカッコよくささっと集計しようと思ったんですが、ダメでした。まず、ファイル名だけでいい感じにサーチすることができなかった。code?q=filename:.flake8でいけると思いきや、+repo:user_name/repo_nameを指定しないとだめ。
仕方がないので、repo名を持ってくる必要があり、dotfilesで検索をかけてみました。repositories?q=dotfilesをうまくやれば、code?repoが指定できます。しかし問題が。dotfilesだけでも、7万件くらいあったんですが、どう頑張っても1000個以上のデータはAPIではとってこれないんですね。TOKENとかゲットして、リクエスト制限はクリアしたんですが、それでもダメ。
じゃあ1000個だけ取ればいいやって思ったんですけど、最初の1000人は誰も.flake8を持っていなかった。
filenameとrepoの組み合わせではサーチできない、というのが痛すぎる。。
しかたがないので、おなじみのWEBのGitHubで、検索ボックスにfilename:.flake8を入れて、でてくるrepoを心を込めて100件コピペし、それをキーにAPIでcode?q=で検索してなんとかしました。
なお、ファイルのurlをゲットして取得したAPIのレスポンスから、さらにdownload_urlを取得してリクエストを投げると、レスポンスが.flake8の中身になっているので楽チンでした。
また、TOKENとかをゲットしても高速にサーチを繰り返すと403が結構でるので、その辺のハンドリングも必要です。
この辺のコードはいつか[どこか](my repository on GitHub, maybe.)で公開します。

結論

とにかく、文字数制限はみんなに嫌われているような気がする結果です。
ignore = E501max-line-lengthを同時に設定する人はいないので、
合計すると70%の人が文字数制限をよくないと思っています。
100までは自制心がある設定だとしても、約半数の人はそれを超えた設定をしている。

個人的な見解ですが、この結果を見て、エンジニアの良し悪しをどうこう言うのはダメな考え方だと思っていて、むしろみんなこういう設定を積極的にしているんだ、ちゃんと設定すればいいじゃないか、みんなで決めたルールならいいんだ!という感じで勇気をもらうのが良いと思います。

いつか、もっとたくさんサンプルをささっととるコードを書きたいです。

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?