Pythonの場合、不要なimport
文があるかどうかを示すimportcheckerというスクリプトがあります。Perlスクリプトで不要な使用ステートメントをチェックするツールはありますか?
Perl use
(およびrequire
)の文にも同様のユーティリティがありますか?
Pythonの場合、不要なimport
文があるかどうかを示すimportcheckerというスクリプトがあります。Perlスクリプトで不要な使用ステートメントをチェックするツールはありますか?
Perl use
(およびrequire
)の文にも同様のユーティリティがありますか?
Devel::TraceUseをご覧ください。あなたが探しているもののチャンクを与えるかもしれません。
それは私に何がロードされているかを示すようです。私は何がロードされているか知っていますが、使用されていません。 –
静的コード分析、または実行時分析をしますか? –
スタティックコード解析。 –
これを試すには、script I wroteがあります。それは非常に単純化され、あなたのために何かを自動化することはありませんが、それはあなたに始める何かを与えるでしょう。
#!/usr/bin/perl
use strict;
use v5.14;
use PPI::Document;
use PPI::Dumper;
use PPI::Find;
use Data::Dumper;
my %import;
my $doc = PPI::Document->new($ARGV[0]);
my $use = $doc->find(sub { $_[1]->isa('PPI::Statement::Include') });
foreach my $u (@$use) {
my $node = $u->find_first('PPI::Token::QuoteLike::Words');
next unless $node;
$import{$u->module} //= [];
push $import{$u->module}, $node->literal;
}
my $words = $doc->find(sub { $_[1]->isa('PPI::Token::Word') });
my @words = map { $_->content } @$words;
my %words;
@words{ @words } = 1;
foreach my $u (keys %import) {
say $u;
foreach my $w (@{$import{$u}}) {
if (exists $words{$w}) {
say "\t- Found $w";
}
else {
say "\t- Can't find $w";
}
}
}
perlcriticがその機能を持つ可能性があります。 – ikegami
解決策は100%正確ではないことに注意してください。 'use Module;'は偽陰性である可能性があります。 '厳密なqw(refs)を使う;'は偽陽性である可能性があります。 'モジュールを使用するqw(:ALL);'は偽陰性と偽陽性の可能性があります。 – ikegami
関連する質問:http://www.perlmonks.org/?node_id=780433 – toolic