如何以编程方式分析java类中使用的其他类的方法调用和对象

时间:2013-09-08 06:13:40

标签: java object methods

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

  1. 如何识别java程序中创建的所有对象?
  2. 如何识别java程序中的所有被调用方法?
  3. 任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:1)

您可能希望使用已存在的内容而不是自己构建内容。特别是如果您不熟悉Java和JVM的内部。

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

答案 1 :(得分:0)

将分析器用作JConsoleVisualVM。通过使用分析器,您几乎可以看到运行时发生的所有事情。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

要使用XML文件,您需要了解它包含的内容。 Oracle's The Java® Virtual Machine Specification非常适合以

开头 BTW:使用此工具可以做的一件事就是检测字节码,以便创建运行时分析信息 - 调用哪些方法以及由谁调用(由@upog建议)