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

时间:2013-01-30 23:01:47

标签: java compiler-construction metadata javac

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

知道用哪个API来实现这个目标吗?任何人都可以指向Eclipse中的一个API,我可以用它来做这个(因为我确定它存在)?

由于

3 个答案:

答案 0 :(得分:1)

尝试一下: http://www.steike.com/code/java-reverse-engineering/

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

如果您使用的是javac,您应该能够通过编译器API,编译器树API和语言模型API的组合来完成您想要的所有操作。 见http://docs.oracle.com/javase/7/docs/technotes/guides/javac/

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