如何在解析gradle脚本时使用Groovy CodeVisitorSupport访问者类?

时间:2016-12-09 21:49:34

标签: gradle groovy

我想在Java中解析一个Android应用程序的build.gradle文件,我正在尝试使用Groovy CodeVistorSupport,如下所示:

public class parseBuildGradle extends CodeVisitorSupport{
   @Override
    public void visitMethodCallExpression(MethodCallExpression call)
    {
        //My code
    }
}

为了使用这个类,我假设我应该以某种方式获得编译单元或ast,然后调用该类。但是,我不确定我应该使用哪些API,不幸的是我找不到任何相关文档。我想知道是否有人可以帮助我。

1 个答案:

答案 0 :(得分:2)

以下是我的问题的可能答案:

SourceUnit unit = SourceUnit.create("gradle", gradleFileToString);
unit.parse();
unit.completePhase();
unit.convert();
visitScriptCode(unit, new parseBuildGradle());

private void visitScriptCode(SourceUnit source, GroovyCodeVisitor transformer) {
   source.getAST().getStatementBlock().visit(transformer);
   for (Object method : source.getAST().getMethods()) {
       MethodNode methodNode = (MethodNode) method;
       methodNode.getCode().visit(transformer);
   }
}