【发布时间】:2010-11-28 18:05:06
【问题描述】:
我们需要生成 Java 源代码。我们通过对抽象语法树进行建模并使用生成实际源代码文本的 tree walker 来做到这一点。到目前为止一切都很好。
由于我的 AST 代码有点旧,它不支持注解和泛型。因此,我正在四处寻找开放项目,以用于未来有代码生成需求的项目。这就是真正的问题所在。我们要测试生成的代码是否具有正确的行为。
这是我产生实际评估 AST 而不是生成 java 源代码、编译它并针对该代码运行测试的想法的地方。评估者可以加快单元测试的速度,并且可以评估生成的代码的较小部分,例如只评估一个方法,从而使“单元”更合理。
到目前为止,我发现 com.sun.codemodel 项目看起来相当不错,因为它是一个现代(支持 java5 和 6 特性)基于 AST 的代码生成解决方案。
有人知道是否有另一个项目可以让我直接评估 AST 的各个部分(例如单个生成的方法)?
【问题讨论】:
-
+1 个有趣的问题,我们现在想要答案 :-)
-
我只是为该方法生成代码,编译和测试。创建解释器是一项相当多的工作。
-
没有选项可以让 javac 发出解析树和中间表示之类的东西吗? (类型解析,类查找,无论 Ira Baxter 在他们的回答中说什么)。
-
javac -Xprint只显示.class文件的API。
标签: java unit-testing code-generation metaprogramming