[英]How can I ignore .svn directories when using sloccount?
我正在尝试使用hudson中的 sloccount
来收集有关我们代码库的统计信息,但默认情况下, sloccount
收集有关所有文件的信息,甚至是那些“隐藏”的文件(例如.hideme
)。 这意味着统计数据是偏斜的,因为它们包含.svn
目录中文件的数字。
有什么方法我可以告诉sloccount
正确地忽略任何以a开头的文件/目录.
?
此语法更易于维护和扩展(当您需要排除多个目录时,这非常重要):
sloccount --duplicates --wide --details . | grep -v -e '.svn' > sloccount.sc
排除链示例:
sloccount --duplicates --wide --details . | grep -v -e '.svn' -e 'thirdparty' > sloccount.sc
注意:我使用它,它适用于我的詹金斯
您可以编辑sloccount的源代码,以便不搜索以句点开头的目录。 否则,这是我在命令行上编写的东西。 基本上,您可以在命令行上指定文件路径列表作为sloccount的参数,它将仅分析这些文件。 因此,这将找到PWD下的所有文件,不包括隐藏文件,然后将它们作为参数传递给sloccount。
find . \( ! -regex '.*/\..*' \) -type f | \
tr '\n' ' ' | \
xargs sloccount
我的最后一种方法是从sed输出中删除.svn
目录:
sloccount --wide --details $DIR | sed "/\/\.svn\//d" > sloccount.sc
用这个:
find . -path '*/.*' -prune -o -type f -exec sloccount {} \+
-exec
避免了在其他一些回复中看到的xargs
hacks。 这是包含xargs的查找支持。 不需要运行regexp,globbing就足够了。 修剪子区也更有效。
更新:此外,您可能希望升级到更新的subversion。 新的签出格式(在svn upgrade
)只使用一个.svn
目录,所以通常你现在可以只执行sloccount src
。
可以通过使用find从所有其他目录中收集文件来忽略.svn
目录:
find . -not -wholename '*/.svn/*' -type f | xargs sloccount
我正在使用以下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或更高版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.