Сценарий структурного поиска Intellij для поиска всех вызовов метода, где исходный класс метода помечен аннотацией @Internal. Как, например, ниже - скрипт должен вернуться аа();
package com.interestingpackage.internal
import com.common.Internal;
@Internal
public class A {
public void a() {}
}
package com.common
public @interface Internal {}
package com.my.service
public class B {
private A a;
void d() {
a.a();
}
};
Шаблон
$Instance$.$MethodCall$($Parameter$)
Переменные
$MethodCall$
[script] =
import com.intellij.psi.*
__context__ instanceof PsiMethodCallExpression &&
__context__.resolveMethod() != null &&
java.util.regex.Pattern.matches("com\\.interestingpackage\\.(?!notfrompackage).+", __context__.resolveMethod().getContainingClass().getQualifiedName()) &&
com.intellij.codeInsight.AnnotationUtil.isAnnotated(__context__.resolveMethod().getContainingClass(),"com.common.Internal", true)
Результат Поиск не возвращает вызов метода a.a(); как результат.





Ваш шаблон работает для меня, когда я добавляю модификатор счета [0,∞] к $parameter$.
В вашем примере метод "а" не принимает никаких параметров, поэтому он не соответствует
$Instance$.$MethodCall$($Parameter$)
попробуйте использовать
$Instance$.$MethodCall$()
вместо.
Да, отсутствие внешнего вида [0,∞] было основной причиной.