Code Climate + Circle CI でRubyプロジェクトのコードカバレッジを計測する手順
Code Climate + Circle CI でRubyプロジェクトのコードカバレッジを計測する手順です。 試したのはCircle CIですが、テストが実行できる環境であればTravis CIやJenkinsでも同じ仕組みでできるはず。
概要
- テストに SimpleCov を仕込み、コードカバレッジを計測
SimpleCov のレポーターに codeclimate-test-reporter を追加して、結果を Code Climate に送信
→ Code Climate でカバレッジが集計されるようになります。あとは、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 ページから取得します。(プロジェクトごとに異なります。)
Circle CIのページの右上にある、Project Settingsをクリック。
Enviroment variables に移動し、
CODECLIMATE_REPO_TOKEN を設定します。
あとは、Circle CIでテストを実行すると、Code Climate のページでコードカバレッジが見られるようになるはず。
参考: バッジを貼る
Code Climate の Settings ページに各種形式のURLがあるので、コピペして貼り付ければOK