2010-05-03 26 views
0

我有一個遺留代碼來維護,並試圖理解代碼背後的邏輯,我遇到了很多惱人的問題。調試網站主要用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

您可以嘗試使用"dynaTrace Ajax"來創建調用圖,但它不是調試器。如果您有權訪問該應用程序,則可以使用關鍵字「調試器」在JavaScript文件中明確定義斷點。當你連接到IE時,Visual Studio理論上會在解決方案資源管理器中顯示所有評估和加載的JavaScript代碼。

+0

+1瞭解該工具。最後,我通過單元測試來重構代碼的一小部分,以確保這些更改不會破壞任何內容。經過大量迭代更改後,代碼開始對允許最終重構的點有意義。 – 2010-12-07 22:18:34

0

我會從Chrome的開發人員工具開始,並分析單個活動以查找設置斷點的函數。函數可以擴展來獲得他們的調用棧。

這可能有幫助,也可能沒有幫助,因爲完全有可能得到的代碼太呃,獨一無二,我們可以說 - 要有多大意義。

祝你好運?