java源码解析JavaParser

时间:2025-03-22 14:16:07

package ;

import ; 
import ;

import ;
import ;

public class Jparser {
    public static void main(String[] args) {
        try {
            //将一个java代码的文本解析为一棵CompilationUnit类型的树
            CompilationUnit unit = (new File("D:\\Atools\\sts-bundle\\stsWorkspace\\bootdo2\\src\\main\\java\\com\\bootdo\\jparser\\"));
            classUnit vc = new classUnit();
            //在指定的树上进行搜索,然后根据遇到的节点的类型调用具体的回调
            //(unit, null);
            (vc,null);
        } catch (FileNotFoundException e) {
            ();
        }

    }
}

 

package ;

import ;

import org.;
import org.;

import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;

public class classUnit extends VoidVisitorAdapter<Object> {
    Logger log  = ();
    //alt+shift m 成员方法
    
    /**
     * 包名
     */
     @Override
     public void visit(PackageDeclaration n, Object arg) {
         ("package---------"+());
         (n, arg);
     }
     
     /**
      * 支持包
      */
     @Override
    public void visit(ImportDeclaration n, Object arg) {
         ("ImportDeclaration-------------"+());
        (n, arg);
    }
     
    /**
     * 类
     */
    @Override
    public void visit(ClassOrInterfaceDeclaration n, Object arg) {
        ("arg-----------"+arg);//null
        ("()--------"+());//整个类的内容,不包括package和import
        ("()---------"+());//类名
        //获取类的注解
        NodeList<AnnotationExpr> annotations = ();
        //判断是否有注解
        if(()>0) {
            for (AnnotationExpr annotation : annotations) {
                (());
            }
        }
        //获取类的注释
        Optional<JavadocComment> javadocComment = ();
        (());
        (n, arg);
    }
    
    
    /**
     * 成员方法
     */
    @Override
    public void visit(MethodDeclaration n, Object arg) {
        ("***********************************************************");
        ("arg-----------"+arg);//null
        ("()--------"+());//整个方法的内容
        ("()---------"+());//方法名
        ("()---------"+());//所有参数
        NodeList<Parameter> parameters = ();
        for (Parameter parameter : parameters) {
            (());
        }
        //获取方法的注解
        NodeList<AnnotationExpr> annotations = ();
        //判断是否有注解
        if(()>0) {
            for (AnnotationExpr annotation : annotations) {
                (());
            }
        }
        //获取方法的注释
        Optional<JavadocComment> javadocComment = ();
        (());
        //获取方法里面的方法
        /*CompilationUnit cu = (());
        (new methodUnit(), null);*/
        (n, arg);
    }
    
    /**
     * 变量
     */
    @Override
    public void visit(VariableDeclarator n, Object arg) {
        ("VariableDeclarator--------"+());
        ("VariableDeclarator--------");
        //bContentService  成员变量
        //bContentDO = (cid)  方法内部的变量
        (n, arg);
    }
    
    /**
     * 成员变量的注解
     */
    @Override
    public void visit(FieldDeclaration n, Object arg) {
        ("FieldDeclaration###############"+());//@Autowired
        ("所在位置的行号,int类型"+().get().);
        (n, arg);
    }
    
}

 

扫描的java文件

package ;

import org.;
import org.;
import ;
import ;
import ;
import ;
import ;

import ;
import ;

/**
 * 文章内容
 * 
 * @author chglee
 * @email 1992lcg@
 * @date 2017-09-09 10:03:34
 */
@Controller
@RequestMapping("/blog/bContent")
public class DetectedController {
    
    Logger log  = (());
    
    @Autowired
    ContentService bContentService;

        
    /**
     * @return 需要配置thymeleaf模板引擎
     */
    @GetMapping()
    String bContent() {
        a();
        return "blog/bContent/bContent";
    }
    
    /**
     * @param cid
     * @return 测试能否获得对象
     */
    @GetMapping("/edit/{cid}")
    public ContentDO edit(@PathVariable("cid") Long cid) {
        ContentDO bContentDO = (cid);
        return bContentDO;
    }
    
    public void a() {
        
    }
}