2009-02-24
SYNOPSISの構文を自動でチェックする
新しいモジュールの使い方を調べるときに真っ先に目を通すのがPODのSYNOPSISセクションである。特に,英語が母語ではないPerlerにとってはPODの中で最も重要なセクションといっても過言ではない。それだけに,自らモジュールを書くときは細心の注意を払う。
ところで,その内容の構文チェックは今まで手動でやっていたのだが,Test::Weakenのテストファイルを眺めていると面白いテストがあった。synpsis.tというのがそれで,PODのSYNPISISセクションの中身を抜き出して実行するというものだ。考えてみれば,構文チェックで十分なら特別なモジュールのサポートを得なくても簡単に書くことができる。
そこで,一般化してModule::Setup用のテンプレートにしてみた。
#!perl -w use strict; use Test::More tests => 1; use [% module %] (); my $file = $INC{'[% module_path %].pm'}; (my $podfile = $file) =~ s/ \.pm \z/.pod/xms; $file = $podfile if -e $podfile; my $content = do{ local $/; open my $in, '<', $file or die "Cannot open $file: $!"; <$in>; }; # extract SYNOPSIS from the pod my($synopsis) = $content =~ m{ ^=head1 \s+ SYNOPSIS (.+) ^=head1 \s+ DESCRIPTION }xms; # no strict 'vars' if needed ok eval("sub{ $synopsis }"), 'syntax ok' or diag $@; __END__
このテストファイルをモジュールテンプレートディレクトリのxt/04_synopsis_syntax.tとして保存する。
これで,SYNOPSISセクションに構文エラーがないことを保障できる。
トラックバック - http://d.hatena.ne.jp/gfx/20090224/1235449381
リンク元
- 26 http://reader.livedoor.com/reader/
- 22 http://www42.tok2.com/home/perltechnic/data/frame_261823.html
- 14 http://d.hatena.ne.jp/
- 14 http://search.cpan.org/~miyagawa/Test-Synopsis-0.06/lib/Test/Synopsis.pm
- 11 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CC4QFjAA&url=http://d.hatena.ne.jp/gfx/20090224/1235449381&ei=AK52T7rMIO-YmQWq9uDpDw&usg=AFQjCNH3G8VVLIEANUCsgcQBnhVPlyIEhw
- 9 https://www.google.co.jp/
- 8 http://d.hatena.ne.jp/perlcodesample/20090309/1235578327
- 7 http://search.cpan.org/dist/Test-Synopsis/lib/Test/Synopsis.pm
- 7 http://www.google.co.jp/url?sa=t&rct=j&q=perl synopsis&source=web&cd=1&ved=0CCMQFjAA&url=http://d.hatena.ne.jp/gfx/20090224/1235449381&ei=8SOFTrSjLofNmAWRhrEC&usg=AFQjCNH3G8VVLIEANUCsgcQBnhVPlyIEhw&sig2=rV-ZNPi1OnK70MRIxujB9g
- 6 http://search.daum.net/


