我正在尝试在IntelliJ IDEA中找到一种方法来查找特定项目中几个库方法调用和类的所有用法。
目标是编译引用这些特定方法或类的类列表。
我怎么能这样做,我可以看到有一个MethodReferencesSearch
看起来可能有用,但搜索方法需要一个PsiMethod实例。
如何创建与特定lib类中的方法匹配的PSI方法实例(假设我想在Java concat(...)
类中找到String
方法的所有用法
基本上我正在尝试构建一个插件,它将从项目中生成某些方法调用的图形。例如,通过查找库中的某些方法调用来绘制一组路由的东西。即如果A类用类型B调用x(T)而类B用类C类调用x(T),我会得到一个看起来像A - >的图形。 B - > C等。发现用法很棒,它不能很好地满足我的需求。
答案 0 :(得分:2)
你可以通过JavaPsiFacade.getInstance(...)得到真正的PsiMethod.findClass(“java.lang.String”,... allScope(...))。findsMethodByName(“concat”,false)[0 ]。然后可以将此方法传递给MethodReferenceSearch。
答案 1 :(得分:0)
我假设您无法保证您可以轻松使用concat
(例如,在用户在打开文档中的光标位置)。
一种hacky方法是在String中创建一个小的,正确的,自包含的java类,如下所示:
class Nothing { String s = "a".concat("b"); }
然后,有一种方法(如果我没记错的话)使用IntelliJ来解析此String中包含的类,从而为您想要查找的方法提供PsiReference
(在这种情况下, concat
)。
这种方法对你有用吗?
如果是这样,我可以挖出一个代码示例来说明如何做到这一点。