2010-02-11 84 views
9

我必須清理一箇舊項目,這裏的一般知識是項目包含大量可以刪除的未使用代碼。這將節省一些頭痛,並使維護更容易。在Maven模塊化項目中查找未使用的代碼

我發現Eclipse Core Tools插件看起來像一個很棒的工具,但在我們的例子中,我們有一個分爲3個模塊的Maven2項目。 我似乎無法在父項目上運行「查找未引用的成員」,並且當我在其中一個模塊上運行它時,它完全忽略了其他模塊可能使用某些公共成員的事實。 。

任何人都已經克服了這個問題?或者找到了另一種方式去解決這個問題?

謝謝。

回答

9

時,我就可以完全忽略了一個事實,即其他模塊可能會使用一些公衆成員的一個模塊運行...

是的,這就是問題所在,這就是爲什麼有沒有真正確定性的方法來找到未被使用的代碼,正如this previous answer中的@cletus提醒的那樣。

說了這麼多,工具如PMD(及其unusedcode規則),Findbugs可能無論如何幫助。像IntelliJ這樣的IDE(Java代碼檢查在Community Edition中完全可用),Eclipse也對此提供了很好的支持。

的IntelliJ,看看Global unused declaration inspection

由於在IntelliJ IDEA的代碼洞察引擎背後的內部指標的改善,馬亞將能夠即時突出顯示其中有一些Java類,方法和字段在整個項目中未被使用。

對於Eclipse,有UCDetector插件:

UCDetector(不必要的代碼檢測器)是一個開源的Eclipse插件工具來查找不必要的(死)公共Java代碼。它還試圖使代碼成爲最終的,受保護的或私有的。

alt text http://www.ucdetector.org/images/popup.png

但我承認,我不知道如果這些解決方案將真正跨模塊的工作。在這種情況下,我的建議是將所有代碼放在一個「janitor」項目中(是的,這很醜,但是很好......)並運行它上的工具(並根據獲得的結果清理模塊)。

+0

這是一個非常好的和詳細的答案。謝謝你帕斯卡。 – Lancelot 2010-02-11 18:18:11

+0

@Lancelot不客氣。祝你好運! – 2010-02-11 18:22:50

1

我已經使用Core Tools插件在許多不同的Maven模塊中查找未使用的代碼。每個項目的構建路徑都必須正確設置,以便Eclipse知道項目之間存在依賴關係。如果您使用m2eclipse插件導入項目,它將自動設置它們。

我認爲Core Tools插件的工作方式是它自動執行「Call Hierarchy」視圖執行的過程。選擇一個方法並運行「調用層次結構」(ctrl-alt-H),如果沒有調用者,那麼核心工具應該將該方法標記爲未調用。