2008-09-15 27 views
31

你會推薦什麼工具來檢測Java包循環依賴
知道,我們的目標是列表中明確參與檢測的「跨包週期」具體類?java包循環檢測:如何找到涉及的具體類?

我知道classycleJDepend,但他們都沒有列出涉及循環包依賴的類。
Metrics有一個有趣的循環圖形表示,但又侷限於軟件包,並且在某些時候很難閱讀。

我厭倦獲得:

「你有這3個包間包循環依賴
你必須在每個
好運XXX班找到正確的類並打破這個循環「

你知道任何一種工具, tra步驟來實際解釋爲什麼檢測到週期(即, '列出涉及的類')?


Riiight ...時間宣佈結果:

@ l7010.de感謝你的努力。我會投票給你(當我有足夠的代表)時,尤其是對'CAP'的回答...但是CAP死在水中,不再與我的Eclipse 3.4兼容。其餘的是商業,我只尋找免費

@ daniel6651謝謝你,但正如所說,免費只(抱歉沒有首先提到它)

@izb作爲的FindBugs一個經常使用(使用最新的1.3.5),我只需點擊一下即可接受您的答案......如果您可以向我解釋有什麼選項可以激活findbug來檢測任何週期。該功能僅針對0.8.7 version in passing(查找'新樣式探測器以找到類別之間的循環依賴關係'),並且我無法對其進行測試。
更新:現在工作,我有一個老的findbugs配置文件,其中該選項未被激活。我還是喜歡CAD雖然;)

答案是...看到my own (second) answer below

+0

只需在問題中提供答案。吉普信息一起。 – 2009-12-01 08:11:31

回答

1

而且你可以使用開源工具CAP,它是一個eclipse插件。 http://cap.xore.de/ CAP有一個圖形軟件包視圖,它會告訴你類的行,所以點擊一下後(取決於圓圈的大小),你會發現罪魁禍首。

0

有一些商業工具:Structure101 & Lattix可以用於這一目的。

1

第一個可能的答案是...並不漂亮。但它開始做我以後的事情。 (更好的解決方案是presented below

Dependency FinderDownload it,解壓縮它。

不是迄今爲止最現代或最活躍的項目,但是如果編輯[Dependency Finder] /bin/DependencyFinder.bat,爲DEFAULT_DEPENDENCYFINDER_HOME添加路徑,設置JAVA_HOME,則可以啓動它。

然後你點擊「提取」按鈕(CTRL-E - 第一個按鈕),輸入你的類路徑,讓它掃描了。

棘手的部分是不被在結果的詳細程度淹沒單擊完全正確的一組「編程元素」和「關閉」的項目,在順序。

  • 僅選擇「階級」在左邊的右邊(「編程元素」)
  • 只能選擇「類」(「關閉」)
  • 添加「/javax?./,/ org./,/sun./」爲排除模式(用於編程元素和關閉)
  • 點擊輪(最後一個按鈕 - 計算所有 - CTRL A)

在這裏你去。
只要看到「< - >」,你擁有屬於自己的漂亮循環依賴
(如果選擇了「關閉」的一面「功能」,
你甚至可以知道什麼功能不觸發週期 - 真棒 - )

我願意測試任何其他建議。

21

嗯...測試後DepFinder presented above,事實證明這是偉大的快速檢測簡單的相關性,但它不與類的數量很好地擴展...

所以真正的實際的答案是: CDA - Class Dependency Analyzer

它是快速的,最新的更新,易於使用,並且具有類圖形表示以及它們的循環依賴提供。夢想成真;)

你必須創建在其中輸入你的類(的.class)的只有目錄工作集(不需要有一個完整的類路徑)
選項「檢測循環依賴 - ALT 「 - C」作爲廣告使用,並且不會花費數小時100%的CPU來分析我的468類。
注意:要刷新工作區,需要再次打開它(!),以觸發對類的新掃描。

screenshot

+0

真的很不錯的工具。 – 99Sono 2016-05-28 12:04:01

3

Highwheel檢測類和包循環並報告依賴性的源極下降到指示所述關係的(方法簽名等的繼承,組合物,部分)的類型的類/方法/場水平。

它還將大週期分解爲可以單獨理解/處理的子元素。

https://github.com/hcoles/highwheel

輸出是HTML與需要一個現代瀏覽器內嵌SVG。