Как проверить ссылки на аннотированные методы
Я пытаюсь найти способ проверить мои классы на наличие ссылок на методы с определенной аннотацией (например, "Устаревший").
Насколько я понимаю, анализ байт-кода не будет работать, потому что он не содержит никаких аннотаций.
Использование APT не очень помогает, потому что мне нужны ссылки на методы, а не сами аннотированные методы.
Итак, какие у меня есть варианты?
Лучшее, что я могу придумать, - это составить список аннотированных методов с последующим полным анализом кода, проверяя каждый вызов метода по списку.
Есть ли способ сделать это эффективно в плагине Eclipse или Ant?
3 ответа
Решение
Анализ байт-кода будет работать! Например, ASM хорошо обрабатывает аннотации.
Используя библиотеку Reflections, это просто:
Reflections reflections = new Reflections("my.package", new MethodAnnotationsScanner());
Set<Method> deprecated = reflections.getMethodsAnnotatedWith(Deprecated.class);