LoginSignup
15

More than 5 years have passed since last update.

Code ClimateをPythonリポジトリに適用する

Last updated at Posted at 2016-01-04

最近名前はよく聞くCode ClimateをGitHubリポジトリ上のPythonソースに適用してみる。

Code Climateとは

About - Code Climate

Code Climate consolidates the results from a suite of static analysis tools into a single, real-time report, giving your team the information it needs to identify hotspots, evaluate new approaches, and improve code quality.

ソースコード静的解析ツールをまとめて色々実行してくれる。
対応言語はRuby、JavaScript、Python、等。

GitHubのIntegrationsの中でも紹介されている。
Install Code Climate · Integrations Directory

Python Engine

Code ClimateのPython用の解析エンジンはpep8(コードスタイルチェック)とradon(循環的複雑度判定)

それぞれ、単体でもコマンドラインで実行可能。

GitHubリポジトリにCode Climateを適用

対象

PythonのソースがコミットされたGitHubリポジトリ。
以下を対象にする。

手順

Code Climate登録

  1. https://codeclimate.com にアクセス
  2. GitHubアカウントでサインアップする
  3. GitHubリポジトリを登録する画面が出てくる

解析

  1. 登録画面で解析対象のリポジトリ名を入力して[Import Repo from GitHub]
    • 今回は vmmhypervisro/golib を入力
    • 00.png
  2. 解析
    • リポジトリを登録すると自動で解析が始まるので終わるまで待つ
  3. 解析完了
    • 以下のような画面が出てくる
    • 01.png

結果を見る

GPA形式で評価結果が出る。

GPA(Grade Point Average)とは、各科目の成績から特定の方式によって算出された学生の成績評価値のこと、あるいはその成績評価方式のことをいう。欧米の大学や高校などで一般的に使われており、留学の際など学力を測る指標となる

GPA.png

4点満点なのでそこそこ良さそうに思えるが、いくつを目標にすればいいんだろうか。

ファイル単位で評価が出力されるため、評価が低いファイルを改善していけば全体のGPAは向上できるはず。
評価基準は循環的複雑度(CC)やコードの重複箇所、等。
今回は1ファイルの評価が特に低かったため、そこを改善していこう。

バッジ登録

結果をバッジとして取得できる。取得したバッジをGitHub/PyPIのREADME等に表示できる。

バッジ取得

評価結果の[codeclimate|<数値>]の箇所(下画像の赤枠部分)をクリックすると

badge_01.png

以下のような画面が出てくる。
この画面の[Markdown]タブを選択して出てくる文字列をコピーして、README.mdにコピペする。

badge_02.png

README.md
[![Code Climate](https://codeclimate.com/github/vmmhypervisor/golib/badges/gpa.svg)](https://codeclimate.com/github/vmmhypervisor/golib)


# golib
Personal python utility library

REAMDME.mdをGitHubリポジトリに反映すると、以下のようにバッジが表示される。

README.png

GPA値が変化したときのバッジの値

READMEの記載内容はそのままで、GPA値は追従される。

GPAを以下のように低下させてみると

01.png

README.mdのバッジの値も更新された(ただし、反映までに時間がかかる)。

02.png

制限事項

Ruby/JavaScript/PHPではテストカバレッジもバッジ表示できるようだが、Pythonは現時点(2016/01)で未サポート。

Python Not Yet Supported:
Though it's in our roadmap, we don't currently support test coverage for Python repositories.

残念。

追記

Coveralls - Test Coverage History & Statistics
はPythonでもカバレッジ集計とバッジ作成ができるらしい。
導入を検討する。

Slack連携

Code Climateの結果をSlackに通知する - Qiita で設定してみた。

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
15