0

我需要检测一个类是否以编程方式依赖于另一个类,以检测不适当的亲密代码气味(我想分析其他 java 程序,使用我的程序)。关于如何实现这一点的任何指示都会有很大帮助。

  1. 如何识别java程序中创建的所有对象?
  2. 如何识别java程序中所有被调用的方法?

任何帮助,将不胜感激。

4

4 回答 4

1

您可能想使用已经存在的东西,而不是自己构建东西。特别是如果您对 Java 和 JVM 的内部结构不是很熟悉的话。

看看 JDepend:http ://clarkware.com/software/JDepend.html

于 2014-07-22T16:28:32.550 回答
0

我发现ObjectWeb asm-all Java 字节码操作和分析库非常有用,也称为asm-all.jar

它允许您将任何 *.jar 应用程序转换为等效的 XML 文件。您可以全面检查应用程序结构,将其更改为 XML 格式并转换回 *.jar 文件

为了使用 XML 文件,您需要了解它包含的内容。Oracle 的 The Java® Virtual Machine Specification是非常好的参考资料

顺便说一句:您可以使用此工具做的一件事是检测字节码,以便它创建运行时分析信息 - 调用了哪些方法以及由谁调用(如 @upog 所建议的)

于 2014-07-22T16:22:25.093 回答
0

使用探查器作为JConsoleVisualVM。通过使用分析器,您几乎可以看到运行时发生的一切。

于 2013-09-08T06:17:52.220 回答
0

我想到的一种方法是使用记录器,在构造和要监视的方法中放入一些日志语句。所以通过日志你可以找出创建的对象和访问的方法

于 2013-09-08T06:19:01.333 回答