当前位置:  开发笔记 > 编程语言 > 正文

如何在Perl中识别和删除冗余代码?

如何解决《如何在Perl中识别和删除冗余代码?》经验,为你挑选了2个好方法。

我有一个Perl代码库,并且有很多冗余功能,它们分布在许多文件中.

有没有方便的方法来识别代码库中的冗余功能?有没有可以验证我的代码库的简单工具?



1> David Harris..:

您可以使用B :: Xref模块生成交叉引用报告.



2> Schwern..:

我过去曾经遇到过这个问题.我打了一个快速的小程序,使用PPI查找子程序.它对代码进行了规范化(空格规范化,删除了注释)并报告任何重复.工作得相当好.PPI完成了所有繁重的工作.

你可以通过将每个例程中的所有变量名称规范化为$ a,$ b,$ c来使规范化变得更加智能,并且可以对字符串做类似的事情.取决于你想要多么具有侵略性.

#!perl

use strict;
use warnings;

use PPI;

my %Seen;

for my $file (@ARGV) {
    my $doc = PPI::Document->new($file);
    $doc->prune("PPI::Token::Comment");         # strip comments

    my $subs = $doc->find('PPI::Statement::Sub');
    for my $sub (@$subs) {
        my $code = $sub->block;
        $code =~ s/\s+/ /;                      # normalize whitespace
        next if $code =~ /^{\s*}$/;             # ignore empty routines

        if( $Seen{$code} ) {
            printf "%s in $file is a duplicate of $Seen{$code}\n", $sub->name;
        }
        else {
            $Seen{$code} = sprintf "%s in $file", $sub->name;
        }
    }
}

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有