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

eclipse-jdt, eclipse-plugin

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.

Problem

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?

Original source