Con PMD, se si desidera ignorare un avvertimento specifico, è possibile utilizzare // NOPMD
per ignorare tale riga.C'è un modo per ignorare un singolo avviso di FindBugs?
C'è qualcosa di simile per FindBugs?
Con PMD, se si desidera ignorare un avvertimento specifico, è possibile utilizzare // NOPMD
per ignorare tale riga.C'è un modo per ignorare un singolo avviso di FindBugs?
C'è qualcosa di simile per FindBugs?
L'approccio iniziale di FindBug prevede i file di configurazione XML, ovvero filters. Questo è molto meno conveniente della soluzione PMD, ma FindBug funziona su bytecode, non sul codice sorgente, quindi i commenti non sono ovviamente un'opzione. Esempio:
<Match>
<Class name="com.mycompany.Foo" />
<Method name="bar" />
<Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" />
</Match>
Tuttavia, per risolvere questo problema, FindBugs successivamente introdotto un'altra soluzione basata su annotations (vedi SuppressFBWarnings
) che è possibile utilizzare in classe o al livello di metodo (più conveniente che XML a mio parere). Esempio (forse non il migliore, ma, beh, è solo un esempio):
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value="HE_EQUALS_USE_HASHCODE",
justification="I know what I'm doing")
Nota che, dal momento FindBugs 3.0.0 SuppressWarnings
è stato deprecato in favore di @SuppressFBWarnings
a causa del nome scontro con Java SuppressWarnings
.
Ecco un esempio più completo di un filtro XML (nell'esempio sopra di per sé non funzionerà dal momento che mostra solo un frammento e manca il <FindBugsFilter>
etichette inizio e fine):
<FindBugsFilter>
<Match>
<Class name="com.mycompany.foo" />
<Method name="bar" />
<Bug pattern="NP_BOOLEAN_RETURN_NULL" />
</Match>
</FindBugsFilter>
Se sei utilizzando il plug-in Eclipse FindBugs, sfoglia il file del filtro XML utilizzando Window-> Preferences-> Java-> FindBugs-> Filter files-> Exclude filter files-> Aggiungi.
ho intenzione di lasciare questo uno qui: https://stackoverflow.com/a/14509697/1356953
Si prega di notare che questo funziona con java.lang.SuppressWarnings
quindi nessun bisogno di usare un'annotazione separata.
@SuppressWarnings su un campo sopprime solo findbugs avvertenze segnalati per tale dichiarazione campo, non ogni allarme associato a quel campo.
Ad esempio, questa sopprime il "campo sempre e solo impostato su null" avvertimento:
@SuppressWarnings ("UWF_NULL_FIELD") String s = null; Penso che il miglior che puoi fare sia isolare il codice con l'avviso nel più piccolo metodo che puoi, quindi sopprimere l'avviso sull'intero metodo.
'java.lang.SuppressWarnings' non può funzionare. Ha una conservazione del codice sorgente, quindi non è visibile a findbugs. –
Aggiornamento Gradle
dependencies {
compile group: 'findbugs', name: 'findbugs', version: '1.0.0'
}
Individuare il Rapporto FindBugs
file: /// Users/vostro_utente/IdeaProjects/Nome progetto/build/relazioni/findbugs/principale.html
Trova il messaggio specifico
Importa la versione corretta dell'annotazione
import edu.umd.cs.findbugs.annotations.SuppressWarnings;
Aggiungere l'annotazione direttamente sopra il codice incriminato
@SuppressWarnings("OUT_OF_RANGE_ARRAY_INDEX")
Vedi qui per ulteriori informazioni: findbugs Spring Annotation
Puoi usare 'compile 'net.sourceforge.findbugs: annotazioni: la sintassi 1.3.2' invece che è più corta. –
+1, ma aggiorna gentilmente la tua risposta con: gradle 'testCompile 'com.google.code.findbugs: annotazioni: 3.0.0'' e nome annotazione' @ SuppressFBWarnings' –
Come altri hanno detto, è possibile utilizzare il @SuppressFBWarnings
annotazione. Se non vuoi o non puoi aggiungere un'altra dipendenza al tuo codice, puoi aggiungere tu stesso l'annotazione al tuo codice, Findbugs non si cura di quale pacchetto sia l'annotazione.
@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 "";
}
Fonte: https://sourceforge.net/p/findbugs/feature-requests/298/#5e88
+1 per il tuo commento "So quello che sto facendo" – dhiller
Bonus Domanda: Come faccio a trovare il valore appropriato per un dato riferito "bug" (usando il sonar)? – PlanBForOpenOffice
Il problema, ovviamente, con l'utilizzo dell'approccio di annotazione è che il codice importa piuttosto inutilmente (e la dipendenza successiva) la libreria di Findbugs :( –