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