2010-05-25 14 views
6

sto cercando di utilizzare sloccount dall'interno hudson per raccogliere statistiche sulla nostra base di codice, invece di default sloccount raccoglie informazioni su tutti i i file, anche quelli che sono "nascosti" (ad es. .hideme). Ciò significa che le statistiche sono distorte poiché includono numeri da file all'interno delle directory .svn.Come posso ignorare le directory .svn quando utilizzo lo sloccount?

C'è un modo che posso dire sloccount per ignorare correttamente qualsiasi file/directory che iniziano con un .?

risposta

4

Il mio approccio finale era quello di rimuovere le directory .svn dall'uscita sed:

sloccount --wide --details $DIR | sed "/\/\.svn\//d" > sloccount.sc 
+0

La soluzione di Dave non perde tempo nei file nelle directory '.svn' in primo luogo. –

6

È possibile modificare il codice sorgente dello sloccount per non cercare nelle directory che iniziano con un punto. Altrimenti, ecco qualcosa che ho preparato sulla linea di comando. Fondamentalmente, è possibile specificare un elenco di percorsi di file sulla riga di comando come argomenti per lo sloccount e analizzerà solo quei file. Quindi questo troverà tutti i file sotto PWD, esclusi i file nascosti, e li passerà come argomento a sloccount.

find . \(! -regex '.*/\..*' \) -type f | \ 
tr '\n' ' ' | \ 
xargs sloccount 
+0

Sei sicuro è necessario il comando 'tr'? Che ne dici di passare il flag '-print0' a' find' e il flag '-0' a' xargs' per gestire percorsi e nomi di file con spazi? –

+0

Usa il supporto xargs di ricerca incluso: '-exec sloccount {} \ +' –

1

Sto utilizzando il seguente obiettivo formica per costruire una "sloccount.sc" senza file in" Svn ":

<target name="sloccount"> 
    <echo message="build sloccount report" /> 
    <exec executable="sloccount" failonerror="true"> 
     <arg value="--details" /> 
     <arg value="--wide" /> 
     <arg value="source_folder" /> 
     <redirector output="sloccount.sc"> 
      <outputfilterchain> 
       <linecontains negate="true"> 
        <contains value=".svn" /> 
       </linecontains> 
      </outputfilterchain> 
     </redirector> 
    </exec> 
</target> 

Basta sostituire 'source_folder' con il nome della cartella di origine che si desidera eseguire la scansione e dire Jenkins per costruire formica target 'di conteggio elaborato'.

Si noti che questo richiede il form 1.7.1 o successivo.

4

Utilizzare questa:

find . -path '*/.*' -prune -o -type f -exec sloccount {} \+ 

-exec evita le xargs hack visto in alcune delle altre risposte. Questo è il supporto per xargs incluso nella ricerca. Non è necessario eseguire espressioni regolari, il globbing è sufficiente. Anche le sottostrutture di potatura sono più efficienti.

Aggiornamento: Inoltre, è possibile eseguire l'aggiornamento a una sovversione più recente. Il nuovo formato di checkout (dopo svn upgrade) utilizza solo una singola directory .svn, quindi in genere è sufficiente eseguire sloccount src ora.

1

si può ignorare .svn directory attraverso la raccolta di file da tutte le altre directory usando find:

find . -not -wholename '*/.svn/*' -type f | xargs sloccount 
7

Questa sintassi è più facile da mantenere ed estendere (che è molto importante quando si ha bisogno di escludere diverse directory):

sloccount --duplicates --wide --details . | grep -v -e '.svn' > sloccount.sc 

Esempio di catena esclusioni:

sloccount --duplicates --wide --details . | grep -v -e '.svn' -e 'thirdparty' > sloccount.sc 


NB: Io lo uso e funziona sulla mia Jenkins

+0

Dovrebbe fare attenzione con questo, in realtà filtra solo l'output non aggiornando i totali. –

Problemi correlati