http://search.cpan.org/dist/Devel-Cover/
id:tokuhiromがDevel::Cover期とのことで、Perlでカバレッジ率はかるモジュールDevel::Coverを知った。Javaの案件だとカバレッジ率気にするのに、Perlだとあまり気にしていなかったなーとか自分への自戒をこめて、Devel::Coverの読み方メモ。
cover
perl Makefile.PL make test
する代わりに、
perl Makefile.PL HARNESS_PERL_SWITCHES=-MDevel::Cover=+ignore,inc make test cover
か、
perl Makefile.PL cover -test -ignore_re "^inc/"
これで、モジュールのコードとt/以下のテスト内容を調べてカバレッジ率を出してくれる。
incをよけてるのはModule::Installのカバレッジを取っても仕方ないため。
coverage.html
結果のサマリが出力されるけど、cover_db/coverage.htmlというHTMLが以下みたいにカラフルでわかりやすい。クリックしてソースのどこが減点となったかわかるし
読み方
- stmt: Statement coverage 命令網羅率 (C0) … テストに通していない文があったら減点
- bran: Branch coverage 分岐網羅率 (C1) … if/else文とかで分岐するところで、テストが両方みていないと減点
- cond: Condition coverage 条件網羅率 (C2) … $a and $b and $c みたいなところで、それぞれの全パターン網羅してないと減点
- sub: Subroutine coverage サブルーチン網羅率 (独自) … テストで使ってないサブルーチンあると減点。_で始まるサブルーチンは内部関数とみなして減点にならないので、privateな関数は_つけたほうがよさげ
- pod: POD coverge ドキュメント網羅率 (独自) … サブルーチンでPODにかかれてないものがあると減点(Pod::Coverage)