Recientemente descubrí la anotación de FindBugs '@edu.umd.cs.findbugs.annotations.SuppressWarnings
, que es bastante buena y permite básicamente decirle a FindBugs que ignore ciertas advertencias.Cómo suprimir múltiples advertencias de FindBugs para la misma línea de código
He implementado con éxito mi propio SLF4J vinculante siguiendo sus recomendaciones para tomar slf4j-simple
y modificarlo con su propio logger y logger enlaces de fábrica, y me complace decir que funciona como un encanto.
Acabo de funcionar encontrar errores en el paquete que contiene la unión de este SLF4J y se quejan de una determinada línea de código escrito por el original StaticLoggerBinder
autor (Ceki Gulku):
// to avoid constant folding by the compiler, this field must *not* be final.
publicstatic String REQUESTED_API_VERSION = "1.6"; // !final
FindBugs se queja de que este campo "no es final, pero debe ser". Sin embargo, la gente (muy) inteligente de SLF4J ya pensó en eso, y colocó los comentarios circundantes provistos más arriba.
Por lo tanto, sólo para obtener FindBugs se callaran, he modificado el código por mi costumbre de suprimir las advertencias FB:
@edu.umd.cs.findbugs.annotations.SuppressWarnings("MS_SHOULD_BE_FINAL")
public static String REQUESTED_API_VERSION = "1.6";
Cuando limpio mi proyecto y vuelva a ejecutar FindBugs, consigo un segundo advertencia en la misma línea de código, esta vez quejándose:
este campo no se lee. El campo es público o protegido, por lo que tal vez esté destinado a ser utilizado con clases que no se ven como parte del análisis. Si no, considere eliminarlo de la clase.
Cuando agrego esta segunda supresión de la advertencia:
@edu.umd.cs.findbugs.annotations.SuppressWarnings("MS_SHOULD_BE_FINAL")
@edu.umd.cs.findbugs.annotations.SuppressWarnings("URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
public static String REQUESTED_API_VERSION = "1.6";
consigo un error del compilador/sintaxis de Eclipse:
@SuppressWarnings anotación duplicados.
¿Cómo puedo suprimir múltiples advertencias de FindBugs en la misma línea de código?
Sugerencia: Use 'SuppressFBWarnings' lo que puede importar como lo haría con cualquier otra clase en lugar de utilizar el nombre totalmente calificado . –