Faça o compilador java avisar quando um método anotado for usado (como @ deprecado)
Digamos que eu defina uma anotação personalizada chamada@Unsafe
.
Eu gostaria de fornecer um processador de anotação que detectereferências aos métodos anotados com@Unsafe
e imprima um aviso.
Por exemplo, dado este código ...
public class Foo {
@Unsafe
public void doSomething() { ... }
}
public class Bar {
public static void main(String[] args) {
new Foo().doSomething();
}
}
... Quero que o compilador imprima algo como:
WARN > Bar.java, line 3 : Call to Unsafe API - Foo.doSomething()
É muito semelhante em espírito a@Deprecated
, mas minha anotação está comunicando algo diferente, então não posso usar@Deprecated
diretamente. Existe uma maneira de conseguir isso com um processador de anotação? A API do processador de anotações parece estar mais focada nas entidadesaplicando as anotações (Foo.java
no meu exemplo) do que entidades quereferência membros anotados.
Essa questão fornece uma técnica para alcançá-lo como uma etapa de compilação separada usando o ASM. Mas gostaria de saber se posso fazer isso de uma maneira mais natural com o processamento de javac e anotações?