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?

questionAnswers(3)

yourAnswerToTheQuestion