Pergunta

O que é a lista de nomes válidos de alerta @SuppressWarnings em Java?

O pouco que se encontrem entre a ("") em @SuppressWarnings("").

Foi útil?

Solução

Depende do seu IDE ou compilador.

Aqui é um lista para Eclipse Galileo:

  • todas para suprimir todos os avisos
  • boxe para avisos suprimir relativos ao boxe / unboxing operações
  • elenco para avisos suprimir relativos às operações elenco
  • dep-ann para suprimir avisos em relação ao deprecated anotação
  • depreciação para avisos suprimir relação à depreciação
  • fallthrough para suprimir avisos relativos a falta quebras no interruptor declarações
  • finalmente para avisos suprimir relação ao último bloco que não o fazem retorno
  • esconderijo para suprimir avisos relativos aos habitantes locais que escondem variável
  • incompleta-switch para suprimir avisos relativos a entradas em falta em uma instrução switch (caso enum)
  • NLS para avisos suprimir em relação ao não-nls strings literais
  • nulo para avisos suprimir relativos à análise nulo
  • restrição para suprimir advertências relativas à utilização de desencorajado ou referências proibidas
  • Serial para suprimir avisos relativos à falta de serialVersionUID campo para uma classe serializável
  • estática de acesso para suprimir avisos relativos a estática incorreta acesso
  • sintético de acesso para suprimir avisos relativos a unoptimized acesso a partir de classes internas
  • desmarcada para suprimir avisos relativos a operações não verificadas
  • sem ressalvas-field-access para suprimir avisos relativos ao campo Acesso sem ressalvas
  • não utilizado para avisos suprimir relação ao código não utilizado

Lista para Indigo acrescenta:

  • javadoc para avisos suprimir relativas aos avisos javadoc
  • rawtypes para avisos suprimir em relação ao uso de tipos de matérias-
  • estática método para avisos suprimir relativos aos métodos que poderiam ser declarados como estático
  • Super para suprimir avisos relativos ao substituir um método sem super-invocações

Lista de Juno acrescenta:

  • recurso para suprimir advertências relativas ao uso de recursos do tipo closeable
  • sync-override para avisos suprimir por causa de sincronizar faltando ao substituir um método sincronizado

Kepler e Luna usar a mesma lista token como Juno ( lista ).

Outros serão semelhantes, mas variam.

Outras dicas

Todos os valores são permitidos (aqueles não reconhecidos são ignorados). A lista de localidades reconhecidas é compilador específico.

Na A Tutoriais Java unchecked e deprecation são listados como os dois avisos exigidos por The Java Language Specification, portanto, eles devem ser válido com todos os compiladores:

Cada aviso do compilador pertence a uma categoria. As listas Java linguagem de especificação duas categorias: deprecation e desmarcada

.

As seções específicas dentro A linguagem Java Specification onde são definidas não é consistente em versões . No unchecked Java SE 8 Especificação e deprecation são listados como avisos do compilador nas seções 9.6.4.5. @SuppressWarnings e 9.6.4.6 @deprecated , respectivamente.

Para compilador da Sun, correndo javac -X dá uma lista de todos os valores reconhecidos por essa versão. Para 1.5.0_17, a lista parece ser:

  • todos
  • depreciação
  • desmarcada
  • fallthrough
  • caminho
  • série
  • finalmente

