Domanda

Sto mantenendo un'API che ha deprecato alcuni campi statici pubblici.

CheckStyle si lamenta forte di questi, ma preferirei che li ignori completamente da quando ho affrontato il problema segnando i campi come deprecati.

In particolare, la biblioteca ha costanti per l'enumerazione (finale statico pubblico) ma non sono contrassegnati come finale. CheckStyle si lamenterà di loro, ma non posso semplicemente cambiarli in finale senza rompere il contratto.

Il mio piano è di contrassegnarli come deprecati e poi eliminarli in seguito. Ma segnarli come deprecati non li rimuove dal rapporto checkstyle.

È stato utile?

Soluzione

Ho due opzioni per te:

  1. sopprimere manualmente l'avvertimento per ogni riga

    Questo approccio è meno flessibile in quanto è necessario mantenere la configurazione di soppressione ogni volta che si muovono le linee. Ma puoi gestire ogni occorrenza singolarmente.

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

    Non so quale assegno stia causando il tuo problema, quindi devi sostituire il controllo con il nome proprio. Nomina il file Java, che contiene il codice deprecato, ma puoi inserire .* per applicarlo ad ogni file. YourLine è un elenco di valori separato da virgola, in cui ogni valore è un numero intero o un intervallo di numeri interi indicati da interi.

  2. Usa un commento per consigliare CheckStyle per ignorare gli avvertimenti

    Questa soluzione consente di disattivare i controlli per tutti i membri deprecati contemporaneamente. Ma devi seguire una rigorosa convenzione. Devi aggiungere un @deprecated Commenta a quei membri (ciò che eventualmente fai già) nell'ultima posizione, perché questo filtro ha una gamma rigorosa di linee.

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

    Questa soluzioni necessita di una modifica all'interno del file di configurazione. Per prima cosa devi aggiungere FileContentsHolder da bambino a TreeWalker.

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

    Ora puoi configurare il SuppressWithNearbyCommentFilter che fa parte del Checker modulo.

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

    Se decidi di ignorare solo controlli specifici, regola il checkFormat attributo. O se vuoi usare un altro commento, cambia il commentFormat attributo. Ma è molto importante che tu abbia impostato influenceFormat al giusto valore. Dice a Checkstyle in quante righe dopo il commento è dovuto ignorare quei controlli.

PS: si noti che il plug -in Eclipse checkstyle rimuove il FileContentsHolder Modulo, quando si modifica la configurazione con la sua interfaccia utente, quindi non è necessario utilizzarla.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top