Estoy usando el analizador eclipse JDT AST para procesar algunos códigos Java y estoy tratando de extraer los enlaces de tipo para los campos y las declaraciones de métodos. La lógica para hacer eso está dentro de mi clase de visitante (ver a continuación). Desafortunadamente, no estoy teniendo suerte y ninguno de los enlaces se está resolviendo (son consistentemente nulos). Lo interesante es que las vinculaciones sí funcionan en el mismo código con el complemento eclipse ASTView. ¿Qué estoy haciendo mal?enlaces que no se resuelven con el procesamiento AST en eclipse
Aquí hay algunos fragmentos de código relevantes que esperamos ayuden a alguien a descubrir qué está pasando.
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(source);
parser.setResolveBindings(true);
CompilationUnit unit = (CompilationUnit) parser.createAST(null);
GenericVisitor visitor = new GenericVisitor(outDir + "//" + file.getName() + ".xml");
visitor.process(unit);
public class GenericVisitor extends ASTVisitor
{
public void endVisit(FieldDeclaration node)
{
String bindingInfo = "";
ITypeBinding binding = node.getType().resolveBinding();
if(binding == null)
{
System.out.println("field declaration binding = null");
}
else
{
bindingInfo = binding.getQualifiedName();
}
endVisitNode(node, bindingInfo);
}
public void endVisit(MethodInvocation node)
{
String bindingInfo = "";
IMethodBinding binding = node.resolveMethodBinding();
if(binding == null)
{
System.out.println("method binding = null");
}
else
{
bindingInfo = binding.toString();
}
endVisitNode(node, bindingInfo);
}
}
También se puede utilizar parser.setEnvironment (...): "Establecer el medio ambiente que se puede utilizar cuando no hay IJavaProject están disponibles" – roesslerj