Domanda

Qual è l'elenco dei nomi di avviso @SuppressWarnings validi in Java?

Il bit che si trova tra (" ") in @SuppressWarnings (" ") .

È stato utile?

Soluzione

Dipende dal tuo IDE o compilatore.

Ecco un elenco per Eclipse Galileo:

  
      
  • tutto per sopprimere tutti gli avvisi
  •   
  • boxing per sopprimere gli avvisi relativi alle operazioni di boxe / unboxing
  •   
  • cast per eliminare gli avvisi relativi alle operazioni di cast
  •   
  • dep-ann per eliminare gli avvisi relativi all'annotazione obsoleta
  •   
  • deprecazione per sopprimere gli avvisi relativi alla deprecazione
  •   
  • fallthrough per eliminare gli avvisi relativi alle interruzioni mancanti nello switch   dichiarazioni
  •   
  • finalmente per sopprimere gli avvisi relativi al blocco finale che non lo fanno   tornare
  •   
  • nascondere per sopprimere gli avvisi relativi ai locali che nascondono la variabile
  •   
  • interruttore incompleto per eliminare gli avvisi relativi alle voci mancanti   in un'istruzione switch (caso enum)
  •   
  • nls per sopprimere gli avvisi relativi ai valori letterali delle stringhe non nls
  •   
  • null per eliminare gli avvisi relativi all'analisi null
  •   
  • restrizione per sopprimere gli avvisi relativi all'uso di scoraggiati o   riferimenti proibiti
  •   
  • seriale per sopprimere gli avvisi relativi a serialVersionUID mancante   campo per una classe serializzabile
  •   
  • accesso statico per eliminare gli avvisi relativi a statica errata   l'accesso
  •   
  • accesso sintetico per eliminare gli avvisi relativi a non ottimizzati   accesso dalle classi interne
  •   
  • non selezionato per sopprimere gli avvisi relativi alle operazioni non controllate
  •   
  • accesso al campo non qualificato per eliminare gli avvisi relativi al campo   accesso non qualificato
  •   
  • non utilizzato per sopprimere gli avvisi relativi al codice non utilizzato
  •   

Elenco per Indigo aggiunge:

  
      
  • javadoc per sopprimere gli avvisi relativi agli avvisi javadoc
  •   
  • rawtypes per sopprimere gli avvisi relativi all'utilizzo di tipi non elaborati
  •   
  • metodo statico per sopprimere gli avvisi relativi a metodi che potrebbero essere dichiarati come statici
  •   
  • super per sopprimere gli avvisi relativi alla sostituzione di un metodo senza super invocazioni
  •   

Elenco per Juno aggiunge:

  
      
  • risorsa per sopprimere gli avvisi relativi all'utilizzo di risorse di tipo Chiudibile
  •   
  • sync-override per sopprimere gli avvisi a causa della mancata sincronizzazione durante la sostituzione di un metodo sincronizzato
  •   

Kepler e Luna usano lo stesso elenco di token di Giunone ( list ).

Altri saranno simili ma vari.

Altri suggerimenti

Tutti i valori sono consentiti (quelli non riconosciuti vengono ignorati). L'elenco di quelli riconosciuti è specifico del compilatore.

In Tutorial Java non selezionato e deprecation sono elencati come i due avvisi richiesti da The Java Language Specification, pertanto dovrebbero essere validi con tutti i compilatori:

  

Ogni avviso del compilatore appartiene a una categoria. Le specifiche del linguaggio Java elencano due categorie: deprecazione e deselezionata.

Le sezioni specifiche all'interno di Le specifiche del linguaggio Java in cui sono definite non sono coerenti tra le versioni . Nella specifica Java SE 8 deselezionato e deprecation sono elencati come avvisi del compilatore nelle sezioni 9.6.4.5. @SuppressWarnings e 9.6.4.6 @Deprecated , rispettivamente.

Per il compilatore Sun, l'esecuzione di javac -X fornisce un elenco di tutti i valori riconosciuti da quella versione. Per 1.5.0_17, l'elenco sembra essere:

  • tutti
  • deprecazione
  • incontrollato
  • falltrough
  • path
  • serie
  • , infine

