カバレッジ率計測サービスをCoverallsからCodeClimateに乗り換えてみた話

(image)カバレッジ率計測サービスをCoverallsからCodeClimateに乗り換えてみた話
目次

趣味で立ち上げているプロジェクトをこの度、CoverallsからCodeClimateに乗り換えてみたので、その知見の共有。

どんなサービスを使うか

自分がRails/Rubyプロジェクト(not Private)をGitHubに公開するとき、必ず使うSaaS群があって、例えばCIサービスであったりカバレッジ率の計測サービスであったりコードの品質の計測サービスであったりする。それらのサービス群をまとめると下記のようになる。

サービス 用途
Travis CI CI回す
Coveralls カバレッジ率を計測
Code Climate コード品質を計測
Gemnasium Gemのバージョンチェック 既にcloseされたサービスです

※ Publicなレポジトリであれば全て無料で使えます

badges

【図】SaaSの利用により表示できるようになるバッジ群

Coveralls → CodeClimate

今回その内の1つであるCoverallsをCodeClimateに移行してみたのですが、そのきっかけとしてはCircleCIでCodeClimateとのインテグレーションが推奨されていたから。

Travis CI: Using Code Climate with Travis CI

コード品質とカバレッジ率は分散するよりも1つのサービスに集約されて閲覧できたほうが都合がよいし、TravisCIの勧めるCodeClimateに統合してみることとした。

手順

Set Code Climate token

CodeClimateのSettingsからテスト実行時のTokenがゲットできるのでそれを.travis.ymlにセット。

addons:
  code_climate:
    repo_token: adf08323...

Intall CodeClimate reporter

codeclimate-test-reporter をGemfileのtest groupに追加する。

gem "codeclimate-test-reporter", require: false

CodeClimateのセットアップインストラクション通りに書くとこう。spec/rails_helper.rbに書きます。

require "codeclimate-test-reporter"
CodeClimate::TestReporter.start

Simplecovと同居させる

私の環境の場合、既にSimplecovが入っておりましたので、simplecovとインテグレーションさせる場合はちょっと異なるセットアップが必要になります。

require 'simplecov'
require "codeclimate-test-reporter"
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
  SimpleCov::Formatter::HTMLFormatter,
  CodeClimate::TestReporter::Formatter
]
SimpleCov.start "rails"

このようにSimpleCovのformatterにCodeClimate::TestReporter::Formatterを入れてやれば :ok:

codeclimate

これでCode Climate上で品質・カバレッジ率が閲覧できるようになりました。

参考