読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

Code Climate + Circle CI でRubyプロジェクトのコードカバレッジを計測する手順

Ruby

Code Climate + Circle CI でRubyプロジェクトのコードカバレッジを計測する手順です。 試したのはCircle CIですが、テストが実行できる環境であればTravis CIやJenkinsでも同じ仕組みでできるはず。

概要

  1. テストに SimpleCov を仕込み、コードカバレッジを計測
  2. SimpleCov のレポーターに codeclimate-test-reporter を追加して、結果を Code Climate に送信
    Code Climateカバレッジが集計されるようになります。

  3. あとは、Circle CIなりTravis CIなりでテストを実行すればOK

簡単ですね。

1.テストに SimpleCov を仕込んでカバレッジを計測する

SimpleCov をbundlerでインストールします。

Gemfileに以下を追加して、

gem 'simplecov', :require => false, :group => :test

インストール。

$ bundle install

テストの先頭に、SimpleCovの設定を行うコードを追加します。

require 'simplecov'

# カバレッジレポートの出力先を指定
# Circle CIで実行する場合は、ビルド成果物置き場に、
# ローカルで実行する場合は、 ./build/coverage に作成します。
dir = File.join(ENV['CIRCLE_ARTIFACTS'] || 'build', 'coverage')
SimpleCov.coverage_dir(dir)

SimpleCov.start do
  # /vendor/,/spec/ を集計対象から除外
  add_filter '/vendor/'
  add_filter '/spec/'
end

テストを実行すれば、 ./build/coverage/index.html にカバレッジレポートが作成されるはず。

2. SimpleCov に codeclimate-test-reporter を追加する

Gemfileに一行追加して、bundler でインストール

gem 'codeclimate-test-reporter', :require => false, :group => :test
$ bundle install

SimpleCov の設定部分を以下のように変更。レポーターを追加します。

require 'simplecov'
require 'codeclimate-test-reporter'   # ★追加

dir = File.join(ENV['CIRCLE_ARTIFACTS'] || 'build', 'coverage')
SimpleCov.coverage_dir(dir)

SimpleCov.start do
  add_filter '/vendor/'
  add_filter '/spec/'

  # ★追加
  formatter SimpleCov::Formatter::MultiFormatter[
    SimpleCov::Formatter::HTMLFormatter,
    CodeClimate::TestReporter::Formatter
  ]
end

3. Circle CIに 環境変数を追加

最後に、環境変数 CODECLIMATE_REPO_TOKEN を設定します。 これをしないと、レポーターを追加しても 結果の送信はされません。

まず、CODECLIMATE_REPO_TOKEN の値を Code Climate の Settings ページから取得します。(プロジェクトごとに異なります。)

f:id:unageanu:20150322144620p:plain

Circle CIのページの右上にある、Project Settingsをクリック。

f:id:unageanu:20150322144617p:plain

Enviroment variables に移動し、

f:id:unageanu:20150322144618p:plain

CODECLIMATE_REPO_TOKEN を設定します。

f:id:unageanu:20150322144619p:plain

あとは、Circle CIでテストを実行すると、Code Climate のページでコードカバレッジが見られるようになるはず。

f:id:unageanu:20150322144621p:plain

参考: バッジを貼る

Code Climate の Settings ページに各種形式のURLがあるので、コピペして貼り付ければOK

f:id:unageanu:20150322144622p:plain