Извлечение всех имен переменных из объявлений переменных с использованием Eclipse JDT

Я работаю над анализом исходного кода с помощью 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

Спасибо!


person Pav Lo    schedule 15.02.2012    source источник
comment
Я бы разместил этот вопрос на форуме JDT по адресу eclipse.org. Коммиттеры JDT здесь и ответят на него.   -  person Francis Upton IV    schedule 15.02.2012


Ответы (1)


По сути, вы ищете узлы «org.eclipse.jdt.core.dom.SimpleName», которые имеют «org.eclipse.jdt.core.dom.IVariableBinding». Вы должны создать «org.eclipse.jdt.core.dom.ASTVisitor» и переопределить «org.eclipse.jdt.core.dom.ASTVisitor.visit(SimpleName)». Затем с помощью ASTVisitor вы должны проанализировать правостороннее выражение объявления переменной.

Вы можете найти раздел «Как найти узел AST» в эта статья полезная. Вы также можете найти полезным плагин AST View.

person Deepak Azad    schedule 17.02.2012