He creado un plugin en eclipse para que me parsee con ASTParser un trozo de codigo que selecciono en busca de metodos(MethodDeclaration).
El codigo es el siguiente:
Código:
private void creteAST(SelectedText selectedText) {
CompilationUnit parse = parse(selectedText);
MethodVisitor visitor = new MethodVisitor();
parse.accept(visitor);
System.out.println("Printeando metodos");
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();
IJavaProject javaProject = null;
String className = null;
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(c_text);
parser.setResolveBindings(true);
parser.setProject(javaProject);
parser.setUnitName(className);
return (CompilationUnit) parser.createAST(null);
}
El texto seleccionado paso al tipo char[] para que me parsee el texto que he seleccionado. Lo que necesito conseguir es el IJavaProject y el nombre de la clase para inicializar el parser si no, no me printea ningun metodo. Alguien sabe como se puede hacer esto???
Gracias