繁体   English   中英

Eclipse JDT ASTVisitor-如何判断字段是在方法中读取还是写入?

[英]Eclipse JDT ASTVisitor - how to tell if a field is read or written in a method?

我正在编写Eclipse ASTVisitor。 如何判断某个字段是在方法中读取还是写入?

提供的想法是“您需要访问“分配”节点。写入LHS上的字段,同时读取RHS表达式上的字段。

访问完任务并获取均为Expression的LHS和RHS之后,如何确定Expression是否包含该字段?

如果您正在进行AST工作,建议您使用AST View插件 这是了解JDT AST的非常方便的工具。

您的方法会起作用。 我在访问者内部使用一个变量来表示我正在分配作业。

    public boolean visit(final Assignment node) {
    inVariableAssignment = true;
    node.getLeftHandSide().accept(this);
    inVariableAssignment = false;
    node.getRightHandSide().accept(this);
    return false;
}

现在,当访问SimpleNameQualifiedName我会执行以下操作:

    public boolean visit(final SimpleName node) {
    if (!node.isDeclaration()) {
        final IBinding nodeBinding = node.resolveBinding();
        if (nodeBinding instanceof IVariableBinding) {
            ...
        }
    }
    return false;
}

省略号(...)将替换为根据inVariableAssignment的值处理字段访问的代码。 这将使您入门。

哦,别忘了PostfixExpressionPrefixExpression ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM