JenkinsでPythonを静的解析(flake8)
flake8を使って、Pythonのコードを静的解析してみる。
Jenkinsを使ってコミット時に実行するようにすれば、すぐに気づけてお得( ̄ー ̄)
準備
pipのインストール
flake8をインストールする為に、まずはpipのインストール。
どうやらいつの間にかpipのインストールが楽になってたようです。
$ curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
flake8をインストール
pipが入っていれば簡単。
$ pip install flake8
Jenkinsのジョブを作成
以下のジョブを作成する。
$ flake8 .
結果
エラーがある場合
flake8でエラーが出る場合は、「ビルド失敗」と判定される。
Started by user anonymous Building in workspace /var/lib/jenkins/jobs/Flake8 test/workspace Cleaning local Directory . Checking out http://localhost:80/svn/trunk/python at revision '2014-10-31T01:09:51.748 +0900' A hello_world.py At revision 11 [workspace] $ /bin/sh -xe /tmp/hudson838485310037875301.sh + flake8 . ./hello_world.py:3:1: E302 expected 2 blank lines, found 1 Build step 'Execute shell' marked build as failure Finished: FAILURE
エラーが無い場合
一方、エラーが出ない場合=flake8 .の出力が無い場合は、「ビルド成功」と判定される。
Started by an SCM change Building in workspace /var/lib/jenkins/jobs/Flake8 test/workspace Cleaning local Directory . Checking out http://localhost:80/svn/trunk/python at revision '2014-10-31T01:13:05.095 +0900' A hello_world.py At revision 12 no revision recorded for http://localhost:80/svn/trunk/python in the previous build [workspace] $ /bin/sh -xe /tmp/hudson7270646181000268555.sh + flake8 . Finished: SUCCESS
感想
すごく簡単。
コーディング規約はツールでのチェックを入れないと形骸化しそうなので、Jenkinsとの相性が良い。
ちなみに、ビルド成功/失敗の判定については、下記が参考になる。
Things you didn't know about Jenkins - Why does Jenkins think my build succeeded?