Anotación / decorador personalizado de Java @Testing

Quiero hacer algo como esto:

@Pruebas

private void methodThatGivesWarningIfUserTriesToUseThis () {

}

donde @Testing es una anotación / decorador personalizado en Java. Me gustaría que el comportamiento de esta anotación @Testing actúe @Testing EXACTAMENTE como la anotación @Deprecated – si yo o alguien más intenta accidentalmente utilizar esto en otras partes del código, el IDE dará una advertencia (y el nombre del método también tiene una huelga a través de la fuente). Así que para ex

¿Cómo hago esto?

** nota: no quiero usar @Deprecated porque el método no está en desuso, solo quiero usarlo solo para propósitos de prueba

** este marcador también se debe comprobar en tiempo de compilación, no runTime.

El problema es que las anotaciones son, como su nombre indica, sólo para anotar 🙂 Crear tal anotación es bastante fácil, necesitas hacer algo como esto:

 public @interface Testing 

Para que pueda ser utilizado por su IDE en tiempo de compilación usted tiene que escribir un plug-in.

He aquí un buen comienzo que encontré en otra pregunta de SO para comenzar con el desarrollo de complementos.

Parece que estás describiendo algo como @VisibleForTesting , que forma parte de las bibliotecas de Guava (anteriormente conocidas como "Colecciones de Google"). Si crea uno propio, probablemente querrá que sea @Documented y @Retention(SOURCE) .

No estoy al tanto de ningún gancho o función que pueda causar que los miembros no @Deprecated disparen avisos o banderas IDE como si fueran @Deprecated . Debido a que la API de reflejo y la API de reflexión no rastrea expresiones y declaraciones individuales (como se documenta en esta respuesta de SO ), probablemente no tendrá mucha suerte detectarlo usted mismo sin un analizador de Java completo.

Usted podría considerar la posibilidad de escribir una regla personalizada Lint para resolver este problema. Cuando se detecta su anotación @Testing , el IDE mostrará una advertencia de Lint (por ejemplo, un subrayado amarillo en el caso de Eclipse + ADT).

Una guía detallada para escanear archivos fuente de Java para problemas específicos con Lint se puede encontrar en los documentos de herramientas de Android aquí .

  • Por qué necesitamos utilizar Context.obtainStyledAttributes y declare-styleable para obtener el atributo de un componente GUI
  • problema de glowpadview con xml
  • Imagen de limpieza para ayudar a tesseract en Android
  • Android - forma simple de entrada de usuario web-view para back-end java con jQuery Mobile
  • Android: ¿Cómo puedo obtener la dirección IP de una aplicación de Android?
  • ¿Cómo se puede proteger la información contenida en un APK?
  • Información externa del hardware
  • ¿Por qué el atributo minHeight no funciona en WebView Android?
  • ¿Existe algún #IF y #CONST equivalente .NET en Java / Android?
  • conexión de base de datos mysql con jabón webservices en android
  • ¿Cómo se pueden manejar múltiples solicitudes para llenar modelos con RXJava Observables?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.