¿Cuál es la lista de nombres de advertencia válidos de @SuppressWarnings en Java?
eclipse compiler-warnings (7)
¿Cuál es la lista de nombres de advertencia válidos de @SuppressWarnings
en Java?
El bit que aparece entre ("")
en @SuppressWarnings("")
.
Depende de tu IDE o compilador.
Aquí hay una list de Eclipse Galileo:
- todo para suprimir todas las advertencias
- boxeo para suprimir las advertencias relativas a las operaciones de boxeo / desempaquetado
- lanzar para suprimir las advertencias relativas a las operaciones de lanzamiento
- dep-ann para suprimir las advertencias relativas a la anotación en desuso
- depreciación para suprimir las advertencias relativas a la depreciación
- paso a paso para suprimir las advertencias relativas a las fallas que faltan en las declaraciones de cambio
- Finalmente, para suprimir las advertencias relativas al bloqueo final que no regresa.
- Ocultar para suprimir las advertencias relativas a los locales que ocultan la variable.
- cambio incompleto para suprimir las advertencias relativas a las entradas faltantes en una declaración de cambio (caso de enumeración)
- nls para suprimir las advertencias relativas a los literales de cadenas que no son nls
- nulo para suprimir las advertencias relativas al análisis nulo
- restricción para suprimir las advertencias relativas al uso de referencias desalentadas o prohibidas
- serie para suprimir las 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 clases internas
- desactivado para suprimir las advertencias relativas a operaciones no comprobadas
- acceso de campo no calificado para suprimir las advertencias relativas al acceso de campo no calificado
- no utilizado para suprimir las advertencias relativas al código no utilizado
List para Indigo añade:
- javadoc para suprimir las advertencias relativas a las advertencias de javadoc
- tipos básicos para suprimir las advertencias relativas al uso de tipos brutos
- método estático para suprimir las advertencias relativas a los métodos que podrían declararse como estáticos
- super para suprimir las advertencias relativas a anular un método sin super invocaciones
List para Juno añade:
- Recurso para suprimir las advertencias relativas al uso de los recursos del tipo Closeable.
- 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 de fichas que Juno ( list ).
Otros serán similares pero varían.
La lista es específica del compilador. Pero aquí están los valores soportados en Eclipse :
- AllDeprecation depreciación incluso dentro de código en desuso
- Todo javadoc no válido o javadoc faltante
- assertIdentifier ocurrencia de aserción utilizada como identificador
- conversión de boxeo autoboxing
- charConcat cuando se utiliza una matriz char en una concatenación de cadenas sin convertirse explícitamente en una cadena
- conditionAssign posible asignación booleana accidental
- método de constructorName con nombre de constructor
- dep-ann falta @ anotación obsoleta
- uso en desuso del tipo en desuso o miembro fuera del código desaprobado
- uso desalentado de tipos que coincidan con una regla de acceso desalentada
- emptyBlock bloque vacío sin documentar
- enumSwitch , conmutador incompleto de conmutación incompleta
- caso de caída posible a través de la caída
- campo Ocultar campo ocultando otra variable
- Parámetro de tipo finalBound con límite final
- finalmente finalmente el bloque no se completa normalmente
- Uso prohibido de tipos que coinciden con una regla de acceso prohibido
- macro de ocultación para ocultación de campo, ocultación local, ocultación de tipo y enmascarado Bloqueo de captura
- Referencia indirecta estática indirecta a miembro estático
- Tipo de anotación intfAnnotation utilizado como super interfaz
- Interfaz intfNonInherited compatibilidad con métodos no heredados
- javadoc inválido javadoc
- LocalHiding variable local que oculta otra variable
- maskedCatchBlocks bloque catch oculto
- Literales de la cadena nls non-nls (sin etiquetas // $ NON-NLS-)
- NoEffectAssign asignación sin efecto
- nulo potencial faltante o comprobación nula redundante
- nullDereference falta null check
- Over - Ann falta @Override anotación
- paramAssign asignación a un parámetro
- pkgDefaultMethod intento de anular el método predeterminado del paquete
- Uso sin formato a de tipo sin formato (en lugar de un tipo parametrizado)
- punto y coma innecesario punto y coma o declaración vacía
- serie faltante serialVersionUID
- El constructor specialParamHiding o el parámetro de establecimiento oculta otro campo
- Macro de acceso estático para indirectStatic y staticReceiver
- staticReceiver si se utiliza 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 súper invocación
- suprimir habilitar @SuppressWarnings
- Acceso sintético, acceso sintético cuando se realiza acceso sintético para clases no internas
- Las tareas habilitan el soporte para las etiquetas de tareas en el código fuente.
- Tipo Ocultar el parámetro de tipo ocultando otro tipo
- operación de tipo no comprobada no comprobada
- innecesario, si no es necesaria otra cláusula
- campo de acceso no calificado , campo de acceso no calificado referencia no calificada al campo
- Macro no utilizada para unArgumento no utilizado, Importación no utilizada, Etiqueta no utilizada, Lengua no utilizada, Privada no utilizada y No utilizado.
- unusedArgument argumento de método no utilizado
- unusedImport referencia de importación no utilizada
- unusedLabel etiqueta no utilizada
- unusedLocal variable local no utilizada
- unusedPrivate declaración de miembro privado no utilizado
- unusedThrown no utilizado declarado excepción lanzada
- uselessTypeCheck innecesario cast / instanceof operation
- varargsCast varargs argumento necesita una conversión explícita
- warningToken token de advertencia no manejado en @SuppressWarnings
Sun JDK (1.6) tiene una list más corta de advertencias compatibles:
- Verificación de desprecio por uso de artículos depreciados.
- sin marcar Proporcione más detalles para las advertencias de conversión sin marcar exigidas por la especificación del lenguaje Java.
- serial Avisa sobre las definiciones de serialVersionUID que faltan en las clases serializables.
- Finalmente Avisar sobre las cláusulas que finalmente no pueden completarse normalmente.
- Fallthrough Revise los bloques de interruptores para casos de caída y proporcione un mensaje de advertencia para cualquiera que se encuentre.
- ruta Verifique si hay una ruta inexistente en las rutas del entorno (como la ruta de clase).
El último javac disponible (1.6.0_13) para mac tiene las siguientes advertencias compatibles
- todos
- emitir
- deprecación
- divzero
- vacío
- desenfrenado
- caer a través
- camino
- de serie
- finalmente
- anula
Se permiten todos los valores (se ignoran los valores no reconocidos). La lista de reconocidos es específica del compilador.
En los Tutoriales de Java, la opción unchecked
y la deprecation
se enumeran como las dos advertencias requeridas por la Especificación del lenguaje de Java, por lo tanto, deben ser válidas para todos los compiladores:
Cada advertencia del compilador pertenece a una categoría. La especificación del lenguaje Java enumera dos categorías: en desuso y sin marcar.
Las secciones específicas dentro de la Especificación del lenguaje Java donde se definen no son consistentes en todas las versiones. En la especificación de Java SE 8, la casilla de verificación sin marcar y la 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, la ejecución de javac -X
proporciona una lista de todos los valores reconocidos por esa versión. Para 1.5.0_17, la lista parece ser:
- todos
- deprecación
- desenfrenado
- caer a través
- camino
- de serie
- finalmente
Solo quiero agregar que hay una lista maestra de parámetros de supresión de IntelliJ en: https://gist.github.com/vegaasen/157fbc6dce8545b7f12c
Parece bastante comprensivo. 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
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 que el que está usando. Tenemos que tener acceso público a algunos métodos para admitir las pruebas, y la anotación @VisibleForTesting
no evita las advertencias.
Y esta parece ser una lista mucho más completa, donde encontré algunas advertencias específicas de Android-Studio que no pude encontrar en ningún otro lugar (por ejemplo, SynchronizeOnNonFinalField)
https://jazzy.id.au/2008/10/30/list_of_suppresswarnings_arguments.html
Oh, ahora las directrices de SO contraddict 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.
JSL 1.7
La documentación de Oracle menciona:
-
unchecked
marcar: las advertenciasunchecked
marcar se identifican con la cadena "sin marcar". -
deprecation
: un compilador de 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, 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 ("desprecation"); 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 cooperar para garantizar que los mismos nombres funcionen en varios compiladores.