nDiki : Devel::Cover
Devel::Cover
使い方
Perl モジュールパッケージのカバレッジをチェックする
perl Makefile.PL make cover -delete HARNESS_PERL_SWITCHES=-MDevel::Cover make test cover
Perl モジュールパッケージのカバレッジをチェックする (Windows の場合)
perl Makefile.PL nmake cover -delete nmake HARNESS_PERL_SWITCHES=-MDevel::Cover test cover
スポンサード リンク
Related term
WiKicker ExtUtils::MakeMaker バグ AutoLoader Log::Log4perl Makefile.PL WWW::Mechanize::Cached Perl モジュールリスト AutoSplit ExtUtils::ModuleMaker h2xs SpeedyCGI Test::Memory::Cycle PDL Devel::SmallProf Wx::ActiveX ExtUtils::FakeConfig INI ファイル形式 PPM::Make Perl で XML LWP::UserAgent IPC::ShareLite 開発 PDL::PP IPC::Shareable Search::InvertedIndex Devel::LeakTrace Module::CoreList JSON HTTP::Daemon
2004年6月3日 (木)
■ Perlプログラムのコードカバレッジ解析

真実32 充分テストをしたとプログラマが自信を持つソフトウェアでも、全パスの50〜60%程度しか網羅していない。 パス・カバレージ・アナライザのような自動化ツールを使うと、網羅率が85〜90%に上がる。しかし、100%のパスを網羅するのは不可能だ。
真実34 ツールを使わないと、不良除去はうまくいかない。デバッガはみんな使うが、カバレージ・アナライザは、ほとんど使わない。
ということで、Perl 用のカバレッジ分析ツールを探してみる。 CPAN にある Devel::Cover が良さそげ。
@ Debian BOX にインストール
apt-get install libtest-differences-perl \
libpod-coverage-perl \
libtemplate-perl
してから Devel::Cover をインストール
dh-make-perl --cpan Devel::Cover --build dpkg --install libdevel-cover-perl_0.45-1_i386.deb
@ WiKicker のコードカバレッジをチェックしてみる。
WiKicker はExtUtils::MakeMaker を使ってパッケージ化しており、テストは t/*.t を使用するようになっているので、そのまま分析をする事ができる。
perl Makefile.PL make cover -delete HARNESS_PERL_SWITCHES=-MDevel::Cover make test cover
出力はこんな感じ
Reading database from /path/WiKicker/source/cover_db ---------------------------- ------ ------ ------ ------ ------ ------ ------ File stmt branch cond sub pod time total ---------------------------- ------ ------ ------ ------ ------ ------ ------ blib/lib/WiKicker.pm 100.0 n/a n/a 100.0 n/a 0.0 100.0 ...cker/App/Configuration.pm 44.1 0.0 n/a 62.5 n/a 0.0 41.7 ...icker/App/MarkUpAsHtml.pm 38.1 0.0 0.0 66.7 n/a 0.0 34.8 ...CGI/AbstractController.pm 24.8 0.0 n/a 47.4 n/a 0.0 23.6 [snip] ...ageHtmlFragmentVisitor.pm 100.0 n/a n/a 100.0 n/a 0.0 100.0 ...icker/WikiPage/WriNode.pm 96.4 83.3 n/a 88.9 n/a 0.9 93.0 .../tDiaryFragmentVisitor.pm 32.3 0.0 n/a 33.3 n/a 0.0 29.8 Total 59.2 41.3 31.4 67.5 100.0 100.0 56.7 ---------------------------- ------ ------ ------ ------ ------ ------ ------ Writing HTML output to /path/WiKicker/source/cover_db/coverage.html ... done.
cover_db/coverage.html に各モジュール毎のコードカバレッジが表示される。 また、各モジュールファイル毎のレポートもHTMLで作成され、プログラムの各行毎のカバレッジがプログラムとともに表示される。
なかなかいい感じ。さすがにパスカバレッジはサポートしていない。
コードカバレッジを上げてもバグ0にはなるとは全然言えないのは承知しているが、テスト漏れを減らすための情報として結構使えそうだ。
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- WiKicker の Makefile.PL を Module::Inst... (2006-02-10)
- Devel::CoverとAutoLoader (2004-06-04)
- WiKicker に JSON でのページ出力機能を追加 (2007-04-03)
- 最新の Module::Install は Perl 5.005_03 ステ? (2006-04-29)
2004年6月4日 (金)
■ Devel::CoverとAutoLoader

[ Perl ]
コードカバレッジをチェックするDevel::Coverであるが、AutoSplit / AutoLoader を使っていると分割されたサブルーチンが対象にならない。WiKicker では AutoLoader を多用しているので、ここがチェックされないと意味がない。
ということで Devel::Cover下でテストする時は AutoLoader を使わないようしてみる。
perl Makefile.PL WIKICKER_NO_AUTOLOAD=1
とした時はExtUtils::MakeMaker::WriteMakefile に PM_FILTER として
q($(PERL) -e "while (<>) {s!^\\\\s*use\\\\s+AutoLoader.*!!g; s!^__END__!!g; print} print qq(\\n1;\\n); ")
を渡すように Makefile.PL を修正。これで
perl Makefile.PL WIKICKER_NO_AUTOLOAD=1 make cover -delete HARNESS_PERL_SWITCHES=-MDevel::Cover make test cover
とすると AutoLoader を使わないバージョンでチェックができる。
- Perlプログラムのコードカバレッジ解析 (2004-06-03)
- WiKicker の Makefile.PL を Module::Inst... (2006-02-10)
- 最新の Module::Install は Perl 5.005_03 ステ? (2006-04-29)
- Module::Build でソースパッケージング (2005-08-24)
- [ DiKicker ] Term DB の改良 (2004-06-12)
2004年6月12日 (土)
■ [ DiKicker ] Term DB の改良

改良とういか実装。 DiKicker の Term DB (記事のインデックスファイル)はまだ不完全で、記事・単語の削除機能が一部未実装のところがある。 まとまった時間がとれたので、がりがりコードを書く。
Devel::Coverを使って、テストケースで各コードが使われているかを確認。 Perl だとメソッド名の typo など実際に実行されるまで気がつかないバグがあるので、コードを通過しているかどうかだけでもチェックできると結構便利。
WiKicker の部分とあわせて、Log::Log4perl によるロギングも随時整理。
- Perlプログラムのコードカバレッジ解析 (2004-06-03)
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- WiKicker に JSON でのページ出力機能を追加 (2007-04-03)
- [ WiKicker ] 日記機能開発開始 (2003-12-27)
- WiKicker の Makefile.PL を Module::Inst... (2006-02-10)
■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.12679s / load averages: 0.12, 0.13, 0.13
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)




◇ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。