L'elenco è specifico del compilatore. Ma qui ci sono i valori supportati in Eclipse :

  
      
  • allDeprecation deprecazione anche all'interno del codice deprecato
  •   
  • allJavadoc javadoc non valido o mancante
  •   
  • assertIdentifier occorrenza di assert utilizzata come identificatore
  •   
  • boxing conversione auto boxing
  •   
  • charConcat quando un array di caratteri viene utilizzato in una concatenazione di stringhe senza essere convertito esplicitamente in una stringa
  •   
  • conditionAssign possibile assegnazione booleana accidentale
  •   Metodo
  • constructorName con   nome del costruttore
  •   
  • dep-ann mancante @ obsoleto   annotazione
  •   
  • deprecazione utilizzo di tipo deprecato o membro al di fuori del codice deprecato
  •   
  • scoraggiato uso di tipi corrispondenti a una regola di accesso scoraggiato
  •   
  • emptyBlock blocco vuoto non documentato
  •   
  • enumSwitch , switch incompleto switch enum incompleto
  •   
  • fallthrough possibile caso fall-fall
  •   
  • fieldHiding field nasconde un'altra variabile
  •   
  • finalBound parametro di tipo con limite finale
  •   
  • finalmente infine il blocco non si completa normalmente
  •   
  • proibito uso di tipi corrispondenti a una regola di accesso vietato
  •   
  • nascondi macro per fieldHiding, localHiding, typeHiding e maskedCatchBlock
  •   
  • indiretto statico riferimento indiretto al membro statico
  •   
  • intfAnnotation tipo di annotazione utilizzato come super interfaccia
  •   
  • intfNonInherited interfaccia compatibilità con metodi non ereditati
  •   
  • javadoc javadoc non valido
  •   
  • localHiding variabile locale che nasconde un'altra variabile
  •   
  • maskedCatchBlocks blocco nascosto nascosto
  •   
  • nls valori letterali delle stringhe non-nls (senza tag // $ NON-NLS-)
  •   
  • noEffectAssign assegnazione senza effetto
  •   
  • null potenziale controllo null mancante o ridondante
  •   
  • nullDereference controllo null mancante
  •   
  • over-ann mancante annotazione @Override
  •   
  • paramAssign assegnazione a un parametro
  •   
  • pkgDefaultMethod tenta di sostituire il metodo predefinito del pacchetto
  •   
  • raw utilizzo di tipo raw (anziché di tipo parametrizzato)
  •   
  • punto e virgola punto e virgola non necessari o istruzione vuota
  •   
  • seriale serialVersionUID mancante
  •   
  • specialParamHiding parametro costruttore o setter che nasconde un altro campo
  •   
  • accesso statico per indiretto Statico e staticReceiver
  •   
  • staticReceiver se viene utilizzato un ricevitore non statico per ottenere un campo statico o chiamare un metodo statico
  •   
  • super sovrascrivendo un metodo senza effettuare una super invocazione
  •   
  • sopprimere abilita @SuppressWarnings
  •   
  • sinteticoAccesso, accesso sintetico quando si esegue l'accesso sintetico per innerclass
  •   
  • attività abilita il supporto per i tag delle attività nel codice sorgente
  •   
  • typeHiding parametro di tipo che nasconde un altro tipo
  •   
  • non selezionata operazione di tipo non selezionata
  •   
  • inutileElse inutile altra clausola
  •   
  • accesso al campo non qualificato, campo non qualificato non qualificato   riferimento al campo
  •   
  • non utilizzato per non utilizzatoArgument, unusedImport, unusedLabel, unusedLocal, unusedPrivate e unusedThrown
  •   
  • unusedArgument argomento del metodo inutilizzato
  •   
  • unusedImport riferimento di importazione non utilizzato
  •   
  • unusedLabel etichetta non utilizzata
  •   
  • unusedLocal variabile locale non utilizzata
  •   
  • unusedPrivate dichiarazione di un membro privato non utilizzata
  •   
  • unusedThrown eccezione gettata dichiarata inutilizzata
  •   
  • inutile TypeType operazione cast / instanceof non necessaria
  •   
  • varargsCast l'argomento varargs necessita di cast esplicito
  •   
  • warningToken token di avviso non gestito in @SuppressWarnings
  •   

Sun JDK (1.6) ha un più breve elenco degli avvisi supportati:

  
      
  • ammortamento Verifica dell'utilizzo degli articoli ammortizzati.
  •   
  • non selezionato Fornisci maggiori dettagli per gli avvisi di conversione non controllati che sono obbligatori dalle specifiche del linguaggio Java.
  •   
  • seriale Avvisa della mancanza di definizioni serialVersionUID su classi serializzabili.
  •   
  • finalmente Avvisa delle clausole finalmente che non possono essere completate normalmente.
  •   
  • fallthrough Controlla i blocchi di interruttori per i casi di fall-through e fornisci un messaggio di avviso per quelli trovati.
  •   
  • percorso Verifica la presenza di un percorso inesistente nei percorsi di ambiente (come il percorso di classe).
  •   

Gli ultimi javac disponibili (1.6.0_13) per mac hanno i seguenti avvisi supportati

  
      
  • tutto
  •   
  • cast
  •   
  • deprecazione
  •   
  • divzero
  •   
  • vuoto
  •   
  • non selezionato
  •   
  • fallthrough
  •   
  • percorso
  •   
  • seriale
  •   
  • finalmente
  •   
  • sostituzioni
  •   

Un nuovo preferito per me è @SuppressWarnings (" WeakerAccess ") in IntelliJ, che gli impedisce di lamentarsi quando pensa che dovresti avere un modificatore di accesso più debole di quello che stai usando. Dobbiamo avere accesso pubblico per alcuni metodi per supportare i test e l'annotazione @VisibleForTesting non impedisce gli avvisi.

ETA: & Quot; anonimo " ha commentato, sulla pagina @MattCampbell collegata, la seguente nota incredibilmente utile:

  

Non dovresti aver bisogno di usare questo elenco per lo scopo che sei   descrivendo. IntelliJ aggiungerà quelle SuppressWarnings per te   automaticamente se lo chiedi a. È stato in grado di farlo per   tutte le versioni che ricordo.

     

Vai nella posizione in cui hai l'avviso e digita Alt-Invio   (o selezionalo nell'elenco Ispezioni se lo vedi lì).   Quando viene visualizzato il menu, mostra l'avviso e offre di correggerlo   tu (ad es. se l'avviso è "Metodo può essere statico", allora "Rendi statico"   è l'offerta di IntellJ per risolverlo per te), invece di selezionare " inserisci " ;,   basta usare il tasto freccia a destra per accedere al sottomenu, che avrà   opzioni come " Modifica impostazioni profilo ispezione " e così via. Al   in fondo a questo elenco ci saranno opzioni come " Sopprimere tutte le ispezioni per   classe "," sopprimere per la classe "," sopprimere per il metodo ", e occasionalmente   " Sopprimere per la dichiarazione " ;. Probabilmente vuoi qualunque di questi   appare per ultimo nell'elenco. Selezionando una di queste si aggiungerà a   @SuppressWarnings annotazione (o commento in alcuni casi) al tuo codice   sopprimendo l'avvertimento in questione. Non avrai bisogno di indovinare a quale   annotazione da aggiungere, perché IntelliJ sceglierà in base all'avviso   hai selezionato.

