我目前正在处理一个大约15年的Web应用程序。
它主要包含带有 HTML :: Template 模板的 CGI perl脚本。
它有超过12 000个文件和大约260 MB的总代码。我估计不需要超过1500个perl脚本,我想摆脱所有未使用的代码。
实际上没有为代码编写测试。
我的问题是:
use
d和require
d模块的列表?我正在考虑以下方法:
use
和require
perl内置warnings
和/或strict
模块import
功能,并在特定位置输出文件名Devel::Cover
perl模块并采用相同的方法并在进行手动测试而不是自动化测试时分析代码lsof
(?!?)答案 0 :(得分:5)
Devel::Modlist可能会为您提供所需,但我从未使用过它。
我需要做几次这样的事情,我选择了在程序结束时检查%INC
的更强力方法。
END {
open my $log_fh, ...;
print $log_fh "$_\n" for sort keys %INC;
}
答案 1 :(得分:2)
作为第一个近似值,我只需运行
egrep -r '\<(use|require)\>' /path/to/source/*
然后花几天时间清理那里的输出。这将为您提供所使用或所需的所有模块的列表。
您也可以使用@INC
来排除某些库路径。
如果您正在尝试确定执行路径,则可以通过调试器运行代码,并启用“trace”(即调试器中的“t”),然后将输出重定向到文本文件以进一步分析。我知道运行CGI时很难...
答案 2 :(得分:2)
假设打开了相关的时间戳,您可以检查各种脚本文件的访问时间 - 这应该排除任何未使用的顶级脚本文件。
可能值得为CGI.pm添加一些工具来记录当前的脚本名称($ 0)以查看发生了什么。