Я работаю над анализом исходного кода с помощью Eclipse JDT. В настоящее время у меня есть программа, которая может получить некоторый код, преобразовать его в AST, а затем сделать некоторые аннотации.
Теперь, что я хочу сделать, это получить все задействованные переменные для каждого объявления переменной. Например:
int a = 10;
Это просто, просто переменная a
Но в следующем случае:
int a = b +c ;
Мне нужно проанализировать правую часть и извлечь каждую переменную. То, что у меня есть до сих пор, это:
Для каждого объявления переменной:
//get the fragment
List<VariableDeclarationFragment> ff = vds_p.fragments();
//foreach fragment, get the name of the variable and the value associated
for(VariableDeclarationFragment f_p : ff){
SimpleName name = f_p.getName();
Expression exp = f_p.getInitializer();
ChildPropertyDescriptor exp_prop = f_p.getInitializerProperty();
System.out.println("name: "+name);
System.out.println("expression: "+exp);
}
Итак, я могу получить имя переменной и выражение, которое ей присвоено. Теперь, вот мой вопрос:
Как я могу проанализировать с помощью JDT выражение, присваиваемое переменной, например, в
int a = b + c ;
Я хочу получить b
и c
. Я знаю, что могу получить строку "b+c" и применить ручной анализ на основе оператора, но мне интересно, есть ли более автоматизированный способ использования JDT
Спасибо!