如何获取JDT中某个方法的所有可见变量

时间:2013-03-09 06:43:11

标签: eclipse-plugin eclipse-jdt

我想开发一个Eclipse插件,它可以获取特定方法的所有可见变量。 例如:

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

我只想在方法test1, test2,test5,test6中获得可见变量:method_test2。我该怎么办?

1 个答案:

答案 0 :(得分:6)

实际上,JDT可以在插件之外使用,也就是说,它可以在独立的Java应用程序中使用。

以下代码可以返回您想要的变量:

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;
    }
});

}

输出结果为:

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

JDT tutorials查看更多示例。