2012-06-04 66 views
1

此問題是Java依賴關係不是靜態的,而是動態的。我讀了這個stackoverflow link,但這是關於靜態依賴關係和谷歌搜索獲得類似的結果。在java項目中刪除不必要的依賴項

因此,這裏是我的問題:

這是10年,現在50歲以上的開發人員運行一個非常大的項目(20K + Java文件)。這裏重新架構一直在發生,所以你有一個新的堆棧和一箇舊的堆棧。大多數情況下,風險緩解意味着你無法立即擺脫課程,而是使用calle方法保持對新老課程的調用。對開發者的標準指令是:在生產環境中執行應用程序時,不應該調用舊類。

當前的解決辦法:

他們做的是保持對老班「假國旗」,並祈禱它不會被調用。如果確實如此(因爲開發人員可能會錯過指向新課程)並且事情在生產中失敗,那麼將旗幟與舊課程設置爲真並且世界上的一切都是正常的。 (這樣他們只是改變一個有標誌的屬性文件,不需要重新編譯)。經過一年左右的prod測試後,他們放棄了舊的類文件。現在這可能不是技術上最好的方法,但在實踐中使用關鍵任務應用程序時,您不會冒險,沒有人能夠記住/瞭解這些20K類在Java中甚至在功能上做了什麼。

我在尋找:

工具或找出未使用的類的方法。

  1. 現在,這是一個雞生蛋蛋在某些方面如只有在執行某些罕見的情況下,你會不會找出老班被稱爲在運行,因此現有的解決方案。

  2. 如果你使用像PMD等靜態代碼分析工具,他們不會告訴你這些未使用的,因爲它們實際上被某些或其他類至少在代碼級調用。

  3. 也許,它只是瘋狂的想法,一些工具,它遍歷從頂級操作層開始的所有依賴鏈/樹,並得到結果

當然,反應方式是建立一個完全自動化的迴歸測試套件和運行所有可能的情況,不幸是不可能在這裏由於預算,人力的限制等

我需要的是優化我的代碼一種主動的方式。也許這是一廂情願的想法,甚至有可能,但我有一個嘮叨的感覺,這個問題不是隨機的,有點結構化的,所以可能有某種解決方案。

任何想法讚賞。 !

回答

2

由於動態類加載和反射,可能無法爲此提供正確的解決方案。你可以從JBoss Tattletale開始。它可能也是一個聲納插件。它可以向你顯示未使用的罐子,但它只能進行靜態代碼分析,所以你會得到一些錯誤的錯誤。但是當你瀏覽列表時,你可以忽略諸如彈簧安全等。但是當你找到自己的jar時,你很可能會知道該模塊中是否沒有動態類加載或反射

+0

謝謝,但是這並不能幫助我:( –

相關問題