2010-05-25 22 views
6

Ben, ancak varsayılan sloccount tarafından tüm dosyalar üzerinde bilgi toplar, bizim kodu tabanında istatistik toplamak hudson içinden sloccount kullanmaya çalışıyorum hatta "gizli" olan (örneğin. .hideme). Bu, istatistiklerin .svn dizinlerindeki dosyalardaki sayıları içerdiğinden eğik olduğu anlamına gelir.Slovayı kullanırken .svn dizinlerini nasıl göz ardı edebilirim?

. ile başlayan tüm dosyaları/dizinleri doğru olarak yok saymak için sloccount bildirebileceğim herhangi bir yöntem var mı?

cevap

4

Benim son yaklaşma sed çıkışından .svn dizinleri kaldırmak oldu slocsayaç 'taramak ve karınca hedef inşa etmek Jenkins söylemek istiyorum kaynak klasörün adıyla 'SOURCE_FOLDER:"

<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> 

Basitçe yerine''.

Bunun, 1.7.1 veya daha yenisi gerektirdiğini unutmayın.

+0

Dave'in çözümü, ilk önce '.svn' dizinlerindeki dosyalarda zaman kaybetmez. –

6

Bir nokta ile başlayan dizinlerde arama yapmak için, sloccount'un kaynak kodunu düzenleyebilirsiniz. Aksi halde, burada komut satırında pişirdiğim bir şey var. Temel olarak, komut satırındaki bir dosya yollarının listesini argüman olarak belirtir ve sadece bu dosyaları analiz eder. Böylece bu, gizli dosyaları hariç, PWD altındaki tüm dosyaları bulur ve sonra bunları argüman olarak argüman olarak geçirir. .svn "dosyaların olmadan

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

çalışır? '-print0' bayrağı 'bulmak' ve '-0' bayrağı 'xargs' ile boşluklarla birlikte yol ve dosya isimlerini işlemek nasıl? –

+0

Bulunan dahil edilen xargs desteğini kullanın: '-exec sloccount {} \ +' –

1

Ben bir "sloccount.sc" oluşturmak için aşağıdaki karınca hedef kullanıyorum:

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

bunu kullanın:

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

-exec diğer yanıtların bazıları görülen xargs kesmek önler. Bulunan xargs desteği budur. Regeps kullanmaya gerek yok, globbing yeterli. Budama alt dizinleri de daha verimlidir.

Güncelleştirme: Ayrıca, daha yeni bir yıkıma yükseltmek isteyebilirsiniz. Yeni ödeme biçimi (svn upgrade'dan sonra) yalnızca tek bir .svn dizini kullanır, bu nedenle genellikle sloccount src'u şimdi yapabilirsiniz.

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

Bir find kullanılarak tüm diğer dizinleri dosyaları toplayarak .svn dizinleri yok sayabilirsiniz

hariç tutma zincirinin
sloccount --duplicates --wide --details . | grep -v -e '.svn' > sloccount.sc 

Örnek:

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


Not: Eğer `tr` komutunu gerektiğinden emin misiniz Bunu kullanmak ve bu benim Jenkins

7

Bu sözdizimi korumak ve (birkaç dizinleri hariç gerektiğinde son derece önemli olan) genişletmek için daha kolaydır:

+0

Bu konuya dikkat etmeliyiz, sadece toplamları güncellemeyen çıktıyı filtreler. –

İlgili konular