Java包周期检测:如何找到所涉及的特定类?[已关闭]

2022-09-01 02:38:08

您建议使用什么工具来检测 Java 包循环依赖关系,因为您知道目标是显式列出检测到的“跨包周期”中涉及的特定类

我知道classycleJDepend,但它们都没有列出循环包依赖关系中涉及的类。指标具有有趣的周期图形表示形式,但它再次仅限于包,并且有时很难阅读。

我累了,得到一个:

“ 你有一个包周期依赖这3个包
之间你有xxx类在每个
好运气找到合适的类并打破这个循环”

您知道任何工具可以采取额外的步骤来实际向您解释为什么检测到循环(即“列出涉及的类”)吗?


Riiight...是时候宣布结果了:

@l7010.de:谢谢你的努力。我会投票给你(当我有足够的代表时),特别是对于“CAP”答案......但是CAP已经死在水中,不再与我的Eclipse 3.4兼容。其余的都是商业的,我只寻找免费软件。

@daniel6651:谢谢你,但如前所述,只有免费软件(很抱歉一开始就没有提到它)。

@izb作为findbugs的频繁用户(现在使用最新的1.3.5),我只需点击一下即可接受您的答案...如果你能向我解释有什么选项可以激活findbug来检测任何周期。该功能仅在0.8.7版本中顺便提到(查找“New Style检测器以查找类之间的循环依赖关系”),我无法对其进行测试。更新:它现在工作,我有一个旧的findbugs配置文件,其中没有激活该选项。我仍然喜欢CAD,尽管;)

答案是...在下面看到我自己的(第二个)答案


答案 1

井。。。在测试了上面介绍的DepFinder之后,事实证明它非常适合快速检测简单的依赖关系,但它不能很好地扩展类的数量......

所以真正的实际答案是:CDA - 类依赖关系分析器

它快速,最新,易于使用,并提供类及其循环依赖项的图形表示。梦想成真;)

您必须创建一个工作集,在其中仅输入类的目录(.class)(无需具有完整的类路径)
选项“检测循环依赖关系 - -”的工作方式与广告一样,并且不会花费100%的CPU数小时来分析我的468个类。
注意:要刷新工作区,您需要再次打开它(!),以便触发对类的新扫描。ALTC

screenshot


答案 2

Findbugs可以检测循环类的依赖关系,并且还有一个Eclipse插件。

http://findbugs.sourceforge.net/