Как получить список имен переменных из файла Java?

#java #file #variables

#java #файл #переменные

Вопрос:

Как я могу получить список переменных из файла Java? До сих пор я начинал с чтения файла и разделения каждого слова с использованием пробелов. к сожалению, это возвращает все операторы импорта, комментарии .. и т. Д

 public ArrayList<String> getVariables(String javaFilePath) {
    ArrayList<String> variableList = new ArrayList<String>();
    BufferedReader br;
    try {
        // creating a buffer reader from the file path
        br = new BufferedReader(new FileReader(new File(javaFilePath)));

        String line;
        while ((line = br.readLine()) != null) {
            String[] variables = line.split("\s ");
            for (String variable : variables) {

                variableList.add(variable);

            }

        }

        br.close();
    } catch (FileNotFoundException e) {
        logger.error("This is FileNotFoundException error : "   e.getMessage());
    } catch (IOException e) {
        logger.error("This is IOException error : "   e.getMessage());
    }

    return variableList;
}
 

Например: у меня есть файл Java, сохраненный на C:Sample.java . И это код выглядит так:

 package com.test;

import java.io.File;
import java.io.FileInputStream;

public class Sample {
String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

}
 

И вывод с использованием вышеуказанного метода возвращает следующее:

 package
com.test;

import
java.io.File;
import
java.io.FileInputStream;

public
class
Sample
{
String
name;

public
String
getName()
{

return
name;
}

public
void
setName(String
name)
{

this.name
=
name;
}

}
 

Вопрос: как мне изменить мой метод, показанный выше, чтобы получать только переменные. Например: я хочу только «имя» и «Образец» для вышеуказанного класса.

Комментарии:

1. Это будет не так просто, вам нужно получить какой-нибудь анализатор Java. Например javaparser.org

2. зачем вам это нужно Sample ? Вам также нужны параметры метода или только поля? Оба являются переменными. Как насчет параметров лямбда-функций и т. Д.? Что, если я определю String one,two; и т. Д.

3. Вам определенно понадобится правильный анализатор Java.

4. @luk2302 Мне нужны только имена классов и только имена полей. Если он определен как строка один, два; тогда я хочу, чтобы переменные были «один», «два»

5. Вы же не пишете инструмент проверки кода, не так ли? — В этом случае вам может быть лучше написать плагин для IntelliJ. (вы можете запускать проверки intellij из командной строки.)