2015-12-04 6 views
-1

Я прочитал java-файл, используя 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); 
    } 
} 
+0

использовать стек для отслеживания '{ 'и'} ' – Ramanlfc

+1

используется анализатор Java или компилятор, такие как компилятор затмений, который предоставит обширную информацию об ошибках и предупреждения (например, скрытие поля). – Andreas

+0

Скомпилируйте код. Javac не позволит вам объявлять повторяющиеся переменные. –

ответ

1

1 вам нужно разобрать код Java:

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

или читать:

Java source code parsers/generators

2 после того, попробовать что-то и показать код

+0

, пожалуйста, прочитайте мой вопрос с вопросом выше. Я пробовал использовать java parser :) Спасибо –

+0

молодец. Спасибо :) –

+0

Пожалуйста, используйте новую версию JavaParser (https://github.com/javaparser/javaparser). Тот, о котором вы говорили, не обновлялся в течение нескольких лет, и он поддерживает Java 1.5, в то время как новый активно поддерживается и поддерживает Java 1.8. –

Смежные вопросы