使用 IntelliJ 查找具有特定参数类型的所有方法调用
Find all method calls with a specific parameter type with IntelliJ
我有这个相当大的代码库(+/- 500k 行)。我在其中查找所有使用单个参数且该参数是特定类型的方法调用。
这意味着,我希望能够找到如下方法调用:
public class Foo { }
public class Bar { }
public class Doer{
public void doSomethingFoo(Foo foo) { }
public void doSomethingObject(Object object) { }
}
public class Usage {
Doer doer = new Doer();
public doSomething() {
Foo anObject = new Foo();
Bar bar = new Bar();
doer.doSomethingFoo(anObject);
doer.doSomethingObject(anObject);
doer.doSomethingObject(bar);
}
}
由于 doer.doSomethingFoo(anObject)
和 doer.doSomethingObject(anObject)
都被调用,因此搜索应该返回这两个语句。同样,不返回 doer.doSomethingObject(bar)
。当然,我不知道 doer
存在。
我正在尝试使用 IntelliJ 的结构搜索来执行此操作。我使用了以下模板 $Instance$.$Method$($Parameter$)
,具有以下参数:
$Instance$ -> Text/regexp = .*
$Method$ -> Text/regexp = .*
$Parameter$ -> Text/regexp = Foo
Minimum count = 1 // Minimum one Foo parameter
Maximum count = 1 // Maximum one Foo parameter
这 returns 所有具有名为 foo
的参数(显然不区分大小写)。所以我可能在这里做错了什么。但是什么?如何获得对唯一参数类型为 Foo
的任何方法的所有调用?
你快到了。您现在需要做的就是将 $Parameter$ 的 Expression type (regexp)
设置为 Foo
并将 Text/regexp
留空。此外,您可能希望启用 Apply constraint within type hierarchy
复选框,以查找 Foo 的子类。
请注意,您可以将所有变量的Text/regexp
留空。这相当于 .*
.
我有这个相当大的代码库(+/- 500k 行)。我在其中查找所有使用单个参数且该参数是特定类型的方法调用。
这意味着,我希望能够找到如下方法调用:
public class Foo { }
public class Bar { }
public class Doer{
public void doSomethingFoo(Foo foo) { }
public void doSomethingObject(Object object) { }
}
public class Usage {
Doer doer = new Doer();
public doSomething() {
Foo anObject = new Foo();
Bar bar = new Bar();
doer.doSomethingFoo(anObject);
doer.doSomethingObject(anObject);
doer.doSomethingObject(bar);
}
}
由于 doer.doSomethingFoo(anObject)
和 doer.doSomethingObject(anObject)
都被调用,因此搜索应该返回这两个语句。同样,不返回 doer.doSomethingObject(bar)
。当然,我不知道 doer
存在。
我正在尝试使用 IntelliJ 的结构搜索来执行此操作。我使用了以下模板 $Instance$.$Method$($Parameter$)
,具有以下参数:
$Instance$ -> Text/regexp = .*
$Method$ -> Text/regexp = .*
$Parameter$ -> Text/regexp = Foo
Minimum count = 1 // Minimum one Foo parameter
Maximum count = 1 // Maximum one Foo parameter
这 returns 所有具有名为 foo
的参数(显然不区分大小写)。所以我可能在这里做错了什么。但是什么?如何获得对唯一参数类型为 Foo
的任何方法的所有调用?
你快到了。您现在需要做的就是将 $Parameter$ 的 Expression type (regexp)
设置为 Foo
并将 Text/regexp
留空。此外,您可能希望启用 Apply constraint within type hierarchy
复选框,以查找 Foo 的子类。
请注意,您可以将所有变量的Text/regexp
留空。这相当于 .*
.