我正在尝试使用结构搜索在IntelliJ中创建自定义检查。这个想法是找到所有具有一个或多个参数的方法,其中至少一个没有注释。奖励:仅击中非原始类型的参数。
到目前为止,我已经创建了以下搜索模板:
$MethodType$ $Method$(@$ParamAnnotation$ $ParameterType$ $Parameter$);
使用这些过滤器和搜索目标“完全匹配”:
$Parameters$: count[1,∞]
$ParamAnnotation$: count[0,0]
但是,这只会命中没有注释任何参数的方法。我希望它也能与仅某些参数带有注释但其他参数没有注释的方法匹配。
是否可以在另一个变量的过滤器中引用一个变量的计数,例如通过使用脚本过滤器?如果可以,怎么办?
答案 0 :(得分:2)
您可以通过创建如下搜索模板来做到这一点:
$MethodType$ $Method$($TypeBefore$ $before$,
@$ParamAnnotation$ $ParameterType$ $Parameter$,
$TypeAfter$ $after$);
过滤器:
$Parameters$: count=[1,1] // i.e. no filter
$ParamAnnotation$: count=[0,0]
$before$: count=[0,∞]
$after$: count=[0,∞]
这将找到具有至少一个参数且没有注释的所有方法。