我正在编写一些规则,一个是在for-each语句中提醒indexOf()
的用法。 Here是我到目前为止所做的,但是方法调用和赋值被认为是表达式而不是语句,BodyTree
类返回一组StatementTree
s
答案 0 :(得分:1)
您可以将代码直接放入您的请求中,读者可以更轻松地理解其余部分。
一些评论:
if (st instanceof BlockTree)
,而是使用if(st.is(Tree.Kind.BLOCK))
。foreach
语句时,您不需要使用instance of
。输入ForEachStatementTree
方法时,您的树必须是visitNode
。然后你只需要施放它。现在,请注意,您的方法可能不是最简单的方法,因此处理所有情况可能过于复杂。您可能想尝试这种方法:
foreach
树和 method invocation
树(Tree.Kind.METHOD_INVOCATION
)foreach
节点时,存储与用于foreach
(或相应符号...)的集合对应的表达式foreach
并且方法名称是indexof
。您可以检查是否在与foreach
使用的集合相同的集合中调用它。SubscriptionVisitor.leaveNode(Tree tree)
,将在离开订阅节点时调用,如果节点是foreach
树则取消堆栈。