使用sloccount时如何忽略.svn目录?

时间:2010-05-25 12:45:37

标签: svn

我正在尝试使用hudson内的sloccount来收集有关我们代码库的统计信息,但默认情况下sloccount会收集有关所有文件的信息,甚至那些“隐藏”的东西(例如.hideme)。这意味着统计数据存在偏差,因为它们包含.svn目录中文件的数字。

有什么方法可以告诉sloccount正确忽略以.开头的任何文件/目录?

6 个答案:

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