Я выбрал фрагмент кода, и я хочу проанализировать AST с целью идентификации методов в выбранном коде.Анализ выбранного кода с AST
public void run(IAction action) {
SelectedText selectedText;
IEditorPart editor = getActiveEditor();
if (editor instanceof AbstractTextEditor) {
selectedText = getSelectedText(editor);
creteAST(selectedText);
}
}
private void creteAST(SelectedText selectedText) {
CompilationUnit parse = parse(selectedText);
MethodVisitor visitor = new MethodVisitor();
parse.accept(visitor);
System.out.println("Printing methods from the selected code");
for (MethodDeclaration method : visitor.getMethods()) {
System.out.println("Method name: " + method.getName()+ ". Return type: " + method.getReturnType2());
System.out.println(method);
}
}
private static CompilationUnit parse(SelectedText selectedText) {
String s_text = selectedText.getSelectedText();
char[] c_text = s_text.toCharArray();
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(c_text);
parser.setResolveBindings(true);
return (CompilationUnit) parser.createAST(null);
}
Как вы можете видеть, что я должен изменить тип из SelectedText
в char[]
перед разбором.
Я делаю что-то неправильно, потому что парсер не находит никакого метода.
Что я делаю неправильно?
Спасибо, полезная информация !!! Но знаете ли вы, как получить javaProject и имя ??? Я пытаюсь найти какую-то информацию, но никак не могу :-( – Jose
возможно 'JavaModelManager.getJavaModelManager(). GetJavaModel(). GetJavaProject()' должен возвращать активный проект. Ищите примеры использования ASTParser в grepcode: http: // grepcode .com/поиск/обыкновений? ID = repo1.maven.org $ Maven2 @ org.eclipse.tycho $ org.eclipse.jdt.core @ 3.8.2.v20120814-155456 @ орг $ затмить $ Jdt $ ядро $ РОМ @ ASTParser и типа = тип & к = U – mantrid