Получить все имена переменных в методах - PullRequest
0 голосов
/ 13 марта 2020

Я хотел бы получить все имена переменных во всех методах файла java. Пример, как Person. java содержит

class Person {
    private String firstName;
    private String lastName;
    public static void main() {
            String test = "test";
            Person p1 = new Person();
            p1.setName("John");
    }
    public void setName(String name)   {
            this.firstName = name;
    }

}

Я хотел бы иметь возможность распечатать все объявленные переменные. Я пытался использовать javaparser для их получения. Тем не менее, я могу получить только переменные, объявленные в классе, который

firstName

lastName

Я хочу иметь возможность получить все переменные, объявленные в методе main *

firstName
lastName
test

Мой метод javaparser

public static void getVariables(String inputFilePath) {
    try {
        CompilationUnit cu = StaticJavaParser.parse(new File(inputFilePath));

        cu.findAll(FieldDeclaration.class).forEach(field -> {
            field.getVariables().forEach(variable -> {
                System.out.println(variable.getName());
                variable.getInitializer().ifPresent(initValue -> 
                System.out.println(initValue.toString()));
            });
        });
    } catch (FileNotFoundException fe) {
        System.out.println(fe.getMessage());
    } catch (IOException e){
        System.out.println(e.getMessage());
    }

}

Решено

Следуя совету Юджина, я могу теперь получить все переменные

public static void getVariables(String inputFilePath) {
    try {
        CompilationUnit cu = StaticJavaParser.parse(new File(inputFilePath));
        cu.findAll(VariableDeclarator.class).forEach(variable -> {
            System.out.println(variable);
        });
    } catch (FileNotFoundException fe) {

    } catch (IOException e) {

    }
}

1 Ответ

1 голос
/ 13 марта 2020

Вы передаете FieldDeclaration.class в метод findAll () CompilationUnit. Так что, как и просили, он получает все объявленные поля.

Если вы хотите перечислить все объявленные переменные, используйте VariableDeclarator.class из того же пакета - он получит все из них, включая те, которые объявлены как поля .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...