6

スクリプトのPODカバレッジを測定する方法はありますか(例*.pl)?

とを使用してパッケージのドキュメントカバレッジを測定できますが、スクリプトのドキュメントカバレッジを測定することはできません。これは、ファイルの不足が原因で失敗するパッケージのコンテンツを検査するための基本的な使用法であるためです。Pod::CoverageTest::Pod::CoveragePod::CoverageDevel::Symdumprequire.pm

これを回避する方法はありますか?

(ファイルにPODドキュメントが含まれている必要がある.plため、すべてをモジュールに移動してドキュメント化することは、私にとって良い解決策ではありません。それができるところならどこでも、すでにそのように行われています。)

4

2 に答える 2

4

Pod :: Coverageは、モジュールをロード(実行)して、サブなどを作成できるようにします。どういうわけか、.plが正常に実行されないようにする必要があります。

#!/usr/bin/perl
...
main(@ARGV) if !$ENV{NO_RUN};
1; # For do()

packageしかし、一度それを行うと、Pod :: Coverageにどのパッケージを調べるか( )とどのファイルを調べるか( )を指示するので簡単ですpod_from

#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 1;

use Pod::Coverage qw( );

{
    package the_script;
    local $ENV{NO_RUN} = 1;
    do "script.pl" or die $@;
}

my $pc = Pod::Coverage->new(
   package  => 'the_script',
   pod_from => 'script.pl',
);

# P::C expects "require the_script;" to succeed.
$INC{"the_script.pm"} = 1;

my $coverage = $pc->coverage();
die $pc->why_unrated()
   if !defined($coverage);

ok($coverage)
   or diag("Not covered: ".join(', ', $pc->naked()));

1;

テスト済み。

于 2012-09-25T15:53:57.577 に答える
4

プログラムをモジュラーにします。それが池上がやっていることですが、彼はあなたに環境変数を設定させます。

run(@ARGV) unless caller;

プログラムが実際にデフォルトの動作をするモジュールになったら、モジュールツールを使用できます。

于 2012-09-25T22:13:23.830 に答える