Posso disabilitare i reclami checkstyle per metodi e lezioni deprecate?
-
20-09-2019 - |
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.
Soluzione
Ho due opzioni per te:
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.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 aTreeWalker
.<module name="TreeWalker"> ... <module name="FileContentsHolder"/> ... </module>
Ora puoi configurare il
SuppressWithNearbyCommentFilter
che fa parte delChecker
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 ilcommentFormat
attributo. Ma è molto importante che tu abbia impostatoinfluenceFormat
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.