find | xargs rcov
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
オプションを指定するようにしよう。