どのようなプログラミング言語であっても、複数人で開発しているとそれぞれが独自の開発スタイルを持ちがちです。その補正としてコードレビューは大事なプロセスになります。
今回はPythonの文法チェックツールであるflake8を紹介します。Siderではflake8を用いたPythonプロジェクトのコードレビュー自動化に対応しています。
flake8のインストール
flake8は pip コマンドでインストールできます。
$ pip install flake8
flake8の使い方
基本的な使い方は flake8 コマンドに続けてファイルまたはディレクトリパスを指定するだけです。
$ flake8 url.py url.py:22:1: H306 imports not in alphabetical order (urlparse, urllib) url.py:30:3: E111 indentation is not a multiple of four url.py:31:1: W293 blank line contains whitespace url.py:58:1: E302 expected 2 blank lines, found 1 :
–statistics オプションを付けると最後に統計が出ます。エラーの多いものから出るので、対応すべき順番付けにもなりそうです。
39 E111 indentation is not a multiple of four 1 E128 continuation line under-indented for visual indent 1 E302 expected 2 blank lines, found 1 10 F821 undefined name 'cmp' 1 H306 imports not in alphabetical order (urlparse, urllib) 3 W291 trailing whitespace 4 W293 blank line contains whitespace 1 W391 blank line at end of file
–show-source オプションをつけるとソースコードのどの部分を修正すれば良いかが分かりやすくなります。
$ flake8 --show-source url.py url.py:22:1: H306 imports not in alphabetical order (urlparse, urllib) import urllib ^ url.py:63:73: W291 trailing whitespace provides a better interface for comparing and manipulating URLs than ^ url.py:108:20: F821 undefined name 'cmp' return cmp(self.to_string(), str(other)) ^
オプションについて
flake8のオプションは次のようになっています。–ignoreで無視するエラーコードを指定したり、–show-pep8でエラーに関係するPEP 8のメッセージを表示してくれます。PEP 8というのはPythonのコーディングスタイルガイドです。
自動変換を行う
インデントや空白行に関する問題を自動解決する際に使えるのが autopep8 です。インストールは pip で行えます。
$ pip install autopep8
後は autopep8 で置き換えるだけです。
$ autopep8 -i url.py
Siderではflake8を用いたPythonプロジェクトのコードレビュー自動化に対応しています。flake8をGitHubへのプッシュに連携して自動レビューするようにしたり、複数人での開発時にはクラウドサービスを利用した運用が便利です。Siderでは tox.ini または setup.cfg を使って設定の変更が可能です。
ぜひ活用してください。
flake8 3.3.0 : Python Package Index