我正在尝试为 Java 程序做一些样式检查/翻译工作。
首先我想要一个库(最好是Java),这样我就可以在我的程序中使用它。其次,我希望它可以执行以下操作:
- 扫描整个程序(多个源文件)
- 提供 API 来访问单个文件的 AST
- 提供 API 来访问调用图,例如了解变量的所有引用、方法的所有调用者等。
在有限的时间里,我简单地研究了几个工具,比如eclipse、pmd、antlr、soot:
- PMD 和 ANTLR:词法分析器/解析器,它们能够获取 AST,但没有调用图,因为它们不处理多个文件
- Eclipse:它们似乎提供了 API,但只能在其插件框架中使用,或者与其 RCP 绑定(不作为独立程序中使用的常用库)
- Soot:似乎非常接近我的要求。我正在阅读有关它的文件。
如果我对上述内容有误解,请纠正我。