[英]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;
}
现在,当访问SimpleName
或QualifiedName
我会执行以下操作:
public boolean visit(final SimpleName node) {
if (!node.isDeclaration()) {
final IBinding nodeBinding = node.resolveBinding();
if (nodeBinding instanceof IVariableBinding) {
...
}
}
return false;
}
省略号(...)将替换为根据inVariableAssignment
的值处理字段访问的代码。 这将使您入门。
哦,别忘了PostfixExpression
和PrefixExpression
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.