2009-10-10 9 views
5

Estoy manteniendo una API que ha dejado de usar algunos campos públicos estáticos.¿Puedo deshabilitar las reclamaciones de CheckStyle para los métodos y las clases en desuso?

CheckStyle se queja ruidosamente de esto, pero prefiero que lo ignore por completo, ya que he solucionado el problema marcando los campos como obsoletos.

Específicamente, la biblioteca tiene constantes para la enumeración (final estática pública) pero no están marcadas como finales. CheckStyle se quejará de ellos, pero no puedo cambiarlos a definitivos sin romper el contrato.

Mi plan es marcarlos como obsoletos y luego eliminarlos más tarde. Pero marcarlos como obsoletos no los elimina del Informe CheckStyle.

+0

¿Puede proporcionar la salida exacta? –

Respuesta

8

que tienen dos opciones para usted:

  1. suprimir la advertencia para cada línea manualmente

    Este enfoque es menos flexible como usted tiene que mantener la configuración de supresión cada vez que usted está cambiando líneas . Pero puedes manejar cada ocurrencia individualmente.

    <suppress checks="YOURCHECK" files=".*YOURCLASS\.java" lines="YOURLINES"/> 
    

    No sé qué comprobación está causando su problema, por lo que debe reemplazar YOURCHECK con el nombre correcto. YOURCLASS nombra el archivo java, que contiene el código en desuso, pero puede insertar .* para aplicarlo a cada archivo. YOURLINES es una lista de valores separados por comas, donde cada valor es un número entero o un rango de números enteros denotados por un número entero.

  2. uso un comentario para asesorar Checkstyle hacer caso omiso de las advertencias

    Esta solución le permite desactivar los controles de todos los miembros en desuso a la vez. Pero debes seguir una estricta convención. Debe agregar un comentario @deprecated a esos miembros (lo que posiblemente ya haga) en la última posición, porque este filtro tiene un rango estricto de líneas.

    /** 
    * @deprecated I don't like this anymore. 
    */ 
    public static String EXAMPLE = "example"; 
    

    Esta solución necesita un cambio dentro de su archivo de configuración. Primero debe agregar FileContentsHolder como hijo a TreeWalker.

    <module name="TreeWalker"> 
        ... 
        <module name="FileContentsHolder"/> 
        ... 
    </module> 
    

    Ahora es posible configurar el SuppressWithNearbyCommentFilter que es parte del módulo Checker.

    <module name="Checker"> 
        ... 
        <module name="SuppressWithNearbyCommentFilter"> 
         <property name="commentFormat" value=".*deprecated.*"/> 
         <property name="checkFormat" value=".*"/> 
         <property name="influenceFormat" value="2"/> 
        </module> 
        ... 
    </module> 
    

    Si decide hacer caso omiso de sólo controles específicos, ajuste el atributo checkFormat. O si desea utilizar otro comentario, cambie el atributo commentFormat. Pero es muy importante que establezca influenceFormat en el valor correcto. Indica el estilo de comprobación dentro de cuántas líneas después del comentario se debe ignorar esas comprobaciones.

P.S .: Tenga en cuenta que el plug-in de Eclipse CheckStyle elimina el módulo FileContentsHolder, cuando se cambia la configuración con su interfaz de usuario, por lo que no debe usarlo.

+2

Esto es genial. ¡Perfecto! –

Cuestiones relacionadas