我正在尝试使用hudson内的sloccount
来收集有关我们代码库的统计信息,但默认情况下sloccount
会收集有关所有文件的信息,甚至那些“隐藏”的东西(例如.hideme
)。这意味着统计数据存在偏差,因为它们包含.svn
目录中文件的数字。
有什么方法可以告诉sloccount
正确忽略以.
开头的任何文件/目录?
答案 0 :(得分:7)
此语法更易于维护和扩展(当您需要排除多个目录时,这非常重要):
sloccount --duplicates --wide --details . | grep -v -e '.svn' > sloccount.sc
排除链示例:
sloccount --duplicates --wide --details . | grep -v -e '.svn' -e 'thirdparty' > sloccount.sc
NB:我使用它,它适用于我的Jenkins
答案 1 :(得分:6)
您可以编辑sloccount的源代码,以便不搜索以句点开头的目录。否则,这是我在命令行上编写的东西。基本上,您可以在命令行上指定文件路径列表作为sloccount的参数,它将仅分析这些文件。所以这将找到PWD下的所有文件,不包括隐藏文件,然后将它们作为参数传递给sloccount。
find . \( ! -regex '.*/\..*' \) -type f | \
tr '\n' ' ' | \
xargs sloccount
答案 2 :(得分:4)
我的最后一种方法是从sed输出中删除.svn
目录:
sloccount --wide --details $DIR | sed "/\/\.svn\//d" > sloccount.sc
答案 3 :(得分:4)
使用此:
find . -path '*/.*' -prune -o -type f -exec sloccount {} \+
-exec
避免了其他一些回复中出现的xargs
黑客行为。这是包含xargs的查找支持。不需要运行regexp,globbing就足够了。修剪子区也更有效。
更新:此外,您可能希望升级到更新的subversion。新的结帐格式(svn upgrade
之后)仅使用一个.svn
目录,因此通常您现在可以sloccount src
。
答案 4 :(得分:1)
我正在使用以下ant目标来构建“sloccount.sc”而没有“.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>
只需将“source_folder”替换为您要扫描的源文件夹的名称,并告诉Jenkins构建ant目标“sloccount”。
请注意,这需要ant 1.7.1或更高版本。
答案 5 :(得分:1)
可以通过使用find:
从所有其他目录中收集文件来忽略.svn
目录
find . -not -wholename '*/.svn/*' -type f | xargs sloccount