2009-07-06 25 views
15

Uso un class for detecting email addresses que usa booleanos finales estáticos para configurar el comportamiento de coincidencia. Puesto que he actualizado a Eclipse 3.5 consigo las advertencias sobre el código muerto, ya que Eclipse se da cuenta de que una rama de esto no se puede llegar:Cómo elimino las advertencias de Eclipse 3.5 del código

private static final boolean ALLOW_DOMAIN_LITERALS = false; 
private static final String domain = ALLOW_DOMAIN_LITERALS ? rfc2822Domain : rfc1035DomainName; 

extraño que parezca que está contento con esto:

private static final String domain; 
static { 
    if(ALLOW_DOMAIN_LITERALS) { 
     domain = rfc2822Domain; 
    } else { 
     domain= rfc1035DomainName; 
    } 
} 

ya que parece reconocer el patrón if(DEBUG) común, pero el operador ternario parece no contar.

Dado que prefiero no inclinar demasiado la clase solo para mantener a Eclipse satisfecho, preferiría poner un @SuppressWarnings en la parte superior en lugar de cambiar el código. Desafortunadamente no puedo encontrar uno que coincida con la fuerza bruta "all". ¿Hay algún valor solo para la detección del código muerto?

Respuesta

18

ACTUALIZACIÓN: a partir de Adán comentario:

En Eclipse 3.6 y versiones más recientes de Eclipse @SuppressWarnings("unused") ahora se puede utilizar para suprimir las advertencias de código muerto '. Ver Christopher Stock's answer.

Véase también Eclipse 4.4(Luna) help para @SuppressWarnings.

Respuesta original:

Todos los valores SuppressWarnings Eclipse 3.5 "sabe" se enumeran en this page. Parece que no hay ningún valor para suprimir solo la nueva detección de código muerto. Sin embargo, se puede utilizar el @SuppressWarnings("all") justo antes de la declaración domain por lo que suprimirá las advertencias sólo para esa línea no para toda la clase:

private static final boolean ALLOW_DOMAIN_LITERALS = false; 
@SuppressWarnings("all") 
private static final String domain = ALLOW_DOMAIN_LITERALS ? rfc2822Domain : rfc1035DomainName; 

porque el registro de código muerto es nueva también puede sugerir un Enchancement en el Eclipse bug database para apoyar la operación ternaria también.

+1

Aquí está la entrada de bugzilla: https://bugs.eclipse.org/bugs/show_bug.cgi?id = 282768 Bugzilla ciertamente carece tanto de la búsqueda duplicada como de la sintaxis Wiki que ofrece StackOverflow :-) –

+1

Agregué una para las @SuppressWarnings perdidas, también: https://bugs.eclipse.org/bugs/show_bug.cgi?id= 282770 –

+3

El estado de ambas solicitudes ahora se ha verificado. – Casebash

8

Seleccionar Ignore en Windows -> Preferences > Java > Compiler > Errors/Warnings bajo Potential programming problems sección

+1

Pero generalmente me gusta la característica, simplemente falla aquí. Si fuera mi propio código, simplemente lo cambiaría. También podría deshabilitarlo en el nivel de proyecto (es decir, habilitar la configuración del compilador específica del proyecto en las propiedades del proyecto), pero ni siquiera quiero hacer eso. –

6

Puede desactivar las advertencias del 'código muerto' usando

@SuppressWarnings("unused") 

Consulte la documentación de Eclipse para obtener más información:

http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-suppress_warnings.htm

"sin usar" para suprimir las advertencias relativas al código no utilizado y código

Saludos

Christopher

+2

Votado, ya que podría ser útil para alguien que viene aquí. La función no existía en ese momento, pero ahora sí (consulte los problemas de Bugzilla vinculados en mis comentarios sobre la respuesta aceptada). –

Cuestiones relacionadas