2009-07-06 18 views
15

Uso un class for detecting email addresses che utilizza booleani finali statici per configurare il comportamento di corrispondenza. Da quando ho aggiornato a Eclipse 3.5 ricevo avvertimenti circa codice morto, in quanto Eclipse si accorge che un ramo in questo non può essere raggiunto:Come disattivare gli avvisi di Eclipse 3.5 sul codice morto

private static final boolean ALLOW_DOMAIN_LITERALS = false; 
private static final String domain = ALLOW_DOMAIN_LITERALS ? rfc2822Domain : rfc1035DomainName; 

Stranamente è felice di questo:

private static final String domain; 
static { 
    if(ALLOW_DOMAIN_LITERALS) { 
     domain = rfc2822Domain; 
    } else { 
     domain= rfc1035DomainName; 
    } 
} 

dal momento che sembra riconoscere il comune pattern if(DEBUG), ma l'operatore ternario non sembra contare.

Dal momento che preferirei non puntare troppo la lezione solo per mantenere felice Eclipse, preferirei inserire uno @SuppressWarnings nella parte superiore invece di modificare il codice. Sfortunatamente non riesco a trovare un altro a parte la forza bruta "all". Esiste un valore solo per il rilevamento del codice guasto?

risposta

18

UPDATE: da Adamo di commento:

In Eclipse 3.6 e versioni più recenti Eclipse @SuppressWarnings("unused") può ora essere utilizzata per sopprimere avvertimenti 'codice morto'. Vedi Christopher Stock's answer.

Vedere anche Eclipse 4.4(Luna) help per @SuppressWarnings.

risposta originale:

Tutti i valori SuppressWarnings Eclipse 3.5 "sa" sono elencati in this page. Sembra che non ci sia alcun valore per sopprimere solo il nuovo rilevamento di codice morto. Ma è possibile utilizzare la @SuppressWarnings("all") poco prima della dichiarazione domain quindi sarà eliminare gli avvisi solo per quella linea non per tutta la classe:

private static final boolean ALLOW_DOMAIN_LITERALS = false; 
@SuppressWarnings("all") 
private static final String domain = ALLOW_DOMAIN_LITERALS ? rfc2822Domain : rfc1035DomainName; 

Perché controllo codice morto è uno nuovo si può anche suggerire un enchancement nel Eclipse bug database anche per supportare l'operazione ternaria.

+1

Ecco la voce bugzilla: https://bugs.eclipse.org/bugs/show_bug.cgi?id = 282768 Bugzilla certamente manca sia la ricerca duplicata che la sintassi Wiki StackOverflow offre :-) –

+1

Ho aggiunto anche uno per i @SuppressWarnings mancanti: https://bugs.eclipse.org/bugs/show_bug.cgi?id= 282770 –

+3

Lo stato di entrambe le richieste è ora verificato fisso – Casebash

8

Selezionare Ignore in Windows -> Preferences > Java > Compiler > Errors/Warnings sotto Potential programming problems sezione

+1

Ma generalmente la funzione mi piace, non funziona qui. Se fosse il mio codice, lo cambierei. Puoi anche disabilitarlo a livello di progetto (ad esempio, abilitare le impostazioni del compilatore specifiche del progetto nelle proprietà del progetto), ma non voglio nemmeno farlo. –

6

È possibile disattivare gli avvisi del 'codice morto' utilizzando

@SuppressWarnings("unused") 

consultare la documentazione Eclipse per ulteriori informazioni:

http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-suppress_warnings.htm

"non utilizzati" per eliminare gli avvisi relativi al codice non utilizzato e codice morto

Saluti

Christopher

+2

Votato perché potrebbe essere utile per qualcuno che viene Qui. La funzione non esisteva allora, ma ora funziona (vedi Problemi di Bugzilla collegati nei miei commenti sulla risposta accettata). –

Problemi correlati