2016-12-09 45 views
2

我想解析一个Android应用程序的文件的build.gradle在Java中,我试图如下使用Groovy CodeVistorSupport为:如何在解析Gradle脚本时使用Groovy CodeVisitorSupport访客类?

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

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

回答

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); 
    } 
} 
+0

可以接受你自己的答案! 我需要在我的项目中使用哪个库,以便我可以运行此代码? Maven的坐标? – sebkur

+0

刚发现:'org.codehaus.groovy:groovy:2.4.9' – sebkur