I have a parent class P
with subclasses A
and B
.
I would like to find all usages of a method f
of A
.
So either p.f()
or a.f()
but not b.f()
, because an instance B b
cannot call A.f
.
I know I can find
Calls directly to A.f
. This misses:
P p = new A();
p.f();
Calls to P.f
and any override. This has too many false positives.
I know there are always going to be false positives using only compile-time information, but there could be fewer.
You could use Structural Search (Edit | Find | Search Structurally...) for this. Use a query like:
$x$.f()
with expression type filter A|P
. This will find all calls to f()
on expressions of a type of either A
or P
. If you have any more classes in the hierarchy between A
and P
, you will need to add these to the expression type filter also.