Я ищу библиотеку Java (синтаксический анализатор исходного кода), которая поможет мне извлечь неквалифицированные имена всех имен классов, используемых в исходном коде. Например, для данного примера кода:
public class Example {
private ClassName1;
protected ClassName2 instance = new ClassName2();
public Example() {
ClassName3 test = new ClassName3();
}
public doSomething() {
//ClassName4 test = new ClassName4("SomeExampleString");
ClassName5 test = new ClassName5("ExampleString2");
}
}
Мне нужно получить следующий список:
ClassName1, ClassName2, ClassName3, ClassName5
, так как это список всех имен классовкоторые используются в исходном коде.
До сих пор я пытался написать простой синтаксический анализатор, который сделал бы это для меня, но не достаточно надежен для использования в реальном мире. Я также изучил несколько парсеров Java, но проблема в том, что я не знаю, как эта проблема будет вызвана, чтобы посмотреть на их код для решения, которое, как я считаю, существует в области существующих парсеров Java.
Итак, я ищу синтаксический анализатор исходного кода Java, который позволил бы мне получить списки имен классов, подобные приведенному в примере, и краткий пример того, как этого добиться или указания, где искать / как эта проблемаПравильно вызван.
ПРИМЕЧАНИЕ. Я не ищу метод для обнаружения всех классов, загруженных JVM, ни классов в classpath, а способ обнаружения классов в текстовом смысле путем анализа исходного исходного кода Java, который не скомпилирован.