检查方法范围Java中的重复变量

时间:2015-12-04 08:02:59

标签: java java-io javaparser

我使用包含某些方法的FileReader读取java文件。我如何读取方法范围(内部方法区域)来查找重复变量?

例如,这是我读过的java文件:

public double[] copyArray(double[] data) {
    int _nn = data.length;
    double[] _tmp = new double[_nn];

    System.arraycopy(data, 0, _tmp, 0, _nn);
    int _nn;
    _nn = tmp;

    return _tmp;
}

如何知道方法范围?,我的意思是在{和}之间,如果找到范围,找到重复的变量,例如上面的例子(int _nn)重复。

[加成] 我尝试过使用java解析器,然后就是成功。然后我应该使用列表发送结果,但只列出列表中的最后一个方法。我的代码出了什么问题?

这是一个MethodVisitor:

private static class MethodVisitor extends VoidVisitorAdapter {
    private List<String> list = new ArrayList<String>();

    @Override
    public void visit(MethodDeclaration n, Object file) {
        list.add(n.getName());

    }
    public List<String> getList() {
        return list;
    }
}

然后,这是一个调用MethodVisitor的方法:

private MethodVisitor mv;

public void doIt(File file) throws Exception {
    CompilationUnit cu;
    try {
        // parse the file
        cu = JavaParser.parse(file);
    } finally {
        //file.close();
    }
    // visit and print the methods names
    mv = new MethodVisitor();
    mv.visit(cu, file);

    List<String> list = mv.getList();

    for(String item:list){
        System.out.println(item);
    }
} 

1 个答案:

答案 0 :(得分:2)

1你需要解析java代码:

http://code.google.com/p/javaparser/

或阅读本文:

Java source code parsers/generators

之后

2,尝试一下并展示你的代码