spotbugs online code bugs java annotations static-analysis findbugs

java - online - Anotaciones de Findbugs-¿Necesito annotation.jar y jsr305.jar en mi código implementado?



pmd java (2)

Las anotaciones tienen diferentes políticas de retención :

  • FUENTE - no en archivo de clase, descartado por el compilador (no sería necesario en tiempo de ejecución)
  • CLASE: en el archivo de clase, pero la máquina virtual puede deshacerse de ellos
  • RUNTIME - disponible para reflexión en tiempo de ejecución

La lógica indicaría que las anotaciones de retención de SOURCE no serían necesarias en el tiempo de ejecución, CLASS no debería y RUNTIME debe estar disponible.

Un vistazo rápido a las anotaciones JSR 305 indica que usan la política de retención RUNTIME ( example ), lo que me indica que estos archivos jar serían necesarios para cargar las clases en tiempo de ejecución para cumplir el contrato de anotación.

Pero en realidad no he probado esto yo mismo.

Por lo tanto, me gustaría usar las anotaciones de findbugs para suprimir las advertencias que consideramos un código correcto.

¿Necesitamos implementar annotation.jar y jsr305.jar en nuestro tiempo de ejecución de producción, o solo necesitamos estos archivos jar en el classpath para nuestro proyecto Eclipse y nuestro entorno de compilación de Unix?


Según mi pregunta relacionada , normalmente no tendrá problemas si estas anotaciones no están presentes en el tiempo de ejecución, aunque algunas de ellas sí tienen @Retention(RUNTIME) .