我正在使用Sonar API分析源代码,我的一条规则是访问标识符。
我需要区分局部变量和参数,但我找不到一种简单的方法。我想到找到标识符的父项,直到找到Kind.METHOD或Kind.CONSTRUCTOR,并获取它与标识符匹配的参数列表。
还有其他办法吗?
答案 0 :(得分:1)
可能有多种方法(主要依赖于语义API),但最简单的方法是让您的规则访问METHOD(MethodTree)以及IDENTIFIER。
请注意,使用语义API,您还可以获取标识符的所有者,但对于参数和局部变量,它将是方法。因此,您需要执行其他步骤来区分这两种情况(您可能需要查看语法树中符号声明的位置,以及父树是否为参数列表...)