君の瞳はまるでルビー - Ruby 関連まとめサイト

rcov でカバレージを計測する

最終更新: 2015-03-31 (火) 21:53:20 (1688d)

目的

RCov を使ってカバレージを計測する方法を簡単に説明します。

RCov は Ruby 1.8 では使えますが、Ruby 1.9 では使えません。 Ruby 1.9 でカバレージを計測するには別の方法を利用する必要があります。

インストール

RCov はネイティブコードを含んでおり、インストールには DEVELOPMENT KIT が必要になります。

以上を参考に DEVELOPMENT KIT をセットアップした後、以下のコマンドを実行してください。

gem install rcov

以下のコマンドを実行し、インストールに成功していることを確認してください。

rcov --version

また、以下のコマンドを実行すると、コマンドの説明が見れることを覚えておくと役に立ちます。

rcov --help

使い方

初めてのカバレージ計測

カバレージを計測するには、ruby コマンドの代わりに rcov コマンドを使って Ruby プログラムを実行します*1

rcov example.rb

ruby コマンドで実行したときと同じようにプログラムが動作します。

通常の ruby コマンドと違うのは、実行後に coverage ディレクトリが作成され、そこに計測結果が格納されることです。

計測結果を見るには、以下の HTML ファイルをブラウザで開いてください。

  • coverage/index.html

以下、表示事例です。

rcov-result.png

実行したプログラムだけではなく、プログラム内で require したソースコードも計測対象となります。

表の内容は以下の通りです。

カバレージ概要
TOTAL COVERAGE全ての行が対象
CODE COVERAGEコメント行や空行は対象外

このページから、さらに各ソースコード毎のカバレージ詳細を見ることもできます。

一度に複数のプログラムを計測

ruby コマンドで実行する場合と違い、rcov コマンドは複数のプログラムを実行できる。

  • プログラムを並べて指定する方法(example1.rb と example2.rb の2つが対象)
rcov example1.rb example2.rb
  • プログラムをパターンで指定する方法(example.rb, example1.rb, example2.rb などなど、その他 example と先頭につくプログラムが対象)
rcov example*.rb
  • ディレクトリにあるプログラムを指定する方法(example ディレクトリにある全てのプログラムが対象)
rcov example/*.rb

プログラムへのコマンドライン引数入力

rcov は引数を計測対象のプログラムと判断します。

計測対象プログラムではなく、プログラムへのコマンドライン引数であることを明確にするため「--」で区切って以下のように書きます。

rcov example1.rb -- 引数1 引数2 引数3

計測対象のプログラムを複数にした場合も同様です。その場合、全てのプログラムに同じコマンドライン引数が入力されます。

計測結果の蓄積し、まとめる

複数回にプログラムを分けて実行し、全ての計測結果を蓄積し、まとめるには --aggregate オプションを使います。

以下、事例です。

rcov --aggregate coverage.rcov example1.rb -- 引数A
rcov --aggregate coverage.rcov example1.rb -- 引数B
rcov --aggregate coverage.rcov example2.rb
  • aggregate オプションを使うと、その後に指定したファイル(この場合は coverage.rcov としている)に計測結果が蓄積されます。ファイル名称は任意です。

計測結果は同様に coverage ディレクトリに作成されます。

計測不要なソースコードを除外

計測結果を見やすくするため、計測不要なものを計測対象から除外するためのオプションが数多く存在します。

例えば、

  • テストコード
  • 設定ファイル
  • 外部ライブラリ(rubygems ではなく独自に入れているもの)

などを計測不要なものを計測対象から除外したい場合、このようなオプションが使えるでしょう。

  • 汎用オプション
    • exclude
      • 指定したパターンに合致するソースコードを計測対象から除外する。
    • exclude-only
      • 通常、RubyGems でインストールしたソースコードは標準で対象外だが、このオプションを指定した場合は、例外なく指定したパターンに合致したもののみを計測対象から除外する。
  • 専用オプション
    • rails
      • Rails 用、設定ファイル等を計測対象から除外する。

詳細は rcov --help を参照してください。

コメント

本ページの内容に関して何かコメントがある方は、以下に記入してください。

コメントはありません。 コメント/rcov/about

お名前: