GitHub リポジトリのコード行数を計測する方法3つ
GitHub リポジトリのコード行数を簡単に見たいなと思い、やり方を調べてみた。
目次
Chrome 拡張機能「GitHub Gloc」を使う
Chrome 拡張機能の GitHub Gloc を使うと、GitHub のリポジトリページにコード行数がバッジ表示されるようになる。
とてもお手軽だが、難点があって、コメントや空行も含んだ全てのテキストの行数しか分からないのである。
GitHub API + jq 芸のワンライナーで調べる
上述の GitHub Gloc のソースコードを覗いてみると、/stats/code_frequency
という GitHub API をコールしているのを発見。
どうも対象リポジトリの追加・削除行数が取得できる API らしい。GitHub Gloc はコレを Reduce で集計することでコード行数を取得していた。
というワケで、jq を使ってワンライナーを作ってみる。
$ curl -sS https://api.github.com/repos/【ユーザ名】/【リポジトリ名】/stats/code_frequency | jq 'reduce .[] as $row (0; . + $row[1] + $row[2])'
# 例えば以下のように
$ curl -sS https://api.github.com/repos/Neos21/neos-normalize/stats/code_frequency | jq 'reduce .[] as $row (0; . + $row[1] + $row[2])'
1355
コチラも当然ながら、全てのテキストファイルの、空行などを含んだ行数になっている。
cloc を使用する
空行やコメント行を除いた、純粋な「コード行」を知りたい場合は、やはり git clone
してみるしかない。cloc
というツールを組み合わせるとそこら辺もよく分かる。
# cloc は Homebrew などでインストールできる
$ brew install cloc
次のようなスクリプトを用意し、cloc-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-git https://github.com/Neos21/neos-normalize.git