0

我必须为自定义 JVM 语言实现一个静态代码分析工具,并且我希望拥有 JavaClass<?>类中可访问的大多数方法,例如:getDeclaredMethods(): Method[]. 我想出了两种方法:

1)编译所有类,这样我就有了.class文件,我可以在这些文件上调用javap,然后将javap的结果保存到java源文件并使用Java类型信息。

2) 使用 antlr4 并创建与 Java 中可访问的相同的类结构。也许还有其他方法?

我觉得选项 2 是在重新发明轮子,或者它可能是有效的方法?我认为选项 1 会更好,但我不确定这是否可行……然后它不是真正的静态代码分析,因为我需要编译我的自定义语言的所有文件。

你能帮我吗,或者至少给我指出正确的方向?

4

1 回答 1

0

javassist和 [cglib] 用于处理字节码。谷歌的错误倾向是把自己挂在构建过程/编译器中。将静态代码分析作为编译器的一部分并不是一个坏主意,例如 java 编译器检查无法访问的代码。

于 2017-12-18T15:14:29.313 回答