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セクションに構文エラーがないことを保障できる。