Как проверить ссылки на аннотированные методы

Я пытаюсь найти способ проверить мои классы на наличие ссылок на методы с определенной аннотацией (например, «Устарело»).

Насколько я понимаю, анализ байтового кода не будет работать, поскольку он не содержит никаких аннотаций.
Использование APT не очень помогает, потому что мне нужно ссылки на методы, а не сами аннотированные методы.

Итак, какие варианты у меня есть?

Лучшее, что я могу придумать, это составить список аннотированных методов с последующим полным анализом кода, проверяя каждый вызов метода по списку.
Есть ли способ сделать это эффективно в подключаемом модуле eclipse или ant? задача?


person Stroboskop    schedule 05.11.2009    source источник


Ответы (3)


Анализ байт-кода будет работать! ASM для примера обрабатывает аннотации очень Что ж.

person Olivier    schedule 05.11.2009
comment
подожди... ты прав. Что заставило меня думать, что аннотации не компилируются в байт-код? - person Stroboskop; 06.11.2009

В другом вопросе я попросил синтаксический анализатор Java для язык Java. Для анализа кода я использую этот. Возможно, это хорошо и для вас.

person tangens    schedule 05.11.2009
comment
Честно говоря, я не могу вспомнить, для чего мне это нужно. Но я считаю, что встроил его в наш плагин Eclipse, и Eclipse сделает синтаксический анализ за меня. - person Stroboskop; 19.04.2013

С помощью библиотеки Reflections это просто:

Reflections reflections = new Reflections("my.package", new MethodAnnotationsScanner());
Set<Method> deprecated = reflections.getMethodsAnnotatedWith(Deprecated.class);
person zapp    schedule 17.03.2013