[英]Cleanup huge Perl Codebase
我目前正在開發一個大約15年的Web應用程序。
它主要包含帶有HTML :: Template模板的CGI perl腳本。
它有超過12 000個文件和大約260 MB的總代碼。 我估計不需要超過1500 perl腳本,我想擺脫所有未使用的代碼。
實際上沒有為代碼編寫測試。
我的問題是:
use
d和require
d模塊的列表的CPAN模塊? 我在考慮以下方法:
use
並require
perl builtins使用在特定位置輸出加載的文件名的perl warnings
和/或strict
模塊import
功能,並在特定位置輸出文件名 Devel::Cover
perl模塊並采用相同的方法並在進行手動測試而不是自動測試時分析代碼 lsof
(?!?) Devel :: Modlist可能會為您提供所需,但我從未使用過它。
我需要做幾次像這樣的事情,我選擇了在程序結束時檢查%INC
的更強力方法。
END {
open my $log_fh, ...;
print $log_fh "$_\n" for sort keys %INC;
}
作為第一個近似值,我會簡單地運行
egrep -r '\<(use|require)\>' /path/to/source/*
然后花幾天時間清理那里的輸出。 這將為您提供所使用或要求的所有模塊的列表。
您也可以使用@INC
來排除某些庫路徑。
如果您正在嘗試確定執行路徑,則可以通過調試器運行代碼,並打開“跟蹤”(即調試器中的“t”),然后將輸出重定向到文本文件以進行進一步分析。 我知道運行CGI時很難...
假設打開了相關的時間戳,您可以檢查各種腳本文件的訪問時間 - 這應該排除任何未使用的頂級腳本文件。
可能值得為CGI.pm添加一些工具來記錄當前的腳本名稱($ 0)以查看發生了什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.