シェルスクリプト、cloc-git
このシェル スクリプトを使用すると、1 つのコマンドでリモート 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 (「Count Lines of Code」) をインストールする必要があります。cloc
おそらくパッケージマネージャーでインストールできます-たとえばbrew install cloc
、Homebrew . で公開されている docker イメージmribeiro/cloc
もあります。
スクリプトをインストールするには、そのコードをファイルcloc-git
に保存して を実行chmod +x cloc-git
し、そのファイル$PATH
を/usr/local/bin
.
使用法
スクリプトは引数を 1 つ取ります。これは、git clone
受け入れられる任意の URL です。例はhttps://github.com/evalEmpire/perl5i.git
(HTTPS) またはgit@github.com:evalEmpire/perl5i.git
(SSH) です。この URL は、[複製またはダウンロード] をクリックして、任意の GitHub プロジェクト ページから取得できます。
出力例:
$ 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
-------------------------------------------------------------------------------
代替案
コマンドを手動で実行する
シェル スクリプトの保存とインストールに手間をかけたくない場合は、コマンドを手動で実行できます。例:
$ git clone --depth 1 https://github.com/evalEmpire/perl5i.git
$ cloc perl5i
$ rm -rf perl5i
言語学者
結果を GitHub の言語パーセンテージと正確に一致させたい場合は、 CLOCの代わりにLinguistをインストールしてみてください。その READMEによると、実行する必要があります。うまくいきませんでした ( issue #2223 )。gem install linguist
linguist