2012-10-11 19 views
2

我想知道是否有一種工具可以識別JAVA源代碼內部的代碼塊。 例如,如果我有一個很長的方法,我想提取另一種方法 - 是否有任何工具可以自動告訴我大量值得抽取的代碼?識別(JAVA)代碼內聚塊的工具

回答

1

有像PMD(日食)& FindBugs等插件,做靜態代碼審查根據您配置的規則標誌代碼。

+0

有沒有關於如何檢測choesive代碼塊的例子?例如,我希望查找由其他語句以空行分隔的語句。 – KoenigGunther

0

結賬Sonar它對查找重複代碼塊有很好的支持。

Sonar使用PMD和FindBugs。它還生成一些自定義度量,例如類複雜度,方法複雜度,這些度量指向的類/方法過大,並且可能會導致崩潰。

+0

謝謝,但我並不直接對重複代碼感興趣。我正在檢測一個很長的方法,並希望知道大量的代碼,這些代碼值得將它們提取到新方法中以縮短原始函數。 – KoenigGunther

+0

@KoenigGunther希望你閱讀我更新的答案。 –

1

Google CodePro Analytics有一個Eclipse插件,可以提供一堆統計信息,如代碼行和圈複雜度,可以很好地指示方法應該被重構。

我不認爲你會找到一個工具,可以自動重構「凝聚力」的代碼塊方法。那裏有太多的主觀性。

0

控制塊(即條件和循環)是「內聚的」,因爲您不能輕易提取跨越控制塊邊界的代碼塊。查找可以被方法調用替換的塊,這使得原始方法更易於理解。通過提取出最深的控制流嵌套區域,您將對複雜性產生最佳影響,因此這是一個開始的好地方。你不需要這樣的工具 - 代碼本身就有你需要的信息。

1

我尋找一個類似的工具與另一個問題:https://stackoverflow.com/questions/12016289/tool-for-visualizing-dependencies-inside-a-java-class只是略高一點:一個班級。

我認爲同樣的答案適用:沒有任何這樣的事情。有些工具可以提供您可能從中提取您正在查找的信息的信息。我想看一下DependencyFinder。它提供了對所有代碼塊的訪問,因此您可以找到訪問一組通用變量的代碼元素集羣。不幸的是,我發現這個API有點令人困惑,並且沒有很好的記錄,所以你需要一些嘗試和錯誤,或者與作者聯繫。它也可能不會讓你訪問我認爲的空白。但我不認爲這是一個有效的方法。

另一個你可能要研究的工具是JaMoPP它甚至應該有關於空白的信息。雖然它是一個Java插件,但您可以使用獨立於eclipse的底層庫(我認爲)。