2012-04-05 9 views
1

コンパイラツリーAPIを使用してASTにコードを解析していますが、visitClassメソッドが呼び出されることはありません。visitClassメソッドが呼び出されました。コンパイルユニット訪問者 - Javaコンパイラツリーapi

2番目の質問:コンパイル済みコードを切り捨てるように指示する方法はありますか(クラスファイルではなく、ASTでのみインターレスされています)。

ありがとうございました。

@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); 
    } 
} 

答えて

関連する問題