Con PMD, si desea ignorar una advertencia específica, puede usar // NOPMD
para que se ignore esa línea.¿Hay alguna manera de ignorar una sola advertencia FindBugs?
¿Hay algo similar para FindBugs?
Con PMD, si desea ignorar una advertencia específica, puede usar // NOPMD
para que se ignore esa línea.¿Hay alguna manera de ignorar una sola advertencia FindBugs?
¿Hay algo similar para FindBugs?
El enfoque inicial FindBugs implica archivos de configuración XML aka filters. Esto es realmente menos conveniente que la solución PMD, pero FindBugs funciona en bytecode, no en código fuente, por lo que los comentarios obviamente no son una opción. Ejemplo:
<Match>
<Class name="com.mycompany.Foo" />
<Method name="bar" />
<Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" />
</Match>
Sin embargo, para resolver este problema, FindBugs más tarde introdujo otra solución basada en annotations (ver SuppressFBWarnings
) que se puede utilizar en la clase o en el nivel de método (más conveniente que el XML en mi opinión). Ejemplo (quizás no es el mejor pero, bueno, es sólo un ejemplo):
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value="HE_EQUALS_USE_HASHCODE",
justification="I know what I'm doing")
Nota que desde FindBugs 3.0.0 SuppressWarnings
ha sido desaprobado en favor de @SuppressFBWarnings
debido al choque con el nombre de Java SuppressWarnings
.
Aquí es un ejemplo más completo de un filtro XML (el ejemplo anterior por sí solo no va a funcionar, ya que solo muestra un fragmento y no se encuentra el <FindBugsFilter>
iniciar y fin):
<FindBugsFilter>
<Match>
<Class name="com.mycompany.foo" />
<Method name="bar" />
<Bug pattern="NP_BOOLEAN_RETURN_NULL" />
</Match>
</FindBugsFilter>
Si está utilizando el complemento Eclipse FindBugs, busque su archivo de filtro XML usando Ventana-> Preferencias-> Java-> Buscar Bugs-> Filtrar archivos-> Excluir archivos de filtro-> Agregar.
voy a salir de ésta aquí: https://stackoverflow.com/a/14509697/1356953
Tenga en cuenta que esto funciona con java.lang.SuppressWarnings
así que no hay necesidad de utilizar una anotación separada.
@SuppressWarnings en un campo sólo suprime FindBugs advertencias informaron de que la declaración de campo, no todos los asociados con la advertencia de que campo.
Por ejemplo, esto suprime la "Field solamente siempre establece en null" advertencia:
@SuppressWarnings ("UWF_NULL_FIELD") cadena s = null; Creo que el mejor que puede hacer es aislar el código con la advertencia en el método más pequeño que pueda, luego suprima la advertencia en todo el método.
'java.lang.SuppressWarnings' no puede funcionar. Tiene retención de fuente, por lo que no es visible para encontrar errores. –
actualización Gradle
dependencies {
compile group: 'findbugs', name: 'findbugs', version: '1.0.0'
}
Localizar el Informe FindBugs
file: /// Users/su_usuario/IdeaProjects/Nombre del Proyecto/build/reportaje/findbugs/principal.html
acceder al mensaje específica
Importe la versión correcta de la anotación
import edu.umd.cs.findbugs.annotations.SuppressWarnings;
Añadir la anotación directamente sobre el código erróneo
@SuppressWarnings("OUT_OF_RANGE_ARRAY_INDEX")
Consulte aquí para obtener más información: findbugs Spring Annotation
Puede usar 'compile 'net.sourceforge.findbugs: annotations: 1.3.2'' sintaxis en su lugar, que es más corto. –
+1, pero amablemente actualice su respuesta con: gradle 'testCompile 'com.google.code.findbugs: anotaciones: 3.0.0'' y el nombre de la anotación' @ SuppressFBWarnings' –
Como otros mencionado, se puede utilizar la anotación @SuppressFBWarnings
. Si no quiere o no puede agregar otra Dependencia a su código, puede agregar la Anotación a su Código usted mismo, a los Findbugs no les importa en qué Paquete está la Anotación.
@Retention(RetentionPolicy.CLASS)
public @interface SuppressFBWarnings {
/**
* The set of FindBugs warnings that are to be suppressed in
* annotated element. The value can be a bug category, kind or pattern.
*
*/
String[] value() default {};
/**
* Optional documentation of the reason why the warning is suppressed
*/
String justification() default "";
}
Fuente: https://sourceforge.net/p/findbugs/feature-requests/298/#5e88
1 por su comentario "Yo sé lo que estoy haciendo" – dhiller
Bono Pregunta: ¿Cómo puedo encontrar el valor apropiado para un determinado informó "error" (utilizando un sonar)? – PlanBForOpenOffice
El problema, por supuesto con el uso del enfoque de anotación es que su código importa innecesariamente (y subsiguiente dependencia) la biblioteca Findbugs :( –