2010-05-25 204 views
6

我試圖使用sloccount從內hudson來收集我們的代碼庫的統計數據,但是在默認情況下sloccount收集有關所有文件的信息,甚至是那些「隱藏」(如:.hideme)。這意味着統計數據有偏差,因爲它們包含.svn目錄中文件的數字。如何在使用sloccount時忽略.svn目錄?

有沒有什麼辦法可以告訴sloccount正確地忽略任何以.開頭的文件/目錄?

回答

4

我最後的辦法是從sed的輸出刪除.svn目錄:

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

Dave的解決方案不會浪費時間在'.svn'目錄中的文件中。 – 2010-09-09 10:28:35

6

您可以編輯sloccount的源代碼,以便在以句點開頭的目錄中不搜索。否則,這是我在命令行上製作的東西。基本上,您可以在命令行中指定一個文件路徑列表作爲sloccount的參數,它將只分析這些文件。因此,這將查找PWD下的所有文件,不包括隱藏文件,然後將它們作爲參數傳遞給sloccount。

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

你確定你所需要的'tr'命令?如何將'-print0'標誌傳遞給'find'並將'-0'標誌傳遞給'xargs'來處理帶空格的路徑和文件名? – 2010-09-09 10:30:06

+0

使用find-included xargs支持:'-exec sloccount {} \ +' – 2012-01-17 14:31:04

1

我用下面的Ant目標,以打造「sloccount.sc」沒有文件」的.svn ‘你所要掃描並告訴詹金斯打造螞蟻目標的源文件夾的名稱‘sloccount:」

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

只需更換’SOURCE_FOLDER’。

請注意,這需要ant 1.7.1或更高版本。

4

使用此:

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

-exec避免在一些對方回覆的看到xargs黑客。這是find-included xargs支持。不需要運行regexps,globbing就足夠了。修剪細分也更有效。

更新:此外,你可能想升級到更新的顛覆。新的結帳格式(在svn upgrade之後)僅使用一個.svn目錄,因此通常您現在可以僅執行sloccount src

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

人們可以通過使用find收集來自所有其他目錄中的文件忽略.svn目錄

排除鏈的
sloccount --duplicates --wide --details . | grep -v -e '.svn' > sloccount.sc 

實施例:

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


注:我用它和它的作品在我的詹金斯

7

這句法更易於維護和擴展(這是非常重要的,當你需要排除的幾個目錄):

+0

應該小心這個,它真的只是過濾輸出不更新任何總數。 – 2015-07-11 08:07:48