2008-10-30 10 views
18

FindBugs ha trovato un potenziale bug nel mio codice. Ma non è un bug.Quando usi Eclipse con FindBugs puoi contrassegnare un bug come non un bug e rimuoverlo dall'elenco dei bug?

È possibile contrassegnare questa occorrenza come "non un bug" e rimuoverla dall'elenco dei bug?

Ho documentato abbastanza chiaramente perché per ogni caso non è un bug.

Ad esempio. Una classe implementa l'interfaccia comparabile. ha il metodo compareTo. Tuttavia, non ho scavalcato il metodo degli uguali.

FindBugs non piace questo come lo stato JavaDocs che si raccomanda che

(x.compareTo(y)==0) == (x.equals(y)) 

Anche se nel mio caso la condizione di cui sopra è e sarà sempre vero.

+0

Solo un annuncio per [error-prono] (http://errorprone.info/) che si integra facilmente con la maggior parte dei sistemi di compilazione e funziona con lo standard ['SuppressWarnings'] (https://docs.oracle. com/javase/8/docs/api/java/lang/SuppressWarnings.html) annotazione (a differenza di quella specifica di FindBugs). Se FindBugs ti sta dando dei problemi, prova ad essere incline agli errori, sarai contento di averlo fatto. – dimo414

risposta

34

Invece di usare i filtri, è anche possibile utilizzare l'annotazione SuppressWarnings. È necessario utilizzare l'annotazione dal pacchetto findbugs, ovvero è necessario importare o utilizzare il nome completo di esso. Questo perché oltre al SuppressWarnings del JDK ha una "Classe" di conservazione, necessaria perché findbugs opera sul bytecode compilato anziché sul codice sorgente.

Esempio:

@edu.umd.cs.findbugs.annotations.SuppressWarnings(
    value="EQ_COMPARETO_USE_OBJECT_EQUALS", 
    justification="because I know better") 

C'è un caso angolo dove probabilmente non dovrebbe usare l'annotazione: Se il codice è il codice di libreria che finisce in un barattolo, che potrebbe essere utilizzato da altri progetti e sei ancora su Java5. Il motivo di ciò è un bug nel JDK che causa l'arresto di javac se l'annotazione non si trova nel classpath.

+0

Trovo la soluzione più adatta alla domanda iniziale. +1 – VonC

+0

Questo era esattamente quello che stavo cercando, grazie. Sono curioso di sapere se esiste un plugin per Eclipse per generare automaticamente queste annotazioni? – dimo414

+0

Non conosco alcun plug-in di eclissi che possa generare queste annotazioni per voi – WMR

6

Probabilmente con l'aggiunta di un filter come parametro del findbugs

clausole Incontro possono abbinare solo le informazioni che è in realtà contenuta nei casi di bug

<Match> 
    <Class name="com.foobar.MyClass" /> 
    <Method name="myMethod" /> 
    <Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS" /> 
</Match> 
0

da un'altra parte: se si utilizza tale strumento di revisione automatica del codice che evidenzia potenziali problemi in base a raccomandazioni ampiamente note, è possibile che si debbano attenersi ai relativi consigli? pensa alle persone che manterranno il codice dopo di te.

Cosa succede se il codice cambia dopo il tempo?

+7

la domanda riguarda specificamente cosa fare quando si sa che l'errore segnalato è sbagliato, quindi "aderire alla raccomandazione" probabilmente non è più utile/possibile – pvgoddijn