一个名为cloc-git的Shell脚本
你可以使用这个Shell脚本来统计远程Git仓库中的代码行数,只需要一个命令:
#!/usr/bin/env bash
git clone --depth 1 "$1" temp-linecount-repo &&
printf "('temp-linecount-repo' will be deleted automatically)\n\n\n" &&
cloc temp-linecount-repo &&
rm -rf temp-linecount-repo
安装
这个脚本需要安装 CLOC(代码行数统计工具)。你可以通过包管理器来安装 cloc
,例如使用 Homebrew 执行 brew install cloc
。也可以通过 Docker 镜像 mribeiro/cloc
来安装。
你可以将脚本代码保存到一个名为 cloc-git
的文件中,然后运行 chmod +x cloc-git
命令,并将文件移动到 $PATH
中的任意文件夹,比如 /usr/local/bin
。
用法
该脚本接受一个参数,即任何 git clone
可接受的 URL。例如:https://github.com/evalEmpire/perl5i.git
(HTTPS)或 git@github.com:evalEmpire/perl5i.git
(SSH)。你可以在任何 GitHub 项目页面上点击“Clone or download”按钮获取这个 URL。
示例输出:
$ cloc-git https://github.com/evalEmpire/perl5i.git
Cloning into 'temp-linecount-repo'...
remote: Counting objects: 200, done.
remote: Compressing objects: 100% (182/182), done.
remote: Total 200 (delta 13), reused 158 (delta 9), pack-reused 0
Receiving objects: 100% (200/200), 296.52 KiB | 110.00 KiB/s, done.
Resolving deltas: 100% (13/13), done.
Checking connectivity... done.
('temp-linecount-repo' will be deleted automatically)
171 text files.
166 unique files.
17 files ignored.
http://cloc.sourceforge.net v 1.62 T=1.13 s (134.1 files/s, 9764.6 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Perl 149 2795 1425 6382
JSON 1 0 0 270
YAML 2 0 0 198
-------------------------------------------------------------------------------
SUM: 152 2795 1425 6850
-------------------------------------------------------------------------------
替代方案
手动运行命令
如果您不想麻烦地保存和安装shell脚本,可以手动运行命令。例如:
$ git clone --depth 1 https://github.com/evalEmpire/perl5i.git
$ cloc perl5i
$ rm -rf perl5i
语言学家
如果你希望结果与GitHub的语言百分比完全匹配,可以尝试安装Linguist而不是CLOC。根据其README,你需要运行gem install linguist
然后运行linguist
。我无法让它正常工作(问题#2223)。