我可以使用JDT的搜索引擎,而从JDT AST解析源(Can I use JDT search en

2019-09-27 14:48发布

我使用JDT AST来分析给定源。 我想找到一个给定的对象/变量的引用时使用AST时触发初步认识的访客。 例如:考虑下面的代码:

public class SampleClass {
    public void printMe(){
        System.out.println("hello");
    }

    public static void main(String a[]){
        SampleClass s =new SampleClass();
        // do some other work
        s.printMe();
    }
}

当我解析上面的代码,当它涉及到“S”的变量声明,它会调用“VariableDeclarationFragment”类型的游客方法。 在这一点上我想才去访问代码行的其余部分,找出变量“s”的所有引用。 这可能吗? 我想用JDT的搜索引擎,并呼吁在这一点上分别解析引用的。 但没有成功。 我可以只用AST本身做呢?

请注意,我用JDT AST在一个独立的程序,而不是作为一个Eclipse插件项目。 我有点困惑我是否可以使用的搜索引擎在这种情况下,因为它不可能解决IJava *类型给定的代码单元(类,方法等)。 请分享你的专业知识来解决这个。

Answer 1:

使用搜索引擎是矫枉过正。 搜索引擎是为跨文件搜索。 而且,没有工作台开始(即 - 无背景的Eclipse实例),你不能使用的搜索引擎。

它看起来像你只需要找到在同一个文件中变量的引用。 这里最好的办法是建立一个访客到会参观整个文件,并查找到变量引用。 由于这些变量和它们的范围不逃避声明它们的方法,你只需要访问该方法。

事情是这样的:

class MyVariableVisitory extends ASTVisitor {
    public boolean visit(SimpleName node) {
        if (node.getIdentifier().equals(variableToLookFor)) {
            acceptMatch(node);
        }
        return true;
    }
}

由于您只寻找一个变量的引用,你只需要看看Name AST节点。



文章来源: Can I use JDT search engine while parsing a source from JDT AST