此问题是http://community.csdn.net/Expert/topic/4469/4469393.xml?temp=.644848的另一给分点。各位高手,我的目的主要如下:1:对于PMD等静态分析Java源程序的工具,我不想仅仅是得到一个检查报告,对于某些问题代码,我希望工具能自动的修改;2:自己动手分析java语言,能很方便的增加功能,例如:增加重构功能,自动生成源代码等;3:我打算在已有的开源工具的基础上开发,也可能利用Eclipse中的Java开发环境(JDT)提供的源代码解析和编辑工具。总之,我没有这方面的经验,所以请各位高手指点,少走弯路!

解决方案 »

  1.   

    利用antlr可以很容易的把java源代码转换成AST树,可是反过来,我修改了AST树后,怎么得到相应的修改后的java源代码?而且保留原来的源代码格式及注释。谢谢!
      

  2.   

    我正在看pmd及checkstyle的源代码,也在尝试eclipse的重构扩展,如有进展,我将向各位汇报,如有什么不懂的地方,还请各位高手指点!
      

  3.   

    如有那位大侠搞过类似的事情,请给我点资料,让我少走弯路,或给我简单的讲解pmd及checkstyle,谢谢。
      

  4.   

    treeroot(旗鲁特)兄,真是惭愧,大学时编译原理没有学好,所以我现在搞编译原理的东西比较费力,刚刚简单看了一下pmd及checkstyle的源代码,还是云里雾里,烦请各位有这方面经验的高手指点一二。checkstyle用的是antlr,PMD用的是javacc,可对于它们的整个架构、AST树和源代码的同步等不是很清楚,哪位高手知道的话,请给我简单讲讲,先谢了!
      

  5.   

    基于antlr的AST树,你还会有太多的工做要做,我想,基于eclipse的API更方便.
    eclipse的ASTParser可以直接得到一个CompilationUnit(它和PMD解析出的结构相似,但更完整,支持1.5语法),然后基于CompilationUnit去分析和修改.详细情况可参考JDT Plug-in Developer Guide-->Reference-->API Reference.主要看包:org.eclipse.jdt.core.dom.(另外,Eclipse的dom包可脱离eclipse使用,但要将ASTParser的initializeDefaults()中的this.compilerOptions = JavaCore.getOptions();改成this.compilerOptions = new Hashtable();)如果你可以把你的东西绑定在eclipse上,你可以用到更多的API, 那么你可以看看:
    重构:org.eclipse.jdt.ui.refactoring
    搜索:org.eclipse.jdt.core.search
    我想这两个包对你做自己的重购时,会省很多工作(相比antlr)
      

  6.   

    谢谢starfeng(feng)兄:我也正打算在Eclipse中创建新的重构功能来实现我的需求:    http://www-128.ibm.com/developerworks/cn/java/j-refactor/
    只是我想搞明白AST树和源代码的同步是怎么设计和实现的,而且保留原来的源代码格式及注释。
      

  7.   

    呵呵 你去看 PMD 源码 ,还不如去看 国外的对PMD的分析的文章。 大家共同提高。
      

  8.   

    你列的这篇文章很不错,我想,有问题,你可以发email给他们,他们通常会乐意回复的:)
      

  9.   

    谢谢starfeng(feng),谢谢各位高手,大家如有这类实践经验的请继续跟帖!