我试图使用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