Java源代码生成框架

我有一组带有旧式Doclet标签,注释和注释的Java 5源文件。 基于此,我想为另一组Java类编写一个生成器。

最好的方法是什么? Java中是否有用于代码分析/生成的独立库? 在此领域的任何共享的经验表示赞赏。

所以,我发现这些:

  • JaxME的Java Source Reflection – 似乎很好,但它似乎不支持注释。 自2006年以来它也没有发布。

  • Annogen – 使用JDK的Doclet生成器,它有1.5 JDK以下的一些错误。 它也很长时间没有发布。

  • Javaparser – 似乎也很好,而且很新,但只支持单个类的访问者模式,即没有上述2个包中的查询机制。

NetBeans IDE和Eclipse JDT项目都具有相当多的Java代码分析/生成逻辑。 我不知道他们的依赖是什么(也就是说,你可以将它们作为独立的库使用),但除此之外,我会好好看看这两个:在更密集的开发中不可能有一个java代码分析库以及更多最新。

更新:

PMD也可能是有意义的:

PMD扫描Java源代码并查找潜在的问题,例如:

* Possible bugs - empty try/catch/finally/switch statements * Dead code - unused local variables, parameters and private methods * Suboptimal code - wasteful String/StringBuffer usage * Overcomplicated expressions - unnecessary if statements, for loops that could be while loops * Duplicate code - copied/pasted code means copied/pasted bugs 

此外,此博客文章讨论了各种静态代码分析工具。

如果您只需要生成语法正确的Java代码,请检查Codemodel 。

我最终使用了PMD。 代码示例如下所示:

  final Java15Parser parser = new Java15Parser(); final FileInputStream stream = new FileInputStream("VehicleServiceType.java"); final Object c = parser.parse(new InputStreamReader(stream)); final XPath xpath = new BaseXPath("//TypeDeclaration/Annotation/NormalAnnotation[Name/@Image = 'WebService']", new DocumentNavigator()); for (final Iterator iter = xpath.selectNodes(c).iterator(); iter.hasNext();) { final Object obj = iter.next(); // Do code generation based on annotations... } 

它不完全是代码生成器,但如果你需要一些与bean相关的function,那么apache beanutils可以节省时间

http://commons.apache.org/proper/commons-beanutils/javadocs/v1.9.1/apidocs/org/apache/commons/beanutils/package-summary.html#dynamic