일부 Java 코드를 처리하는 데 일식 JDT AST 파서를 사용 중이며 필드 및 메서드 선언의 형식 바인딩을 추출하려고합니다. 그 일을하기위한 논리는 내 Visitor 클래스 안에 있습니다 (아래 참조). 불행히도, 나는 운이 없으며 바인딩 중 아무 것도 해결되지 않습니다 (그들은 항상 null입니다). 흥미로운 점은 바인딩이 Eclipse ASTView 플러그인과 동일한 코드에서 작동한다는 것입니다. 내가 도대체 뭘 잘못하고있는 겁니까?바인딩이 식의 AST 처리로 해결되지 않습니다.
다음은 상황을 파악하는 데 도움이되는 관련 코드 조각입니다.
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);
}
}
한도 parser.setEnvironment (...)를 사용할 수 있습니다. "더 IJavaProject를 사용할 수 없을 때 사용할 수있는 환경 설정" – roesslerj