如何计算perl代码中每个sub的相应行?

Mit*_*ldu 4 statistics perl

我正在重构一个相当大的代码体系,在思考如何继续这个时,我遇到了一些深奥的问题.这个代码在很大程度上需要的是缩短sub.

因此,将某种统计信息收集器指向目录是非常有利的,它将遍历所有的.pm,.cgi和.pl文件,找到所有的子站点(如果只获取指定的子站点,我会很好)并给我一张他们所有人的表格,以及他们的行数.

我给了PPI一个粗略的外观,但找不到任何直接相关的东西,有些工具可能是合适的,但使用起来相当复杂.

是否有更简单的模块可以做这样的事情?

如果做不到,你会怎么做?

编辑:

玩了一下PPI并创建了一个脚本来收集代码库的相关统计信息:http://gist.github.com/514512

Ped*_*lva 10

my $document = PPI::Document->new($file);

# Strip out comments and documentation                                                                                                                                              
$document->prune('PPI::Token::Pod');
$document->prune('PPI::Token::Comment');

# Find all the named subroutines                                                                                                                                                    
my $sub_nodes = $document->find(
    sub { $_[1]->isa('PPI::Statement::Sub') and $_[1]->name } );

print map { sprintf "%s %s\n", $_->name, scalar split /\n/, $_->content } @$sub_nodes;
Run Code Online (Sandbox Code Playgroud)