2010-05-25 200 views
6

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

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

回答

4

我最后的办法是从sed的输出删除.svn目录:

sloccount --wide --details $DIR | sed "/\/\.svn\//d" > sloccount.sc 
+0

Dave的解决方案不会浪费时间在'.svn'目录中的文件中。 – 2010-09-09 10:28:35

6

您可以编辑sloccount的源代码,以便在以句点开头的目录中不搜索。否则,这是我在命令行上制作的东西。基本上,您可以在命令行中指定一个文件路径列表作为sloccount的参数,它将只分析这些文件。因此,这将查找PWD下的所有文件,不包括隐藏文件,然后将它们作为参数传递给sloccount。

find . \(! -regex '.*/\..*' \) -type f | \ 
tr '\n' ' ' | \ 
xargs sloccount 
+0

你确定你所需要的'tr'命令?如何将'-print0'标志传递给'find'并将'-0'标志传递给'xargs'来处理带空格的路径和文件名? – 2010-09-09 10:30:06

+0

使用find-included xargs支持:'-exec sloccount {} \ +' – 2012-01-17 14:31:04

1

我用下面的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或更高版本。

4

使用此:

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 
1

人们可以通过使用find收集来自所有其他目录中的文件忽略.svn目录

排除链的
sloccount --duplicates --wide --details . | grep -v -e '.svn' > sloccount.sc 

实施例:

sloccount --duplicates --wide --details . | grep -v -e '.svn' -e 'thirdparty' > sloccount.sc 


注:我用它和它的作品在我的詹金斯

7

这句法更易于维护和扩展(这是非常重要的,当你需要排除的几个目录):

+0

应该小心这个,它真的只是过滤输出不更新任何总数。 – 2015-07-11 08:07:48