bash - vscode统计代码行数 - 统计行数




统计git存储库中的行数 (8)

github https://github.com/flosse/sloc上的这个工具可以以更具描述性的方式给出输出结果。 它会创建你的源代码的统计数据:

  • 物理线路
  • 代码行(源代码)
  • 有评论的线
  • 单行评论
  • 带有块注释的行
  • 线路与来源和评论混杂在一起
  • 空行

我如何计算git存储库中所有文件中的总行数?

git ls-files给了我一个由git跟踪的文件列表。

我正在寻找一个命令来cat所有这些文件。 就像是

git ls-files | [cat all these files] | wc -l

xargs会做你想做的事情:

git ls-files | xargs cat | wc -l

但有了更多的信息,可能更好,你可以这样做:

git ls-files | xargs wc -l

我使用以下内容:

git grep ^ | wc -l

这将搜索由git版本化的所有文件作为正则表达式^ ,表示一行的开始,所以这个命令给出了总行数!



我遇到了git ls-files | xargs wc -l批处理问题 git ls-files | xargs wc -l在处理大量文件时,行数将被分块成多个total

从问题中获取提示为什么wc实用程序会生成多行“total”? ,我找到了下面的命令来绕过这个问题:

wc -l $(git ls-files)

或者,如果您只想检查一些文件,例如代码:

wc -l $(git ls-files | grep '.*\.cs')


无论如何,对我来说,最好的解决方案是埋在@ ephemient的回答中。 我只是把它放在这里,这样它就不会被忽视。 这应该归功于@FRoZeN(和@ephemient)。

git diff --shortstat `git hash-object -t tree /dev/null`

返回repo工作目录中的文件和行的总数,没有任何额外的噪音。 作为奖励,只有源代码被计算 - 二进制文件被排除在计数器之外。

上面的命令适用于Linux和OS X.它的跨平台版本是

git diff --shortstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904

这也适用于Windows。

为了记录,排除空行的选项,

  • -w / --ignore-all-space
  • -b / --ignore-space-change
  • --ignore-blank-lines
  • --ignore-space-at-eol

--shortstat使用时没有任何影响。 计算空行。


: | git mktree | git diff --shortstat --stdin

要么:

git ls-tree @ | sed '1i\\' | git mktree --batch | xargs | git diff-tree --shortstat --stdin

git diff --stat 4b825dc642cb6eb9a060e54bf8d69288fbee4904

这显示了从空树到当前工作树的差异。 当前工作树中的所有行都会被计数。





line-count