コードの実装行数を測る npm モジュール2つ と Bash コマンド

あるプロジェクト全体での、プログラムの実装行数を調べたくなった。

npm モジュールでは sloc というモジュールと、cloc というモジュールがサクッと集計できた。

いずれも $ npm i -g sloc cloc とグローバルインストールして使う。どちらもオプションが豊富に存在するが、最もシンプルに使うなら $ sloc ./src/ とか $ cloc ./src/ とかいう風に叩けば良い。

これらのモジュールは、コードとして動作する行、コメント行、空行などを分けて集計してくれるが、どうも0行のファイルなど一部のファイルは対象にしてもらえず、「合計ファイル数」の表示がおかしかった。

そこで、Bash コマンドラインで指定のディレクトリ配下のファイルの行数をカウントする方法を調べてみた。結論からすると以下のようになる。

$ find . -type file | xargs wc -l

find コマンドでカレントディレクトリ配下のファイル名を列挙し、xargs を利用して引数にファイル名を渡し、wc でカウントする。

実行するとファイル別の行数と、最後に合計行数が表示されるので便利。ただし、コレは単にファイルの行数を数えているだけで、コード行やコメント行は区別できていない。

find コマンドが配下の全てのファイルを抽出してしまうので、.DS_Store だとか .git/ だとか node_modules/ だとか、余計なファイルを含めないよう注意。