我有一個遺留代碼來維護,並試圖理解代碼背後的邏輯,我遇到了很多惱人的問題。調試網站主要用AJAX編寫AJAX代碼注入
該應用程序主要是用Java腳本編寫的,大量使用jQuery +插件,特別是Accordion。它創建一個類似嚮導的流程,其中下一步的客戶端代碼通過注入遠程AJAX請求的結果在後臺下載。它還使用了很多回調以及非常複雜的「慣例」編程風格(大量事件處理程序是基於某些對象名稱即時創建的,例如當前頁面名稱,當前步驟名稱)。除此之外,代碼非常混亂,沒有明顯的內部結構 - 函數分散在代碼中,文件名不能反映代碼的業務角色,很多函數和代碼片段最有可能根本不使用等。
問題:如何解決這個代碼庫問題,以便使用一套智能調試工具對代碼的內部流程進行「反向工程」排序。
理想情況下,我希望能夠附加到正在運行的應用程序,並逐步完成代碼,打破每個新的函數調用。另外,能夠在應用程序中創建「調用圖」(即爲了運行特定的頁面邏輯,這個特定的函數調用流以特定的順序執行)將是很好的。
更不用說能夠運行覆蓋分析,識別潛在的孤立代碼片段。
我想再次強調,除非您有很多空餘時間和啤酒箱,否則我不可能通過查看代碼本身來了解應用程序的內部邏輯, :/(羞愧...)
某種有助於擴展該代碼的IDE也很棒,但我目前正在研究使用Visual Studio 2010來完成這項工作的可能性,因爲該網站本身是經典ASP和ASP.NET的混合體(我會說 - 帶有jQuery的70%Java Script,30%ASP)。我很明顯地嘗試過FireBug,但是我無法找到一種方法來定義斷點或步入代碼,這是通過AJAX調用「注入」客戶端JS(即應用程序通過調用URL並將其注入客戶端本地代碼)。 Venkman調試器有類似的問題。
任何提示將受到歡迎。隨意提出其他問題。
+1瞭解該工具。最後,我通過單元測試來重構代碼的一小部分,以確保這些更改不會破壞任何內容。經過大量迭代更改後,代碼開始對允許最終重構的點有意義。 – 2010-12-07 22:18:34