我試圖使用sloccount
從內hudson來收集我們的代碼庫的統計數據,但是在默認情況下sloccount
收集有關所有文件的信息,甚至是那些「隱藏」(如:.hideme
)。這意味着統計數據有偏差,因爲它們包含.svn
目錄中文件的數字。如何在使用sloccount時忽略.svn目錄?
有沒有什麼辦法可以告訴sloccount
正確地忽略任何以.
開頭的文件/目錄?
我試圖使用sloccount
從內hudson來收集我們的代碼庫的統計數據,但是在默認情況下sloccount
收集有關所有文件的信息,甚至是那些「隱藏」(如:.hideme
)。這意味着統計數據有偏差,因爲它們包含.svn
目錄中文件的數字。如何在使用sloccount時忽略.svn目錄?
有沒有什麼辦法可以告訴sloccount
正確地忽略任何以.
開頭的文件/目錄?
我最後的辦法是從sed的輸出刪除.svn
目錄:
sloccount --wide --details $DIR | sed "/\/\.svn\//d" > sloccount.sc
您可以編輯sloccount的源代碼,以便在以句點開頭的目錄中不搜索。否則,這是我在命令行上製作的東西。基本上,您可以在命令行中指定一個文件路徑列表作爲sloccount的參數,它將只分析這些文件。因此,這將查找PWD下的所有文件,不包括隱藏文件,然後將它們作爲參數傳遞給sloccount。
find . \(! -regex '.*/\..*' \) -type f | \
tr '\n' ' ' | \
xargs sloccount
你確定你所需要的'tr'命令?如何將'-print0'標誌傳遞給'find'並將'-0'標誌傳遞給'xargs'來處理帶空格的路徑和文件名? – 2010-09-09 10:30:06
使用find-included xargs支持:'-exec sloccount {} \ +' – 2012-01-17 14:31:04
我用下面的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或更高版本。
使用此:
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
人們可以通過使用find收集來自所有其他目錄中的文件忽略.svn
目錄
sloccount --duplicates --wide --details . | grep -v -e '.svn' > sloccount.sc
實施例:
sloccount --duplicates --wide --details . | grep -v -e '.svn' -e 'thirdparty' > sloccount.sc
注:我用它和它的作品在我的詹金斯
這句法更易於維護和擴展(這是非常重要的,當你需要排除的幾個目錄):
應該小心這個,它真的只是過濾輸出不更新任何總數。 – 2015-07-11 08:07:48
Dave的解決方案不會浪費時間在'.svn'目錄中的文件中。 – 2010-09-09 10:28:35