2012-03-14 16 views
5

¿Hay algún módulo que no pueda encontrar el código?
Como ejemplo, un script con código no es necesario para ejecutar el script:¿Hay algún módulo que busque código superfluo?

#!/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'); 

Respuesta

4
No

categóricamente. Perl es notoriamente difícil de analizar sin ejecutar en realidad, ¡hasta el punto de que la compilación de un programa Perl que se ejecutará más tarde realmente requiere incluir una copia del intérprete de Perl! Como resultado, hay muy pocas herramientas de análisis de código para Perl. Lo que puede hacer es usar un generador de perfiles, pero esto es un poco exagerado (y como mencioné, requiere realmente ejecutar el programa. Me gusta Devel::NYTProf. Esto escupirá algunos archivos HTML que muestran cuántas veces se ejecutó una línea o sublínea, así como cuánto tiempo se pasó allí, pero esto solo funciona para esa ejecución específica del programa. Le permitirá ver que WWW :: Mechanize está cargado pero nunca se llamó, pero no podrá decirle si warnings o binmode tuvieron ningún efecto sobre la ejecución.

+3

devel :: NYTProf es una buena herramienta para el trabajo, pero se expanda en la frase, " ... pero esto solo funciona para esa ejecución específica del programa. ": una ejecución determinada puede no seguir todas las rutas lógicas, y en consecuencia, las rutas no seguidas no se mostrarán en el perfil. Sin embargo, eso no significa que sean inalcanzables, solo que no fueron alcanzados en una carrera en particular. – DavidO

+0

Gracias por la aclaración DavidO, +1 – Dan

0

Devel::Cover proporciona métricas de cobertura de código que puede ser de alguna utilidad aquí.

Cuestiones relacionadas