1

我试图在 IntelliJ IDEA 中找到一种方法来查找特定项目中一些库方法调用和类的所有用法。

目标是编译引用这些特定方法或类的类列表。

我该怎么做呢,我可以看到有一个MethodReferencesSearch看起来很有帮助的方法,但是搜索方法需要一个 PsiMethod 实例。

如何创建与特定 lib 类中的方法匹配的 PSI 方法实例(比如我想concat(...)在 JavaString类中找到该方法的所有用法

基本上我正在尝试构建一个插件,该插件将从项目中生成某些方法调用的图表。例如,通过在库中查找某些方法调用来绘制一组路线图。即,如果 A 类以 B 类的类型调用 x(T),B 类以 C 类的类型调用 x(T),我将有一个看起来像 A -> B -> C 等的图表。查找用法很棒,它只是不能很好地满足我的需要。

4

2 回答 2

2

您可以通过 JavaPsiFacade.getInstance(...).findClass("java.lang.String", ...allScope(...)).findsMethodByName("concat", false)[0] 获得真正的 PsiMethod。然后可以将此方法传递给 MethodReferenceSearch。

于 2013-10-17T19:41:19.623 回答
0

我假设您不能保证您可以使用concateasy available(例如,在打开的文档中用户的光标位置)。

一个 hacky 方法是在 String 中创建一个小的、正确的、自包含的 java 类,如下所示:

class Nothing { String s = "a".concat("b"); }

然后,有一种方法(如果我没记错的话)使用 IntelliJ 来解析这个 String 中包含的类,从而为您提供一个PsiReference您想要查找用法的方法(在本例中为concat)。

这种方法对您有用吗?

如果是这样,我可以挖掘出一个关于如何做到这一点的代码示例。

于 2013-10-17T11:34:11.367 回答