find | xargs rcov

2008/02/17 9:55am

Rails アプリのコードカヴァレッジに rcov を使ってみた。面倒な設定も必要なく、そこそこの速度でカヴァレッジを測定できるので便利だ。異常系のテスト洩れ確認に重宝している。

Rails アプリなので、test ディレクトリ以下のテストコードを実行したいわけだが、

rcov test/*/*_test.rb

このように、シェルのワイルドカード指定では再帰的に深いディレクトリを扱うことができない(zsh なら ** でいいね)。こういう場合は find, xargs を組み合わせればいい。

find test -name '*_test.rb' -print | xargs rcov --aggregate log/coverage/aggregate.info

rcov は --aggregate オプションで指定されたファイルに実行結果を保存し、次回実行時に利用することができる。ファイル数が多いと xargs はコマンドを複数回実行するので、結果が上書きされないように --aggregate オプションを指定するようにしよう。