Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从编译器中提取源代码元数据_Java_Compiler Construction_Metadata_Javac - Fatal编程技术网

Java 从编译器中提取源代码元数据

Java 从编译器中提取源代码元数据,java,compiler-construction,metadata,javac,Java,Compiler Construction,Metadata,Javac,我正试图用Java编写一个简单的代码分析器/元数据提取器。首先,我要做的就是提取和区分实例和本地变量,以及方法及其签名,并将本地变量与它们所属的方法相关联,就像Eclipse在其大纲视图中显示它们一样。当然,这可以通过简单的文本解析来实现,但这显然是一种极其繁重和乏味的方法,肯定是重新发明了轮子。由于编译器已经解析了源代码,我想利用它的功能以一种干净、简单、优雅的方式提取元数据 你知道使用哪种API来实现这一点吗?有人能指出Eclipse中我可以使用的API吗(我确信它存在) 谢谢试试看: 您

我正试图用Java编写一个简单的代码分析器/元数据提取器。首先,我要做的就是提取和区分实例和本地变量,以及方法及其签名,并将本地变量与它们所属的方法相关联,就像Eclipse在其大纲视图中显示它们一样。当然,这可以通过简单的文本解析来实现,但这显然是一种极其繁重和乏味的方法,肯定是重新发明了轮子。由于编译器已经解析了源代码,我想利用它的功能以一种干净、简单、优雅的方式提取元数据

你知道使用哪种API来实现这一点吗?有人能指出Eclipse中我可以使用的API吗(我确信它存在)

谢谢

试试看:

您可以使用反射,这有点棘手

User user = new User();
Field[] fields = user.getClass().getDeclaredFields();
试试看:

您可以使用反射,这有点棘手

User user = new User();
Field[] fields = user.getClass().getDeclaredFields();

Eclipse似乎是一个很好的起点。

Eclipse似乎是一个很好的起点。

如果您使用的是javac,那么您应该能够通过编译器API、编译器树API和语言模型API的组合来完成所有您想做的事情。 看

使用编译器API调用javac。 使用编译器树API检查AST
使用语言模型API查看树的语义。

如果您使用的是javac,那么您应该能够通过组合使用编译器API、编译器树API和语言模型API来完成所有需要的工作。 看

使用编译器API调用javac。 使用编译器树API检查AST
使用语言模型API来查看树的语义。

您可能需要考虑以编程方式编译源代码,这样您就可以访问虚拟机所拥有的所有数据。请参阅指针,这是很棒的东西。您可能需要考虑以编程方式编译源代码,这样您就可以访问虚拟机所拥有的所有数据。看看有没有什么提示,这是很棒的东西。