Intellij idea IntelliJ Structural Search查找实现A但不实现B的类

Intellij idea IntelliJ Structural Search查找实现A但不实现B的类,intellij-idea,structural-search,Intellij Idea,Structural Search,我试图使用IntelliJ10.5的“结构化搜索”功能来查找实现接口A但不实现另一个接口B的类 通过先搜索实现A的类,然后将搜索范围限制为“以前的搜索结果”,很容易将搜索范围缩小为只搜索不实现B的类,这在概念上相当简单。不幸的是,我还没有成功 如果我搜索 class $clazz$ implements $B$ {} 然后在变量B的文本约束中勾选“invert condition”,它似乎找到了“所有实现B以外的东西的类”,即使它们也实现了B。我也尝试过在“complete match”变量上

我试图使用IntelliJ10.5的“结构化搜索”功能来查找实现接口A但不实现另一个接口B的类

通过先搜索实现A的类,然后将搜索范围限制为“以前的搜索结果”,很容易将搜索范围缩小为只搜索不实现B的类,这在概念上相当简单。不幸的是,我还没有成功

如果我搜索

class $clazz$ implements $B$ {}
然后在变量B的文本约束中勾选“invert condition”,它似乎找到了“所有实现B以外的东西的类”,即使它们也实现了B。我也尝试过在“complete match”变量上勾选“invert condition”,其效果不是很明显,但肯定不是我想要的


碰巧,有人在IntelliJ论坛上询问,但没有得到爱。帮帮我,斯塔克

要查找实现InterfaceA但不实现InterfaceB的类,我执行了以下操作:

  • 搜索>结构化搜索
  • 单击复制现有模板
  • 选择接口的实现者(在层次结构中)并单击确定
  • 单击编辑变量
  • 在变量列表中选择接口
  • 在文本/正则表达式中输入InterfaceA,然后单击OK
  • 单击查找
  • 搜索>结构化搜索
  • 单击编辑变量
  • 在变量列表中选择接口
  • 文本/正则表达式中输入接口B,在最小计数中输入0,在最大计数中输入0,然后单击确定
  • 范围下拉列表中选择以前的搜索结果
  • 单击查找

  • 注意:我在第8步尝试使用编辑查询按钮时遇到问题。我没有研究/重试,但返回菜单并选择Search>Search Structural确实有效。

    不幸的是,搜索的第二部分似乎消除了那些不直接实现不需要的接口的类,但不排除那些通过基类实现的类:
    接口好{}
    接口错误{}
    类基类实现错误{}
    类NotFiltered扩展基类实现良好{}
    顺便说一句,我很抱歉没有尽快回复您的评论。我非常感谢你的帮助!但是我的终极评估许可证过期了,我只买了一个,所以我不能测试你的处方。