A lista é compilador específico. Mas aqui estão os valores suportados em Eclipse :

  • allDeprecation depreciação código mesmo dentro obsoleto
  • allJavadoc javadoc inválida ou inexistente
  • assertIdentifier ocorrência de afirmar usado como identificador
  • boxe conversão autoboxing
  • charConcat quando uma matriz de char é utilizado em uma concatenação sem ser convertido explicitamente a uma cadeia
  • conditionAssign atribuição possível boolean acidental
  • constructorName método com nome construtor
  • dep-ann faltando @deprecated anotação
  • depreciação uso de tipo ou membro código obsoleto fora deprecated
  • desencorajado uso de tipos que combinam com uma regra de acesso desencorajado
  • emptyBlock bloco vazio em situação irregular
  • enumSwitch , incompleta-switch interruptor enumeração incompleta
  • fallthrough caso possível fallthrough
  • fieldHiding campo escondendo outra variável
  • finalBound tipo de parâmetro com finais limite
  • finalmente finalmente bloco não completar normalmente
  • proibido uso de tipos que combinam com uma regra de acesso proibido
  • esconderijo macro para fieldHiding, localHiding, typeHiding e maskedCatchBlock
  • indirectStatic referência indireta ao membro estático
  • intfAnnotation tipo de anotação utilizado como interface de super-
  • intfNonInherited compatibilidade método de interface não-herdado
  • javadoc inválida javadoc
  • localHiding variável local escondendo outra variável
  • maskedCatchBlocks bloco catch escondido
  • NLS não-NLS strings literais (falta de etiquetas // $ NON-NLS-)
  • noEffectAssign atribuição sem efeito
  • nulo potencial falta ou cheque nulo redundante
  • nullDereference faltando verificação nulo
  • over-ann faltando @Override anotação
  • paramAssign atribuição a um parâmetro
  • pkgDefaultMethod tentativa de método de substituição pacote-padrão
  • raw uso de um tipo de matéria (em vez de um tipo parametrizada)
  • ponto e vírgula ponto e vírgula desnecessária ou declaração vazia
  • de série faltando serialVersionUID
  • specialParamHiding construtor ou setter parâmetro escondendo outro campo
  • estática de acesso macro para indirectStatic e staticReceiver
  • staticReceiver Se um receptor não estático é usado para obter um campo estático ou chamar um método estático
  • Super substituir um método sem fazer um super invocação
  • suprimir permitem @SuppressWarnings
  • syntheticAccess, sintético de acesso quando se realiza o acesso sintético para innerclass
  • tarefas ativar o suporte para tarefas de tags no código-fonte
  • typeHiding tipo de parâmetro esconder outro tipo
  • desmarcada operação do tipo desmarcada
  • unnecessaryElse cláusula else desnecessário
  • -field-acesso sem ressalvas, unqualifiedField não qualificado referência ao campo
  • não utilizado macro para unusedArgument, unusedImport, unusedLabel, unusedLocal, unusedPrivate e unusedThrown
  • unusedArgument argumento de método não utilizado
  • unusedImport de referência de importação não utilizados
  • unusedLabel etiqueta não utilizada
  • unusedLocal não utilizado variável local
  • unusedPrivate não utilizado declaração de membro privado
  • unusedThrown não utilizado exceção declarado jogado
  • uselessTypeCheck elenco desnecessário / instanceof operação
  • varargsCast varargs necessidade argumento conversão explícita
  • warningToken alerta não tratada token no @SuppressWarnings

Sun JDK (1.6) tem um mais curto lista de alertas suportados:

  • depreciação Verificar uso de itens depreciados.
  • desmarcada dar mais detalhes para avisos de conversão não verificados que são mandatados pela especificação da linguagem Java.
  • de série Avisar sobre a falta de definições serialVersionUID em classes serializáveis.
  • finalmente Avisar sobre finalmente cláusulas que não é possível concluir normalmente.
  • fallthrough blocos Verifique a chave para casos fallthrough e fornecer uma mensagem de aviso para os que são encontrados.
  • caminho Verifique se há um caminho inexistente em caminhos de ambiente (como classpath).

A última javac disponível (1.6.0_13) para Mac tem as seguintes advertências suportados

  • todas
  • elenco
  • depreciação
  • divzero
  • esvaziar
  • desmarcada
  • fallthrough
  • caminho
  • de série
  • finalmente
  • substituições

Um novo favorito para mim é @SuppressWarnings("WeakerAccess") no IntelliJ, que o impede de reclamar quando acha que você deve ter um acesso mais fraco modificador do que você está usando. Nós temos que ter acesso público para alguns métodos para testes de apoio, e a anotação @VisibleForTesting não impede os avisos.

ETA: "Anonymous", comentou, na página @MattCampbell ligada a, a seguinte nota incrivelmente útil:

Você não precisa usar essa lista para o efeito que você está descrevendo. IntelliJ irá adicionar esses SuppressWarnings para você automaticamente se você pedir para ele. Ele tem sido capaz de fazer isso por como muitos lançamentos de volta como eu me lembro.

Basta ir até o local onde você tem o aviso e digite Alt-Enter (Ou selecione-o na lista Inspeções se você está vendo lá). Quando o menu aparece, mostrando o aviso e oferecendo-se para corrigi-lo para você (por exemplo, se o aviso é "método pode ser estático" e depois "make estática" é a oferta de IntellJ para corrigi-lo para você), em vez de selecionar "enter", basta usar o botão de seta para a direita para acessar o submenu, que terá opções como "definição do perfil Editar inspeção" e assim por diante. No parte inferior desta lista será opções como "Suprimir todas as inspeções para classe", 'Suprimir por classe', 'Suprimir por método', e ocasionalmente "Suprimir a declaração". Você provavelmente quer qualquer um destes aparece por último na lista. Selecionando um deles irá adicionar uma @SuppressWarnings anotação (ou comentário em alguns casos) para o seu código suprimir o aviso em questão. Você não vai precisar de adivinhar em que anotação para adicionar, porque IntelliJ será escolhido com base no aviso selecionado.

E esta parece ser uma lista muito mais completa, onde eu encontrei algumas advertências específicas para Android-Studio que eu não poderia encontrar em outro lugar (por exemplo SynchronizeOnNonFinalField)

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

Oh, agora SO é diretrizes contraddict restrições é assim. Por um lado, eu deveria copiar a lista em vez de fornecer apenas o link. Mas, por outro lado, isso iria exceder o número máximo de caracteres permitido. Então, vamos só espero que o link não vai quebrar.

JSL 1.7

A documentação do Oracle menciona:

  • unchecked: Desativada avisos são identificados pela string "desmarcada".
  • deprecation: compilador Java Um deve produzir um aviso depreciação quando um tipo, método de campo, ou construtor cuja declaração é anotado com a anotação @deprecated é usada (ou seja substituído, invocado, ou referenciadas pelo nome), a menos que: [. ..] a utilização está dentro de uma entidade que é anotada para suprimir o aviso com as @SuppressWarnings anotação ( "descontinuação"); ou

Em seguida, explica que as implementações podem adicionar e documentar a sua própria:

fornecedores compilador deve documentar os nomes de alerta que eles suportam em conjunto com este tipo de anotação. Os vendedores são incentivados a cooperar para garantir que os mesmos nomes de trabalhar em vários compiladores.

Eu só quero acrescentar que há uma lista mestra de parâmetros IntelliJ suprimir em: https: // gist.github.com/vegaasen/157fbc6dce8545b7f12c

Parece bastante abrangente. 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

notei que //noinspection pode estar em auto-gerado IntelliJ

  • Certifique-se você não tiver um plano de @SuppressWarninigs antes da instrução
  • Agora você pode gerar automaticamente o //noinspection específica pressionando Alt + Enter quando você tem o aviso selecionado e, em seguida, use a tecla seta para a direita para ver o Suprimir para ... opção

Terminamos aqui quando eu queria suprimir um "switch tem muito poucos rótulos case" Aviso de IntelliJ. Eu não encontrar a lista completa de apoio @SuppressWarning do IntelliJ mas //noinspection fez o truque para mim.

Se você estiver usando SonarLint, tentar acima do método ou classe toda a cadeia de lula: @SuppressWarnings ( "lula: S1172")

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top