E questo sembra essere un elenco molto più completo, in cui ho trovato alcuni avvisi specifici per Android-Studio che non sono riuscito a trovare altrove (ad esempio SynchronizeOnNonFinalField)

https://jazzy.id.au/2008/10/30/ list_of_suppresswarnings_arguments.html

Oh, ora le linee guida di SO contraddicono le restrizioni di SO. Da un lato, dovrei copiare l'elenco piuttosto che fornire solo il link. D'altra parte, questo supererebbe il numero massimo consentito di caratteri. Quindi speriamo solo che il link non si interrompa.

JSL 1.7

La documentazione di Oracle menziona:

  • non selezionato : gli avvisi non controllati sono identificati dalla stringa "non selezionata".
  • deprecation : un compilatore Java deve produrre un avviso di deprecation quando viene utilizzato un tipo, metodo, campo o costruttore la cui dichiarazione è annotata con l'annotazione @Deprecated (ovvero sovrascritta, invocata o referenziata da nome), a meno che: [...] L'uso sia all'interno di un'entità che è annotata per sopprimere l'avviso con l'annotazione @SuppressWarnings ("quotazione"); o

Spiega quindi che le implementazioni possono aggiungere e documentare le proprie:

  

I fornitori di compilatori devono documentare i nomi degli avvisi che supportano insieme a questo tipo di annotazione. I fornitori sono incoraggiati a collaborare per garantire che gli stessi nomi funzionino su più compilatori.

Voglio solo aggiungere che esiste un elenco principale di parametri di soppressione IntelliJ su: https: // gist.github.com/vegaasen/157fbc6dce8545b7f12c

Sembra abbastanza completo. Parziale:

Warning Description - Warning Name

"Magic character" MagicCharacter 
"Magic number" MagicNumber 
'Comparator.compare()' method does not use parameter ComparatorMethodParameterNotUsed 
'Connection.prepare*()' call with non-constant string JDBCPrepareStatementWithNonConstantString 
'Iterator.hasNext()' which calls 'next()' IteratorHasNextCallsIteratorNext 
'Iterator.next()' which can't throw 'NoSuchElementException' IteratorNextCanNotThrowNoSuchElementException 
'Statement.execute()' call with non-constant string JDBCExecuteWithNonConstantString 
'String.equals("")' StringEqualsEmptyString 
'StringBuffer' may be 'StringBuilder' (JDK 5.0 only) StringBufferMayBeStringBuilder 
'StringBuffer.toString()' in concatenation StringBufferToStringInConcatenation 
'assert' statement AssertStatement 
'assertEquals()' between objects of inconvertible types AssertEqualsBetweenInconvertibleTypes 
'await()' not in loop AwaitNotInLoop 
'await()' without corresponding 'signal()' AwaitWithoutCorrespondingSignal 
'break' statement BreakStatement 
'break' statement with label BreakStatementWithLabel 
'catch' generic class CatchGenericClass 
'clone()' does not call 'super.clone()' CloneDoesntCallSuperClone

Ho notato che // noinspection può essere generato automaticamente in IntelliJ

  • assicurati di non avere già un piano @SuppressWarninigs prima dell'istruzione
  • Ora puoi generare automaticamente il // noinspection premendo Alt + Invio quando hai selezionato l'avviso e quindi usa il tasto freccia destra per visualizzare l'opzione Elimina per ...

Siamo finiti qui quando volevo sopprimere un interruttore " ha troppe etichette di casi " avvertimento di IntelliJ. Non ho trovato un elenco completo per il supporto @SuppressWarning di IntelliJ ma // noinspection ha fatto il trucco per me.

Se stai usando SonarLint, prova sopra il metodo o classe l'intera stringa di calamari:     @SuppressWarnings (" calamari: S1172 ")

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top