我正在重构一个相当大的代码体系,在思考如何继续这个时,我会遇到一些深奥的问题。这段代码在很大程度上需要的是缩短潜艇。
因此,将某种统计信息收集器指向目录是非常有利的,它将遍历所有的.pm,.cgi和.pl文件,找到所有的子(如果它只获得了它,我很好命名的)并给我一张表,列出了所有这些,以及它们的行数。
我粗略地看了一下PPI,但找不到任何直接相关的东西,有些工具可能合适,但使用起来相当复杂。
是否有更简单的模块可以做这样的事情?
如果做不到,你会怎么做?
编辑:
稍微使用PPI并创建了一个脚本,用于收集代码库的相关统计信息:http://gist.github.com/514512
答案 0 :(得分: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;
答案 1 :(得分:3)
我很怀疑只是识别长函数是识别需要重构的内容的最佳方法。相反,我会通过perlcritic以越来越严厉的程度运行代码并遵循建议。