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

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

El bit que se encuentra entre ("") en @SuppressWarnings("") .

Depende de tu IDE o comstackdor.

Aquí hay una lista de Eclipse Galileo:

  • todo para suprimir todas las advertencias
  • boxeo para suprimir advertencias relativas a las operaciones de box / unboxing
  • lanzar para suprimir las advertencias relativas a las operaciones de lanzamiento
  • dep-ann para suprimir advertencias relativas a la anotación desaprobada
  • desaprobación para suprimir advertencias relativas a la desaprobación
  • Fallthrough para suprimir las advertencias relativas a los saltos faltantes en las declaraciones de cambio
  • finalmente para suprimir las advertencias relativas al bloque finalmente que no regresan
  • oculto para suprimir las advertencias relativas a los locales que ocultan variables
  • Interruptor incompleto para suprimir advertencias relativas a entradas faltantes en una instrucción switch (enum case)
  • nls para suprimir advertencias relativas a literales de cadena no-nls
  • nulo para suprimir las advertencias relativas al análisis nulo
  • restricción para suprimir advertencias relativas al uso de referencias desalentadas o prohibidas
  • serie para suprimir advertencias relativas al campo serialVersionUID faltante para una clase serializable
  • acceso estático para suprimir las advertencias relativas al acceso estático incorrecto
  • acceso sintético para suprimir las advertencias relativas al acceso no optimizado de las clases internas
  • desmarcado para suprimir advertencias relativas a las operaciones no verificadas
  • acceso de campo no calificado para suprimir advertencias relativas al acceso de campo no calificado
  • no utilizado para suprimir advertencias relativas al código no utilizado

Lista para Indigo agrega:

  • javadoc para suprimir advertencias relativas a las advertencias de javadoc
  • tipos de raw para suprimir advertencias relativas al uso de tipos crudos
  • método estático para suprimir advertencias relativas a métodos que podrían declararse como estáticos
  • super para suprimir las advertencias relativas a anular un método sin super invocaciones

Lista para Juno agrega:

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

Kepler y Luna usan la misma lista simbólica que Juno ( lista ).

Otros serán similares pero varían.

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

En los tutoriales de Java unchecked y la unchecked se enumeran como las dos advertencias requeridas por la especificación de lenguaje de Java, por lo tanto, deben ser válidas con todos los comstackdores:

Cada advertencia del comstackdor pertenece a una categoría. La Especificación del lenguaje Java enumera dos categorías: desactivación y desactivada.

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

