对于Java中的任意代码库,我想在符号和类型之间创建一个USES和USED-BY关系的表(概念上)。符号表包含我需要的信息。然而,编写前端似乎是一项艰巨的任务,并有可能将我的项目变成一个更大的子项目。在我看来,这没有理由,因为字节码,Java .class文件中必须包含每个类的此类符号表,以便它可以解析类型和引用。
我的问题是——
如何以编程方式访问一组 .class文件,以便我可以创建所需的使用/使用者表?有 任何已经这样做的人(答案肯定是肯定的)并且是工具 要做到这一点还不是库吗?
看看ASM字节码操作框架。本教程有一个从字节码检索依赖项的示例。尽管如果您使用最近引入的 RemappingClassAdapter,它可以大大简化。
你可以用 javap
的字节码,之后它只是文本解析。