Intellij Idea 使用PsiMethodCallExpression的Get方法

5jvtdoz2  于 2023-06-28  发布在  其他
关注(0)|答案(1)|浏览(141)

目前,我正在编写一个代码检查,其中我需要确定某些方法的使用。为此,我使用visitCallExpression(expression: PsiCallExpression),它工作正常。然而,我需要了解在某些情况下为了跳过检查而调用了哪个方法PsiCallExpression。例如,我希望在测试类和一些特定的方法中跳过我的检查。我已经试过使用getUseScope,但完全不清楚如何处理结果并从中获得完全限定的方法名称。

8xiog9wr

8xiog9wr1#

最后在intelij支持处得到了回答:https://intellij-support.jetbrains.com/hc/en-us/community/posts/11522817858834-Get-method-in-which-PsiMethodCallExpression-is-used总而言之,没有简单的方法可以做到这一点,但是可以迭代元素树中的元素,直到找到PsiMethod,通常应该是这样。下面是代码片段,它可以做到这一点:

var element = expression.getParent()
while (element != null) {
    if (element is PsiMethod) {
        val method = element as PsiMethod
        // do whatever you want to do with PsiMethod instance
    } else {
        element = element.getParent()
    }
}

相关问题