Qual é a lista de @SuppressWarnings
nomes de aviso válidos em Java?
O pouco que se encontrem entre o ("")
no @SuppressWarnings("")
.
java
eclipse
warnings
compiler-warnings
suppress-warnings
Ron Tuffin
fonte
fonte
"ProhibitedExceptionDeclared"
no Eclipse Collections Framework (org.eclipse.collections.impl.block.function.checked.ThrowingFunction
) e isso não está listado abaixo.Respostas:
Depende do seu IDE ou compilador.
Aqui está uma lista para o Eclipse Galileo:
A lista para Indigo acrescenta:
A lista de Juno acrescenta:
Kepler e Luna usam a mesma lista de tokens que Juno ( lista ).
Outros serão semelhantes, mas variam.
fonte
void foo( Object o ) { boolean b; if ( ( b = o == null ) ) o = new Object(); o.toString(); }
. Alguns ambientes (por exemplo, NetBeans 7.3 com Java 6 JDK [1.6.0_41]) serão gerados"o possibly null"
nao.toString()
chamada, emborao
não possam ser nulos nesse momento.semicolon
parece não funcionar em luna? :( Alguém pode verificar sesemicolon
é realmente válido?Todos os valores são permitidos (os não reconhecidos são ignorados). A lista de reconhecidos é específica do compilador.
Nos Tutoriais Java
unchecked
edeprecation
são listados como os dois avisos exigidos pelo Java Language Specification, portanto, eles devem ser válidos com todos os compiladores:As seções específicas em The Java Language Specification, onde são definidas, não são consistentes entre as versões. Na especificação do Java SE 8
unchecked
edeprecation
são listados como avisos do compilador nas seções 9.6.4.5. @SuppressWarnings e 9.6.4.6 @ Deprecated , respectivamente.Para o compilador da Sun, a execução
javac -X
fornece uma lista de todos os valores reconhecidos por essa versão. Para 1.5.0_17, a lista parece ser:fonte
A lista é específica do compilador. Mas aqui estão os valores suportados no Eclipse :
O Sun JDK (1.6) possui uma lista mais curta de avisos suportados:
O mais recente javac disponível (1.6.0_13) para mac tem os seguintes avisos suportados
fonte
Um novo favorito para mim está
@SuppressWarnings("WeakerAccess")
no IntelliJ, que evita queixas quando pensa que você deve ter um modificador de acesso mais fraco do que está usando. Temos que ter acesso público a alguns métodos para dar suporte ao teste, e a@VisibleForTesting
anotação não impede os avisos.ETA: "Anonymous" comentou, na página @MattCampbell vinculada a, a seguinte nota incrivelmente útil:
fonte
Percebi que
//noinspection
pode ser gerado automaticamente no IntelliJ@SuppressWarninigs
antes da declaração//noinspection
pressionando Alt + Enter quando o aviso estiver selecionado e, em seguida, use a tecla de seta para a direita para ver a opção Suprimir para ...Acabei aqui quando eu queria suprimir um aviso de "switch tem muito poucos rótulos de caso" do IntelliJ. Não encontrei uma lista completa para o
@SuppressWarning
suporte do IntelliJ, mas//noinspection
fiz o truque para mim.fonte
//noinspection SwitchStatementWithTooFewBranches
antes dasswitch
obras também para mim.E esta parece ser uma lista muito mais completa, onde encontrei alguns avisos específicos para o Android-Studio que não encontrei em nenhum outro lugar (por exemplo, SynchronizeOnNonFinalField)
https://jazzy.id.au/2008/10/30/list_of_suppresswarnings_arguments.html
Ah, agora as diretrizes da SO contradizem as restrições da SO. Por um lado, devo copiar a lista em vez de fornecer apenas o link. Mas, por outro lado, isso excederia o número máximo permitido de caracteres. Então, vamos apenas torcer para que o link não seja quebrado.
fonte
JSL 1.7
A documentação do Oracle menciona:
unchecked
: Os avisos não verificados são identificados pela sequência "não verificada".deprecation
: Um compilador Java deve produzir um aviso de reprovação quando um tipo, método, campo ou construtor cuja declaração é anotada com a anotação @Deprecated é usado (ou seja, substituído, invocado ou referenciado por nome), a menos que: [...] use está dentro de uma entidade anotada para suprimir o aviso com a anotação @SuppressWarnings ("descontinuação"); ouEm seguida, explica que as implementações podem adicionar e documentar suas próprias:
fonte
unchecked
seja o único endossado pelo padrão; o muito próxima seção da que você citou diz avisos deprecation não deve ser produzido quando "O uso está dentro de uma entidade que é anotado para suprimir o aviso com a anotação@SuppressWarnings("deprecation")
"Eu só quero acrescentar que há uma lista principal de parâmetros de supressão do IntelliJ em: https://gist.github.com/vegaasen/157fbc6dce8545b7f12c
Parece bastante abrangente. Parcial:
fonte
Se você estiver usando o SonarLint, tente acima do método ou classifique toda a string do squid: @SuppressWarnings ("squid: S1172")
fonte