Пользовательская ссылка на метод посещения Android Lint - PullRequest
1 голос
/ 19 мая 2019

У меня есть рабочий пример Detector, который посещает вызовы метода по ссылке, но он не работает для вызовов по ссылке метода.

class RxOnErrorDetector : Detector(), Detector.UastScanner {
    override fun getApplicableMethodNames() = listOf("onError")

    override fun visitMethod(context: JavaContext, node: UCallExpression, method: PsiMethod) {
        if (context.evaluator.isMemberInClass(method, "io.reactivex.Emitter")) {
            context.report(ISSUE_ON_ERROR_CALL, node, context.getNameLocation(node), "onError method was called.")
        }
    }
}

Пример кода с вызовом ссылки на метод.

public class ObservableMethodReferenceProducer {

    private Listener listener = new Listener();

    public Observable<Integer> produceObservable() {
        return Observable.create(e -> {
            listener.doOnError(e::onError);
        });
    }

    class Listener {
        void doOnError(ErrorListener errorListener) {

        }
    }

    interface ErrorListener {
        void onError(Exception e);
    }
}

Каков наилучший способ обнаружения ссылки на метод определенного типа в Android Lint?

...