1

我想搜索至少有 3 个使用 @Inject 注释注释的字段的类,如下所示:

class SpecificUiComponent extends UIComponent {
      @Inject
      MyService1 myservice1;
      @Inject
      MyService2 myservice2;
      @Inject
      MyService3 myservice3;
}

我已经设法创建了一个搜索模板,该模板可以找到扩展 UIComponent 的类,并且其中还有一个 @Inject 注释,但是,如果我将 Annotation 变量的“最小”出现次数设置为 3,Intellij 仍然返回只有一个的类@注入。

我想要进行上述搜索的原因是找到那些具有许多外部防御的 UI 组件,因此过于复杂并需要重构。如果您有更好的方法,也请分享。

4

2 回答 2

3

您希望将字段的最少出现次数设置为 3,而不是注释。这是为了查找具有至少三个带有@Inject 注释的字段的类,而不是具有一个具有至少三个@Inject 注释的字段的类。举一个完整的例子,使用如下模式:

class $Class$ extends $Parent$ { 
  @Inject
  $FieldType$ $Field$;
}

编辑变量field以使 的出现次数最少3和出现次数最多unlimited。变量parent应启用文本/UIComponent正则表达式和Apply constraint within type hierarchy复选框。

这将找到直接或间接扩展 UIComponent 的类,其中至少有 3 个用 @Inject 注释的字段。

于 2016-10-20T10:41:31.820 回答
0
  • 转到编辑 -> 查找 -> 在路径中查找Ctrl+ Shift+ F

  • 输入@Inject[\S\s]*@Inject[\S\s]*@Inject作为搜索词组。

Regular Expression(确保您已在菜单General中打勾Find in path。:)))

要过滤仅扩展 UIComponent 的类,您可以将extends UIComponent[\S\s]*@Inject[\S\s]*@Inject[\S\s]*@Inject其用作搜索词组。

另一方面,扩展 UIComponent 的类应该在特定的包中,对吧?因此,您可以输入该目录作为搜索路径。:))

于 2016-10-19T07:55:31.730 回答