2012-03-14 2 views
5

Есть ли модуль, который может найти код не нужен?
В качестве примера сценария с кодом не требуется, чтобы запустить сценарий:Есть ли модуль, который ищет лишний код?

#!/usr/bin/env perl 
use warnings; 
use 5.12.0; 
use utf8; 
binmode STDOUT, ':utf8'; 
use DateTime; 
use WWW::Mechanize; 

sub my_print { 
    my ($string, $tab, $color) = @_; 
    say $string; 
} 

sub check { 
    my $string = shift; 
    return if length $string > 10; 
    return $string; 
} 

my_print('Hello World'); 

ответ

4

категорически не. Perl, как известно, трудно анализировать без фактического выполнения, до такой степени, что для компиляции программы Perl, которая будет запущена позже, на самом деле требуется, включая копию интерпретатора perl! В результате для Perl очень мало инструментов анализа кода. То, что вы можете сделать, это использовать профилировщик, но это немного избыточно (и, как я уже упоминал, требует собственно выполнения программы. Мне нравится Devel::NYTProf. Это выплевывает некоторые HTML-файлы, показывающие, сколько раз выполнялась строка или подпрограмма eaqch, как сколько времени было потрачено на это, но это работает только для этого конкретного выполнения программы. Это позволит вам увидеть, что WWW :: Mechanize загружен, но никогда не вызывается, но он не сможет сказать вам, warnings или binmode имел никакого влияния на исполнение.

+3

Devel :: NYTProf является хорошим инструментом для работы, но и расширить на фразу " ... но это работает только для этого конкретного выполнения программы ».: Данный запуск может не следовать всем логическим путям, и, следовательно, те пути, которые не выполняются, не будут отображаться в профиле. Однако это не означает, что они недоступны - просто они не были достигнуты при конкретном запуске. – DavidO

+0

Спасибо за разъяснение DavidO, +1 – Dan

0

Devel::Cover предоставляет метрики покрытия кода, который может быть полезен здесь.

Смежные вопросы