Сделайте так, чтобы java-компилятор предупреждал, когда используется аннотированный метод (например, @deprecated)
Допустим, я определил пользовательскую аннотацию под названием@Unsafe
.
Я хотел бы предоставить процессор аннотаций, который будет обнаруживатьРекомендации к методам, аннотированным@Unsafe
и распечатать предупреждение.
Например, учитывая этот код ...
public class Foo {
@Unsafe
public void doSomething() { ... }
}
public class Bar {
public static void main(String[] args) {
new Foo().doSomething();
}
}
... Я хочу, чтобы компилятор печатал что-то вроде:
WARN > Bar.java, line 3 : Call to Unsafe API - Foo.doSomething()
Это очень похоже на дух@Deprecated
, но моя аннотация сообщает что-то другое, поэтому я не могу использовать@Deprecated
непосредственно. Есть ли способ добиться этого с помощью процессора аннотаций? API процессора аннотаций, кажется, больше ориентирован на объектыприменение аннотации (Foo.java
в моем примере), чем лица, которыессылка аннотированные участники.
Этот вопрос предоставляет методику для достижения этого в качестве отдельного этапа сборки с использованием ASM. Но мне интересно, смогу ли я сделать это более естественным образом с помощью обработки javac и аннотаций?