繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM