8

Io uso in un checkstyle di progetto e ho definito uno SuppressionFilter nella mia configurazione stile check. Utilizzo la formica Apache per creare build automatici tramite l'integrazione continua.Come definire le definizioni di soppressione per il checkstyle, che funzionano con ant e eclissi

I miei problemi derivano dalla seguente situazione: non voglio riempire molti file nel progetto-basedir, quindi il checkstyle.xml e il suppressions.xml sono entrambi in una sottodirectory denominata conf (per la configurazione per build). Ora Ant ed Eclipse funzionano in modo diverso per trovare suppressions.xml.

Ant usa il progetto come base per trovare il suppressions.xml, dopo che ho dichiarato un ant-task per trovare il checkstyle.xml con la configurazione di base di checkstyle. Questo checkstyle.xml ora contiene il seguente:

<module name="SuppressionFilter"> 
    <property name="file" value="conf/suppressions.xml"/> 
</module> 

In questo modo la formica-build trova il suppressions.xml, perché il basedir della build è il progetto-directory.

Ora l'uso di checkstyle-plugin per Eclipse presenta un problema. Cerca il suppressions.xml che inizia con il percorso che il checkstyle.xml ha (conf). Per Eclipse la dichiarazione doveva assomigliare a questo, al lavoro:

<module name="SuppressionFilter"> 
    <property name="file" value="suppressions.xml"/> 
</module> 

EDIT: Anche questo non funziona, Eclipse sembra aver bisogno sempre un percorso assoluto.

Desidero sapere in che modo sia Eclipse che Ant possono funzionare con la stessa configurazione di controllo stile. Qualcuno conosce una soluzione a questo problema? I percorsi assoluti non sono una soluzione, perché ogni sviluppatore e il CI-Server hanno percorsi diversi per la directory di progetto.

risposta

6

Utilizzare la funzionalità property expansion di Checkstyle. Nella tua checkstyle.xml dichiarare la SupressionFilter come:

<module name="SuppressionFilter"> 
    <property name="file" value="${checkstyle.suppressions.file}" default="suppressions.xml"/> 
</module> 

Quindi modificare il vostro compito Checkstyle nello script Ant per includere una proprietà nidificato:

<checkstyle config="conf/checkstyle.xml"> 
    <fileset dir="src" includes="**/*.java"/> 
    <property key="checkstyle.suppressions.file" value="conf/suppressions.xml"/> 
</checkstyle> 
+0

Grazie, che funziona. L'unica eccezione è il mio errore nella descrizione, Eclipse sembra aver bisogno di un percorso assoluto. – Mnementh

9

Questa domanda è piuttosto vecchio, ma ho trovato un modo migliore per farlo utilizzando il Checkstyle Advanced properties:

per il plugin Eclipse Checkstyle, la proprietà ${samedir} espande alla directory che il file di configurazione si trova all'interno:

Nel tuo caso, la configurazione del modulo sarebbe simile a questa:

<module name="SuppressionFilter"> 
    <property name="file" value="${samedir}/conf/suppressions.xml" /> 
</module> 

Il target Ant inoltre impostare la proprietà samedir:

<checkstyle config="${checkstyle.tool.dir}/checks.xml" failOnViolation="false"> 
    <fileset dir="${src.dir}" includes="**/*.java" /> 
    <property key="samedir" value="${checkstyle.tool.dir}/conf" /> 
</checkstyle> 
+0

Voto in aumento. $ {samedir} è ciò che cercavo. –

+1

È possibile utilizzare '$ {basedir}' (vedere il collegamento per maggiori proprietà del percorso) per un percorso relativo al progetto. Ciò consente di utilizzare un comune 'checkstyle.xml' per molti progetti, ma conserva comunque i file di soppressione con ciascun progetto. –

+0

C'è un modo per usare $ {samedir} nel plugin gradle checkstyle? http://stackoverflow.com/questions/29602867/using-samedir-in-gradle-and-eclipse – Edward

Problemi correlati