1

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

1 に答える 1

3

1 Java コードを解析する必要があります。

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

またはこれを読んでください:

Java ソース コード パーサー/ジェネレーター

2その後、何かを試してコードを表示してください

于 2015-12-04T08:35:14.747 に答える