2013-03-04 10 views
5

Sto utilizzando checkstyle per ottenere report sul mio codice sorgente. Questa domanda riguarda lo MagicNumberCheck.Stile di controllo Java, MagicNumberCheck

Sto usando Date/(org.joda.)DateTime nel mio codice sorgente in questo modo:

DateTime dateTime = new DateTime(2013, 2, 27, 23, 0): 
dateTime.plusHours(57); 

C'è un modo per sopprimere le notifiche MagicNumberCheck se il numero magico è all'interno di una data o DateTime?

risposta

14

È possibile utilizzare SuppressionCommentFilter per eseguire questa operazione.

Configurare i valori immobili come (nel file checkstyle configuration)

<module name="SuppressionCommentFilter"> 
    <property name="offCommentFormat" value="Check\:OFF\: ([\w\|]+)"/> 
    <property name="onCommentFormat" value="Check\:ON\: ([\w\|]+)"/> 
    <property name="checkFormat" value="$1"/> 
</module> 

Ora per le linee necessarie, si può fare come

//Check:OFF: MagicNumber 
DateTime dateTime = new DateTime(2013, 2, 27, 23, 0): 
dateTime.plusHours(57); 
//Check:ON: MagicNumber 

Questo sopprimerà solo MagicNumber checks, i controlli di riposo lavoreranno Qui.

È possibile sopprimere checcks multipli troppo, come

//Check:OFF: MagicNumber|Indentation 
Code Here 
//Check:ON: MagicNumber|Indentation 

questo modo si sopprimono solo MagicNumber and Indentation Checks. Altri controlli funzioneranno bene.

2

È possibile disattivare le notifiche Checkstyle utilizzando il commento

//CHECKSTYLE:OFF 

prima di quelle linee e

//CHECKSTYLE:ON 

poi a riabilitarla.

Ciò richiede che il modulo SuppressionCommentFilter sia abilitato.

Naturalmente è anche possibile creare il proprio modulo che fa esattamente ciò che si desidera.

+0

Hmm, una soluzione, ma non la soluzione che ho in mente. Contro: - Devo farlo ogni volta - questa soluzione sopprime anche altri avvertimenti. –

Problemi correlati