¿Cuál es la lista de @SuppressWarnings
nombres de advertencia válidos en Java?
El bit que se interpone entre el ("")
in @SuppressWarnings("")
.
java
eclipse
warnings
compiler-warnings
suppress-warnings
Ron Tuffin
fuente
fuente
"ProhibitedExceptionDeclared"
dentro de Eclipse Collections Framework (org.eclipse.collections.impl.block.function.checked.ThrowingFunction
), y eso no se enumera a continuación.Respuestas:
Depende de su IDE o compilador.
Aquí hay una lista para Eclipse Galileo:
La lista para Indigo agrega:
La lista de Juno agrega:
Kepler y Luna usan la misma lista de tokens que Juno ( lista ).
Otros serán similares pero varían.
fuente
void foo( Object o ) { boolean b; if ( ( b = o == null ) ) o = new Object(); o.toString(); }
. Algunos entornos (por ejemplo, NetBeans 7.3 w / Java 6 JDK [1.6.0_41]) se generarán"o possibly null"
en lao.toString()
llamada aunqueo
no puedan ser nulos en ese punto.semicolon
no parece funcionar en luna? :( ¿Alguien puede verificar sisemicolon
es realmente válido?Todos los valores están permitidos (los no reconocidos se ignoran). La lista de reconocidos es específica del compilador.
En The Java Tutorials
unchecked
ydeprecation
se enumeran como las dos advertencias requeridas por The Java Language Specification, por lo tanto, deben ser válidas con todos los compiladores:Las secciones específicas dentro de la especificación del lenguaje Java donde se definen no son consistentes entre las versiones. En la especificación Java SE 8
unchecked
ydeprecation
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
javac -X
proporciona una lista de todos los valores reconocidos por esa versión. Para 1.5.0_17, la lista parece ser:fuente
La lista es específica del compilador. Pero aquí están los valores soportados en Eclipse :
Sun JDK (1.6) tiene una lista más corta de advertencias compatibles:
Los últimos javac disponibles (1.6.0_13) para mac tienen las siguientes advertencias compatibles
fuente
Un nuevo favorito para mí está
@SuppressWarnings("WeakerAccess")
en IntelliJ, 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 a algunos métodos para admitir las pruebas, y el@VisibleForTesting
anotación no evita las advertencias.ETA: "Anónimo" comentó, en la página @MattCampbell vinculada a, la siguiente nota increíblemente útil:
fuente
Noté que
//noinspection
se puede generar automáticamente en IntelliJ@SuppressWarninigs
antes de la declaración//noinspection
presionando Alt + Enter cuando haya seleccionado la advertencia y luego use la tecla de flecha derecha para ver la opción Suprimir para ...Terminé aquí cuando quería suprimir una advertencia de "interruptor tiene muy pocas etiquetas de caso" de IntelliJ. No encontré una lista completa para el
@SuppressWarning
soporte de IntelliJ pero//noinspection
hice el truco por mí.fuente
//noinspection SwitchStatementWithTooFewBranches
antes de lasswitch
obras también para mí.Y esta parece ser una lista mucho más completa, donde encontré algunas advertencias específicas para Android-Studio que no pude encontrar en ningún otro lado (por ejemplo, SynchronizeOnNonFinalField)
https://jazzy.id.au/2008/10/30/list_of_suppresswarnings_arguments.html
Oh, ahora las pautas 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. Esperemos que el enlace no se rompa.
fuente
JSL 1.7
La documentación de Oracle menciona:
unchecked
: Las advertencias no verificadas se identifican con la cadena "sin marcar".deprecation
: Un compilador de Java debe generar una advertencia de desuso cuando se utiliza 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 ("desaprobación"); oLuego explica que las implementaciones pueden agregar y documentar las suyas propias:
fuente
unchecked
sea el único avalado por la norma; la siguiente sección de la que citó dice que las advertencias de desaprobación no deben producirse cuando "El uso está dentro de una entidad que está anotada para suprimir la advertencia con la anotación@SuppressWarnings("deprecation")
"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:
fuente
Si está utilizando SonarLint, intente por encima del método o clasifique toda la cadena de calamar: @SuppressWarnings ("squid: S1172")
fuente