2012-03-14 41 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文件,顯示執行的次數或次數是多少次,以及在那裏花了多少時間,但這隻適用於該程序的具體執行,它可以讓你看到WWW :: Mechanize被加載但從未被調用,但它不能告訴你是否爲warningsbinmode對執行任何影響。

+3

傑韋利:: NYTProf是工作的好工具,但對短語擴展,「 ......但這隻適用於該程序的特定執行。「:給定運行可能不遵循所有邏輯路徑,因此,未遵循的路徑將不會顯示在配置文件中。但是,這並不意味着他們無法到達 - 只是他們沒有達到特定的運行。 – DavidO 2012-03-14 12:15:09

+0

感謝您的澄清DavidO,+1 – Dan 2012-03-14 20:30:31

相關問題