¿Cuál es la lista de nombres de advertencia @SuppressWarnings válidos en Java?


¿Cuál es la lista de nombres de advertencia @SuppressWarnings válidos en Java?

El bit que viene entre ("") en @SuppressWarnings("").

Author: user8, 2009-07-30

7 answers

Depende de tu IDE o compilador.

Aquí hay una lista para Eclipse Galileo:

  • todas para suprimir todas las advertencias
  • boxeo para suprimir las advertencias relativas a las operaciones de boxeo/unboxing
  • cast para suprimir las advertencias relativas a las operaciones de cast
  • dep-ann para suprimir las advertencias relativas a la anotación obsoleta
  • desaprobación para suprimir las advertencias relativas a obsolescencia
  • fallthrough para suprimir las advertencias relativas a las interrupciones faltantes en el interruptor declaraciones
  • finalmente para suprimir las advertencias relativas a finalmente bloquear que no return
  • ocultar para suprimir las advertencias relativas a los locales que ocultan variable
  • incomplete-cambiar para suprimir las advertencias relativas a las entradas faltantes en una instrucción switch (enum case)
  • nls para suprimir las advertencias relativas a literales de cadena no-nls
  • null para suprimir las advertencias relativas al análisis nulo
  • restricción para suprimir las advertencias relativas al uso de referencias prohibidas
  • serial para suprimir las advertencias relativas a la ausencia de serialVersionUID campo para una clase serializable
  • static-acceso para suprimir las advertencias relativas a la estática incorrecta acceso
  • sintético-acceso para suprimir advertencias relativas a no optimizados acceso desde clases internas
  • unchecked para suprimir las advertencias relativas a las operaciones no controladas
  • unqualified-field-access para suprimir las advertencias relativas al campo acceso no cualificado
  • no utilizado para suprimir las advertencias relativas al código no utilizado

Lista para Índigo añade:

  • javadoc para suprimir las advertencias relativas a javadoc advertencias
  • rawtypes para suprimir las advertencias relativas al uso de tipos raw
  • static-method para suprimir las advertencias relativas a los métodos que podrían declararse como estáticos
  • super para suprimir las advertencias relativas a la sobreescritura de un método sin super invocaciones

Lista para Juno añade:

  • resource para suprimir las advertencias relativas al uso de recursos de tipo Closeable
  • sync-override para suprimir las advertencias debido a la falta de sincronización al sobrescribir un método sincronizado

Kepler y Luna usan la misma lista de tokens que Juno (list).

Otros serán similares pero variarán.

 223
Author: cletus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-29 17:59:41

Todos los valores están permitidos (los no reconocidos se ignoran). La lista de los reconocidos es específica del compilador.

En Los Tutoriales de Java unchecked y deprecation se enumeran como las dos advertencias requeridas por la Especificación del Lenguaje Java, por lo tanto, deben ser válidas con todos los compiladores:

Cada advertencia del compilador pertenece a una categoría. La especificación del lenguaje Java enumera dos categorías: obsolescencia y sin marcar.

Las secciones específicas dentro La Especificación del lenguaje Java donde se definen no es consistente en todas las versiones. En la especificación Java SE 8 unchecked y deprecation se enumeran como advertencias del compilador en las secciones 9.6.4.5. @SuppressWarnings y 9.6.4.6 @Deprecated, respectivamente.

Para el compilador de Sun, ejecutar javac -X proporciona una lista de todos los valores reconocidos por esa versión. Para 1.5.0_17, la lista parece be:

  • todos
  • desaprobación
  • sin controlar
  • fallthrough
  • ruta
  • serial
  • finalmente
 46
Author: Martin McNulty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-29 01:25:52

