我想知道是否有一種工具可以識別JAVA源代碼內部的代碼塊。 例如,如果我有一個很長的方法,我想提取另一種方法 - 是否有任何工具可以自動告訴我大量值得抽取的代碼?識別(JAVA)代碼內聚塊的工具
回答
結賬Sonar它對查找重複代碼塊有很好的支持。
Sonar使用PMD和FindBugs。它還生成一些自定義度量,例如類複雜度,方法複雜度,這些度量指向的類/方法過大,並且可能會導致崩潰。
謝謝,但我並不直接對重複代碼感興趣。我正在檢測一個很長的方法,並希望知道大量的代碼,這些代碼值得將它們提取到新方法中以縮短原始函數。 – KoenigGunther
@KoenigGunther希望你閱讀我更新的答案。 –
Google CodePro Analytics有一個Eclipse插件,可以提供一堆統計信息,如代碼行和圈複雜度,可以很好地指示方法應該被重構。
我不認爲你會找到一個工具,可以自動重構「凝聚力」的代碼塊方法。那裏有太多的主觀性。
控制塊(即條件和循環)是「內聚的」,因爲您不能輕易提取跨越控制塊邊界的代碼塊。查找可以被方法調用替換的塊,這使得原始方法更易於理解。通過提取出最深的控制流嵌套區域,您將對複雜性產生最佳影響,因此這是一個開始的好地方。你不需要這樣的工具 - 代碼本身就有你需要的信息。
我尋找一個類似的工具與另一個問題:https://stackoverflow.com/questions/12016289/tool-for-visualizing-dependencies-inside-a-java-class只是略高一點:一個班級。
我認爲同樣的答案適用:沒有任何這樣的事情。有些工具可以提供您可能從中提取您正在查找的信息的信息。我想看一下DependencyFinder。它提供了對所有代碼塊的訪問,因此您可以找到訪問一組通用變量的代碼元素集羣。不幸的是,我發現這個API有點令人困惑,並且沒有很好的記錄,所以你需要一些嘗試和錯誤,或者與作者聯繫。它也可能不會讓你訪問我認爲的空白。但我不認爲這是一個有效的方法。
另一個你可能要研究的工具是JaMoPP它甚至應該有關於空白的信息。雖然它是一個Java插件,但您可以使用獨立於eclipse的底層庫(我認爲)。
- 1. 使內核模塊makefile識別源代碼的絕對路徑?
- 2. 文字識別庫,Android的代碼,Java?
- 3. 形狀識別算法/ Java的代碼
- 4. Java代碼審查工具
- 5. Java - createImageIcon()在代碼中無法識別?
- 6. 識別VBA代碼
- 7. QR代碼識別
- 8. 文本塊內容識別
- 9. 用於識別各種Java API中的Java註釋的工具
- 10. JVM的代碼識別
- 11. 代碼塊用Visual C++開發工具
- 12. 如何識別vb.net代碼,aspx代碼
- 13. 用於識別catch塊中問題的工具
- 14. 來自Java源代碼的Uml工具
- 15. 分析Java源代碼的工具
- 16. 生成Java代碼的工具過多?
- 17. Java中的代碼覆蓋工具
- 18. 使用註釋的Java代碼工具
- 19. 檢測重複代碼的工具(Java)
- 20. java/.Net的基本「代碼工具集」
- 21. 關於JAVA編碼識別
- 22. C代碼和bug識別
- 23. 識別C++代碼問題
- 24. 自動代碼識別
- 25. meta_where代碼未被識別
- 26. BufferedImage中的簡單方塊識別Java
- 27. Kmeans聚類識別R中的知識
- 28. 代碼塊不會識別它寫入的類的頭部?
- 29. 將PDF轉換爲CMYK(具有識別CMYK的識別碼)
- 30. 如何讓Java識別try塊內聲明的變量?
有沒有關於如何檢測choesive代碼塊的例子?例如,我希望查找由其他語句以空行分隔的語句。 – KoenigGunther