2

我正在检查使用 JDT 的方法的调用并对其参数执行检查。我正在使用访问 MethodInvocation 节点并执行此操作的 AST 访问者类。我在 Visitor 类中使用以下方法。

    public boolean visit(MethodInvocation node) {

        if (node.getName().toString().equals("createQuery")) {

            String argument= node.arguments().get(0).toString();

            // process the argument here

        }

        return true;
    }

但是作为变量声明一部分的调用没有被访问。

例如:如果我正在寻找方法“createQuery”的调用,将访问以下调用。

    session.createQuery("some query here");

但是这个没有被访问过。

    Query query = session.createQuery("another query here");

我怎样才能访问这些陈述并以适当的方式获取论点?

请帮忙。

4

1 回答 1

0

找到了.. 必须访问 AST 中的 VariableDeclarationStatement 节点并返回 true。

public boolean visit(VariableDeclarationStatement node) {

    return true;
}

这允许访问 AST 中的 VariableDeclarationStatement 的子项。特定类型的方法调用作为 VariableDeclarationStatement 节点的子节点出现,因此它们也会被访问。

于 2012-06-04T05:13:38.240 回答