如何在计算代码行时跳过特定文件?

时间:2017-09-13 10:46:57

标签: git loc cloc

我有一个用户案例,我需要计算每个BUC-ID的代码行数。 我使用

实现了同样的目标
           git log --shortstat --grep=BUC3565-EPIC16 |grep -E "fil(e|es) changed" | awk -v BUC=$i '{ inserted+=$4; deleted+=$6; delta+=$4-$6i } END {printf "%s, %s,  %s,  %s \n",BUC, inserted, deleted, delta }'

现在我有多个文件的BUC-ID。有什么方法我可以跳过几个文件/文件夹,仍然可以计算该BUC-ID的代码行吗?

Basically, I need to exclude some files/folders while calculating Lines of Code. I am not able to do so because each commit has multiple files. Some should be included and some excluded...Any idea how to achieve that?

CLOC是否提供排除文件的任何功能?

3 个答案:

答案 0 :(得分:0)

  1. 查找与BUC-ID相关的所有提交。

    git log --pretty=%H --grep=BUC3565-EPIC16

  2. 对于每个提交,列出除一些文件/文件夹之外的所有已更改文件。

    git show $commit --pretty=format:"" --name-only | grep -ve "foo.txt" -ve "bar/"

  3. 对于其余的文件,请计算其insertionsdeletionsdelta

    git show $commit --pretty=format:"" --short-stat -- $file | grep -E "fil(e|es) changed" | awk

  4. 总结结果。

答案 1 :(得分:0)

cloc有几种排除文件的机制;搜索“排除” https://github.com/AlDanial/cloc了解详情。

简单地说,--exclude-list-file允许您传入包含要排除的文件名称的文件,--exclude-dir允许您跳过指定目录,--exclude-ext跳过具有给定文件扩展名的文件--exclude-lang 1}}忽略给定的编程语言,--not-match-f允许您指定跳过匹配的正则表达式。

答案 2 :(得分:0)

我发现执行此操作的最佳方法是使用cloc,并使其忽略源代码控制忽略的相同文件。

例如:

cloc --vcs=git .