Search code examples
eclipse-plugineclipse-jdt

How to get all visible variables for a certain method in JDT


I want to develop an Eclipse plug-in which get all visible variables for a specific method. For example:

public class testVariable {  
    String test1;  
    Object test2;
        void method_test1(){
            int test3,test4;
        }
        void method_test2(){
            int test5,test6;
            //get variable here!!!!
        }
}

I just want to get visible variable is: test1, test2,test5,test6 in method method_test2. What can I do?


Solution

  • Actually, JDT can be used outside of a plug-in, i.e., it can be used in a stand-alone Java application.

    The following code can return the variables you want:

    public static void parse(char[] str) {
    ASTParser parser = ASTParser.newParser(AST.JLS3);
    parser.setSource(str);
    parser.setKind(ASTParser.K_COMPILATION_UNIT);
    
    final CompilationUnit cu = (CompilationUnit) parser.createAST(null);
    cu.accept(new ASTVisitor() {
    
        public boolean visit(VariableDeclarationFragment var) {
    
            System.out.println("variable: " + var.getName());
    
            return false;
        }
    
        public boolean visit(MethodDeclaration md) {
    
            if (md.getName().toString().equals("method_test2")) {
                md.accept(new ASTVisitor() {
                    public boolean visit(VariableDeclarationFragment fd) {
                        System.out.println("in method: " + fd);
                        return false;
                    }
                });
            }
            return false;
        }
    });
    

    }

    The output is:

    variable: test1
    variable: test2
    in method: test5
    in method: test6
    

    Check out more examples at JDT tutorials.