コードカバレッジ

コードカバレッジというのは、ソースコードの何%が実行されたかという指標のことです。たとえば、以下のようなコードがあったら、

sub is_devide_100 {
 my $value = shift;
 if ($value % 100 == 0) {
   return 1;
 } else {
   return 0;
 }
}

&is_divide_100(1); と &is_divide_100(100); を呼ぶと、すべてのパスを通るので is_divide_100 のコードカバレッジは100%になります。

CPAN に Devel::Cover というモジュールがあります。このモジュールを使うと、Perl のコードカバレッジが計れます。Catalyst アプリでコードカバレッジを計るには、以下のようにします。

$ sudo cpan Devel::Cover
$ cd myapp/script
$ perl -MDevel::Cover myapp_test.pl /
$ perl -MDevel::Cover myapp_test.pl /class1
$ perl -MDevel::Cover myapp_test.pl /class1/action1
$ perl -MDevel::Cover myapp_test.pl /class1/action1/arg1
(以下外から叩けるURIを全部指定する)

そうすると以下のような値が取得できます。

---------------------------- ------ ------ ------ ------ ------ ------ ------
File                           stmt   bran   cond    sub    pod   time  total
---------------------------- ------ ------ ------ ------ ------ ------ ------
...l/temp/MyApp/lib/MyApp.pm  100.0    n/a    n/a  100.0  100.0   13.0  100.0
myapp_test.pl                 100.0   50.0   33.3  100.0    n/a   87.0   91.2
Total                         100.0   50.0   33.3  100.0  100.0  100.0   94.4
---------------------------- ------ ------ ------ ------ ------ ------ ------