2010-07-30 12 views
11

Findbugs riporta questo:Posso dire a findbugs di ignorare le classi che non riesco ad aggiungere?

findbugs: 
[findbugs] Executing findbugs from ant task 
[findbugs] Running FindBugs... 
[findbugs] The following classes needed for analysis were missing: 
[findbugs] com.company.OptionalClass 
[findbugs] Warnings generated: 11 
[findbugs] Missing classes: 2 
[findbugs] Calculating exit code... 
[findbugs] Setting 'missing class' flag (2) 
[findbugs] Setting 'bugs found' flag (1) 
[findbugs] Exit code set to: 3 
[findbugs] Java Result: 3 
[findbugs] Classes needed for analysis were missing 
[findbugs] Output saved to findbugs.xml 
BUILD SUCCESSFUL 

Questa OptionalClass si fa riferimento da un vaso di terze parti per le quali non ho il codice sorgente, e per il quale io non voglio un'analisi findbugs. Si riferisce a una classe che non ho nel mio classpath o in nessun altro. Questa classe è probabilmente utilizzata in alcuni casi, quando il nostro jar di terze parti è configurato in un certo modo.

C'è un modo per dire a findbug di ignorare questa classe?

Si noti che completa l'analisi e produce un rapporto findbugs.xml, quindi questo è un problema minore.

risposta

3

Questo messaggio viene visualizzato perché da qualche parte nelle classi binarie si fa riferimento a quella classe. Non significa necessariamente che FindBugs stava tentando di analizzare com.company.OptionalClass per segnalarci; piuttosto è più probabile che FindBugs lo stia analizzando per ottenere maggiori informazioni sulla classe che lo fa riferimento.

considerazione alcuni del codice sorgente, che si vuole analizzare:

package my.actual.codebase; 
import com.some.third.party.stuff.OptionalClass; 

class ReferencesOptionalClass extends OptionalClass {} 

Questo tipo di esempio è comune con le classi di test, che fanno riferimento ad esempio [email protected] ma il jar JUnit non è incluso in ciò che si desidera analizzare.

Nell'esempio precedente si desiderano i risultati per ReferenceOptionalClass, ma per ottenerli, alcune parti di FindBug devono essere visualizzate su OptionalClass. Se non può farlo, perché non è lì, segnala che la classe manca [1]. Quando FindBugs non riesce a trovare quella classe, in genere interrompe il tipo specifico di analisi che stava tentando di eseguire e continua con il resto dell'analisi senza problemi.

La semplice risposta è se sei soddisfatto del livello di analisi che FindBugs ti offre, quindi ignora semplicemente l'errore.

[1] Si noti che è probabile che questo possa essere anche un riferimento transitivo, cioè il codice include la classe A, che fa riferimento a B in un JAR ausiliario, che quindi fa riferimento a OptionalClass.

1

No, Tuttavia, non è necessario disporre di origine o generare report di findbug per questo codice se si aggiunge il jar alla sezione 'auxillary jars' del file di progetto findbugs.

+0

Non ho nemmeno il barattolo delle classi compilate. –

1

di ignorare le classi terze parti, specificare un'opzione -auxclasspath classpath quando si utilizza da riga di comando o di fornire un elemento nidificato <auxClasspath refid="classpath"> quando si utilizza formica compito, in cui il vostro vaso di terze parti è in classpath.

Problemi correlati