La lista es específica del compilador. Pero aquí están los valores soportados en Eclipse :

  • allDeprecation desaprobación incluso dentro de código obsoleto
  • allJavadoc no válido o que falta javadoc
  • assertIdentifier ocurrencia de assert utilizada como identificador
  • boxeo autoboxing conversión
  • charConcat cuando se usa una matriz char en una concatenación de cadenas sin ser convertido explícitamente a una cadena
  • conditionAssign posible asignación booleana accidental
  • constructorName método con nombre del constructor
  • dep-ann missing @Deprecated anotación
  • desaprobación uso de tipo o miembro obsoleto fuera de código obsoleto
  • desaconsejado uso de tipos que coincidan con una regla de acceso desaconsejada
  • emptyBlock indocumentado bloque vacío
  • enumSwitch, incomplete-switch incomplete enum switch
  • fallthrough posible caso fall-through
  • fieldHiding campo que oculta otra variable
  • finalBound parámetro de tipo con final bound
  • finalmente finalmente bloquear no completar normalmente
  • prohibido uso de tipos que coincidan con una regla de acceso prohibido
  • ocultar macro para fieldHiding, localHiding, typeHiding y maskedCatchBlock
  • indirectStatic referencia indirecta al miembro estático
  • intfAnnotation tipo de anotación utilizado como super interfaz
  • intfNonInherited interfaz compatibilidad de método no heredado
  • javadoc no válido javadoc
  • localHiding variable local ocultar otra variable
  • Bloques de captura enmascarados bloque de captura oculto
  • nls literales de cadena no-nls (sin etiquetas //NON NON-NLS -)
  • noEffectAssign asignación sin efecto
  • null comprobación nula potencial o redundante
  • nullDereference missing null check
  • over-ann falta @Override anotación
  • paramAssign asignación a un parámetro
  • pkgDefaultMethod intento de anular el método por defecto del paquete
  • raw uso a de tipo raw (en lugar de un tipo parametrizado)
  • punto y coma punto y coma innecesario o declaración vacía
  • serial missing serialVersionUID
  • specialParamHiding parámetro constructor o setter que oculta otro campo
  • static-access macro para indirectStatic y staticReceiver
  • staticReceiver si se usa un receptor no estático para obtener un campo estático o llamar a un método estático
  • super invalidar un método sin hacer una super invocación
  • suprimir habilitar @ SuppressWarnings
  • syntheticAccess, synthetic-access cuando se realiza el acceso sintético para innerclass
  • tasks habilitar el soporte para etiquetas de tareas en el código fuente
  • typeHiding tipo parámetro que oculta otro tipo
  • sin marcar operación de tipo sin marcar
  • unnecessaryElse unnecessary else clause
  • unqualified-field-access, unqualifiedField unqualified referencia al campo
  • unused macro para unusedArgument, unusedImport, unusedLabel, unusedLocal, unusedPrivate y unusedThrown
  • unusedArgument argumento del método no utilizado
  • Importación no utilizada referencia de importación no utilizada
  • Etiqueta no utilizada etiqueta no utilizada
  • unusedLocal variable local no utilizada
  • unusedPrivate unusused private member declaration
  • unusedThrown excepción declarada lanzada no utilizada
  • uselessTypeCheck fundición/instancia innecesaria de operación
  • varargsCast el argumento varargs necesita un cast explícito
  • warningToken unhandled warning token in @SuppressWarnings

Sun JDK (1.6) tiene una lista más corta de advertencias soportadas:

  • desaprobación Comprobar el uso de elementos depreciados.
  • unchecked Proporcione más detalles para las advertencias de conversión no verificadas que son obligatorias por la Especificación del lenguaje Java.
  • serial Advertir sobre la falta de serialVersionUID definiciones en serializable clases.
  • finally Advierta sobre las cláusulas finally que no pueden completarse normalmente.
  • fallthrough Compruebe los bloques de conmutadores para casos fallidos y proporcione un mensaje de advertencia para cualquiera que se encuentre.
  • path Compruebe si hay una ruta inexistente en rutas de entorno (como classpath).

El último javac disponible (1.6.0_13) para mac tiene las siguientes advertencias soportadas

  • todos
  • cast
  • desaprobación
  • divzero
  • vacío
  • sin comprobar
  • fallthrough
  • ruta
  • serial
  • finalmente
  • anula
 36
Author: D. Wroblewski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-30 12:20:37

Un nuevo favorito para mí es @SuppressWarnings("WeakerAccess") en IntelliJ, lo que evita que se queje cuando cree que debería tener un modificador de acceso más débil del que está utilizando. Tenemos que tener acceso público para algunos métodos para soportar pruebas, y la anotación @VisibleForTesting no impide las advertencias.

 4
Author: barclay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-22 21:33:31

Y esta parece ser una lista mucho más completa, donde encontré algunas advertencias específicas para Android-Studio que no pude encontrar en otro lugar (por ejemplo, SynchronizeOnNonFinalField)

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

Oh, ahora las directrices de SO contradicen las restricciones de SO. Por un lado, se supone que debo copiar la lista en lugar de proporcionar solo el enlace. Pero por otro lado, esto excedería el número máximo permitido de caracteres. Así que esperemos que el enlace no se rompa.

 1
Author: matteo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-11 17:26:31

JSL 1.7

La documentación de Oracle menciona:

  • unchecked: Las advertencias sin marcar se identifican con la cadena "sin marcar".
  • deprecation: Un compilador Java debe producir una advertencia de desaprobación cuando se usa un tipo, método, campo o constructor cuya declaración está anotada con la anotación @Deprecated (es decir, sobrescrita, invocada o referenciada por nombre), a menos que: [...] El uso está dentro de una entidad que está anotada para suprimir la advertencia con el anotación @SuppressWarnings ("desaprobación"); o

Luego explica que las implementaciones pueden agregar y documentar sus propias:

Los proveedores de compiladores deben documentar los nombres de advertencia que admiten junto con este tipo de anotación. Se alienta a los proveedores a que cooperen para garantizar que los mismos nombres funcionen en varios compiladores.

 1
Author: Ciro Santilli 新疆改造中心 六四事件 法轮功,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-20 12:15:27

Solo quiero añadir que hay una lista maestra de los parámetros de supresión de IntelliJ en: https://gist.github.com/vegaasen/157fbc6dce8545b7f12c

Parece bastante completo. Parcial:

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
 1
Author: Matt Campbell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-20 16:44:20