Ho avuto lo stesso problema con la configurazione di soppressione Checkstyle quando stavo andando avanti e indietro tra Linux e Windows. Ecco come l'ho risolto nel mio sistema di build basato su Ant:
Fondamentalmente, inserisco il valore di directory specifico della piattaforma nel file di configurazione di Checkstyle principale configurando un file di proprietà di Checkstyle con uno script di build Ant.
Il mio file di configurazione Checkstyle principale ha una dichiarazione del modulo SuppressionFilter
come mostrato di seguito. Il valore della proprietà checkstyle-suppressions-file
viene da una proprietà Checkstyle File:
<module name="SuppressionFilter">
<property name="file" value="${checkstyle-suppressions-file}"/>
</module>
Il file delle proprietà Checkstyle non è statico, esso è generato da uno script di Ant da un file di proprietà modello chiamato template-checkstyle.properties
. Ecco cosa il modello appare come per la proprietà del file soppressioni:
[email protected][email protected]/checkstyle_suppressions.xml
miei Ant script copia costruire questo file in un file chiamato checkstyle.properties
. La copia ha il token speciale sostituito con il valore corretto della directory in cui si trova il file soppressioni:
<copy file="${scm.dir}/template-checkstyle.properties" tofile="${scm.dir}/checkstyle.properties">
<filterset>
<filter token="SCM_DIR" value="${scm.dir.unix}"/>
</filterset>
</copy>
Ora, da dove viene il valore di scm.dir.unix
viene? Bene, è derivato da una proprietà della mia build, continua a leggere. Dovrai specificare tale valore con i valori di directory che hai menzionato.
Si noti che c'è un problema leggermente non ovvio riguardo al modo in cui si specifica questa directory. Dico che il valore scm.dir.unix
deriva da una proprietà build perché ho osservato che il file di configurazione Checkstyle principale non può contenere barre rovesciate, ad esempio caratteri separatori del percorso Windows, nel valore della proprietà del modulo SuppressionFilter
. Ad esempio, specificare qualcosa come C:\foo\bar\baz
porta a un messaggio di errore Checkstyle che dice che non è possibile trovare C:foobarbaz
.Io lavoro intorno a questo "convertendo" la proprietà di build scm.dir
directory in un formato "unix" con pathconvert
compito di Ant:
<pathconvert targetos="unix" property="scm.dir.unix">
<path location="${scm.dir}"/>
</pathconvert>
Poi chiamo il compito Ant checkstyle
come questo:
<checkstyle config="${scm.dir}/checkstyle_checks.xml"
properties="${scm.dir}/checkstyle.properties">
<!-- details elided -->
</checkstyle>
La chiamata l'attività checkstyle
inietta le coppie chiave/valore contenute nel file checkstyle.properties
nella configurazione principale di Checkstyle.
Se si desidera, è possibile visualizzare gli script completo here
Spero che questo aiuti
Grazie per i suggerimenti, il mio formicaio ora sta bene, ignorando i numeri magici nelle classi Test (è un inizio!). Ho dovuto apportare una modifica al codice fornito (per riferimento a chiunque altro possa venire in seguito), l'attività manca un "filtering = true"; almeno quando corro con la mia versione di formica. –