Ich benutze den Compiler Tree API, um meinen Code in eine AST zu analysieren, aber die Methode visitCompilationUnit wird nie aufgerufen, durch die Methode visitClass heißt, was mache ich falsch?Compilation Unit Besucher - Java Compiler Baum api
Zweite Frage: Gibt es eine Möglichkeit, den Compiler zu sagen, den kompilierten Code abzuschneiden (ich interessiere mich nur für die AST, nicht in der Klassendatei).
Danke.
@SupportedSourceVersion(value=SourceVersion.RELEASE_7)
@SupportedAnnotationTypes("*")
public class Parser extends AbstractProcessor {
.
.
.
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnvironment) {
for (Element e : roundEnvironment.getRootElements()) {
System.out.println(e + "***");
TreePath tp = trees.getPath(e);
// invoke the scanner
rootVisitor.scan(tp, trees);
}
return true;
}
}
public class OdpaVisitor extends TreePathScanner<Object, Trees> {
protected RepositoryIface repository;
private String pckg;
public OdpaVisitor(RepositoryIface repository) {
this.repository = repository;
}
@Override
public Object visitCompilationUnit(CompilationUnitTree node, Trees p) {
repository.savePackage(node.getPackageName().toString());
this.pckg = node.getPackageName().toString();
return super.visitCompilationUnit(node, p);
}
@Override
public Object visitClass(ClassTree node, Trees p) {
repository.saveClass(node.getSimpleName().toString(), pckg);
return super.visitClass(node, p);
}
}
thx, funktioniert für mich :-) – malejpavouk