Para el comstackdor 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 ser:

  • todas
  • deprecación
  • desenfrenado
  • caer a través
  • camino
  • de serie
  • finalmente

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

  • depreciación de todas las versiones incluso dentro del código obsoleto
  • allJavadoc invalid o missing javadoc
  • assertIdentifier ocurrencia de assert utilizado como identificador
  • conversión de autoboxing de boxeo
  • charConcat cuando se utiliza una matriz char en una concatenación de cadenas sin convertirse explícitamente en una cadena
  • condiciónAsignar posible asignación booleana accidental
  • método constructorName con nombre de constructor
  • dep-ann missing @Deprecated anotación
  • uso de deprecation del tipo obsoleto o miembro fuera del código obsoleto
  • desaconseja el uso de tipos que coincidan con una regla de acceso desalentada
  • emptyBlock bloque vacío no documentado
  • enumSwitch , interruptor de enum incompleto-interruptor incompleto
  • posible caso de caída a través
  • campo Campo de campo que oculta otra variable
  • parámetro del tipo finalBound con límite final
  • finalmente, finalmente bloquear no completar normalmente
  • uso prohibido de tipos que coincidan con una regla de acceso prohibido
  • ocultar macro para el campo Ocultar, local Ocultar, escribir Ocultar y enmascararClockBlock
  • indirectaReferencia indirecta estática al miembro estático
  • Tipo de anotación intfAnnotation utilizado como superinterfaz
  • intfNonInherited interface no-inherited method compatibility
  • javadoc inválido javadoc
  • localHidviendo la variable local ocultando otra variable
  • bloque de captura oculto enmascaradoCatchBlocks
  • nls literales de cadena non-nls (sin tags // $ NON-NLS-)
  • asignación de noEffectAssign sin efecto
  • nulo potencial falta o verificación nula redundante
  • nullDereference missing null check
  • anotación over-ann omitida @Override
  • Asignación de paramAssign a un parámetro
  • pkgDefaultMethod bash de reemplazar el método predeterminado del paquete
  • uso sin procesar a del tipo sin procesar (en lugar de un tipo parametrizado)
  • punto y coma punto y coma innecesarios
  • serial missing serialVersionUID
  • especialParamHiding constructor o parámetro setter que oculta otro campo
  • macro de acceso estático para indirectStatic y receptor estático
  • staticReceiver si se usa un receptor no estático para obtener un campo estático o llamar a un método estático
  • súper anulando un método sin hacer una súper invocación
  • suprimir habilitar @SuppressWarnings
  • Acceso sintético, acceso sintético al realizar acceso sintético para la clase interna
  • tareas habilitan la compatibilidad con tags de tareas en el código fuente
  • TipoParámetro de tipo de ocultación de otro tipo
  • operación no marcada sin marcar
  • innecesarioElse innecesaria cláusula else
  • acceso de campo no calificado , sin calificar Campo de referencia no calificada al campo
  • macro no utilizada para Argumento no utilizado, Importación no utilizada, Etiqueta no utilizada, UnusedLocal, UnusedPrivate y UnusedThrown no utilizado
  • argumento de método no utilizado Argumento no utilizado
  • referencia de importación no utilizada importada
  • etiqueta no utilizada etiqueta no utilizada
  • variable local no utilizada localizada no utilizada
  • statement de miembro privada no utilizada privada no utilizada
  • excepción arrojada declarada sin usar twrewn inusitada
  • uselessTypeCheck operación innecesaria de conversión / instancia de operación
  • varargsCast varargs argumento necesita molde explícito
  • warningToken token de advertencia no controlada en @SuppressWarnings

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

  • desaprobación Verifique el uso de los elementos depreciados.
  • sin marcar Proporcione más detalles sobre las advertencias de conversión no comprobadas exigidas por la Especificación del lenguaje Java.
  • serial Advierte sobre la ausencia de las definiciones serialVersionUID en las clases serializables.
  • finalmente advierte acerca de cláusulas finales que no pueden completarse normalmente.
  • Paso a paso Verifique los bloques de interruptores en casos de caídas y proporcione un mensaje de advertencia para los que se encuentren.
  • ruta Comprueba una ruta inexistente en las rutas de entorno (como classpath).

Los últimos javac disponibles (1.6.0_13) para Mac tienen los siguientes avisos compatibles

  • todas
  • emitir
  • deprecación
  • divzero
  • vacío
  • desenfrenado
  • caer a través
  • camino
  • de serie
  • finalmente
  • anula

Un nuevo favorito para mí es @SuppressWarnings("WeakerAccess") en IntelliJ, que evita quejarse 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 respaldar las pruebas, y la anotación @VisibleForTesting no previene las advertencias.

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 lado (por ejemplo, SynchronizeOnNonFinalField)

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

Oh, ahora las pautas de SO contradice las restricciones de SO. Por un lado, se supone que debo copiar la lista en lugar de solo proporcionar el enlace. Pero, por otro lado, esto excedería la cantidad máxima permitida de caracteres. Esperemos que el enlace no se rompa.

JSL 1.7

La documentación de Oracle menciona:

  • unchecked : las advertencias no unchecked se identifican con la cadena “desmarcada”.
  • deprecation : Un comstackdor Java debe producir una advertencia de desaprobación cuando se usa un tipo, método, campo o constructor cuya statement está anotada con la anotación @Deprecated (es decir, anulada, invocada o referenciada por nombre), a menos que: […] El uso está dentro de una entidad que está anotada para suprimir la advertencia con la anotación @SuppressWarnings (“desaprobación”); o

A continuación, explica que las implementaciones pueden agregar y documentar las suyas propias:

Los proveedores de comstackdores deben documentar los nombres de advertencia que admiten junto con este tipo de anotación. Se alienta a los proveedores a cooperar para garantizar que los mismos nombres funcionen en múltiples comstackdores.

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

Se ve 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