我需要检测一个类是否以编程方式依赖于另一个类,以检测不适当的亲密代码气味(我想分析其他 java 程序,使用我的程序)。关于如何实现这一点的任何指示都会有很大帮助。
和
- 如何识别java程序中创建的所有对象?
- 如何识别java程序中所有被调用的方法?
任何帮助,将不胜感激。
您可能想使用已经存在的东西,而不是自己构建东西。特别是如果您对 Java 和 JVM 的内部结构不是很熟悉的话。
看看 JDepend:http ://clarkware.com/software/JDepend.html
我发现ObjectWeb asm-all Java 字节码操作和分析库非常有用,也称为asm-all.jar
它允许您将任何 *.jar 应用程序转换为等效的 XML 文件。您可以全面检查应用程序结构,将其更改为 XML 格式并转换回 *.jar 文件
为了使用 XML 文件,您需要了解它包含的内容。Oracle 的 The Java® Virtual Machine Specification是非常好的参考资料
顺便说一句:您可以使用此工具做的一件事是检测字节码,以便它创建运行时分析信息 - 调用了哪些方法以及由谁调用(如 @upog 所建议的)
我想到的一种方法是使用记录器,在构造和要监视的方法中放入一些日志语句。所以通过日志你可以找出创建的对象和访问的方法