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