Hacer que el compilador de Java advierta cuando se usa un método anotado (como @deprecated)

Digamos que defino una anotación personalizada llamada@Unsafe.

Me gustaría proporcionar un procesador de anotaciones que detectereferencias a los métodos anotados con@Unsafe e imprime una advertencia.

Por ejemplo, dado este código ...

public class Foo {
  @Unsafe
  public void doSomething() { ... }
}

public class Bar {
  public static void main(String[] args) {
    new Foo().doSomething();
  }
}

... Quiero que el compilador imprima algo como:

WARN > Bar.java, line 3 : Call to Unsafe API - Foo.doSomething()

Es muy similar en espíritu a@Deprecated, pero mi anotación es comunicar algo diferente, así que no puedo usar@Deprecated directamente. ¿Hay alguna manera de lograr esto con un procesador de anotaciones? La API del procesador de anotaciones parece estar más centrada en las entidades.aplicando las anotaciones (Foo.java en mi ejemplo) que las entidades quereferencia miembros comentados

Esta pregunta proporciona una técnica para lograrlo como un paso de compilación separado usando ASM. Pero me pregunto si puedo hacerlo de una manera más natural con el procesamiento de Java y anotación.

Respuestas a la pregunta(3)

Su respuesta a la pregunta