如何为自定义JVM语言实现静态代码分析工具的类型信息?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为自定义JVM语言实现静态代码分析工具的类型信息?相关的知识,希望对你有一定的参考价值。

我必须为自定义JVM语言实现静态代码分析工具,并且我希望在Java Class<?>类中可以访问大多数方法,例如:getDeclaredMethods(): Method[]。我提出了两种方法:

1)编译所有类,以便我有.class文件,我可以在其上调用javap,然后从javap保存到java源文件,并使用Java类型信息。

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

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

你能帮助我,还是至少指出我正确的方向?

答案

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

以上是关于如何为自定义JVM语言实现静态代码分析工具的类型信息?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Scoped Allocator 模型启用自定义容器

如何为自定义帖子类型存档页面创建导航

如何为 Openfire 实现您自己的(自定义)服务器代码

jvm 方法区

如何为 Visual Studio 2012 调试器编写自定义本机可视化工具 DLL?

如何为分析添加 Firebase 自定义事件?