Emacsで全ソースコードの行数を計算する
プロジェクトのソースコードは全体で何行あるかを計算してくれるパッケージを紹介します。
用途として、
- 自分のつくっているプログラムの進捗を測る
 - オープンソースのプロジェクトの規模を知る
 
といったことに使えると思います。
使いかた
実行するには、対象のプロジェクトのファイルやディレクトリ上で、 M-x how-many-lines-in-project を実行します。
試しにEmacsのソースで実行してみると、次のような結果が得られました。
    527    test/etags/php-src/sendmail.php
    819    test/etags/pyt-src/server.py
   2202    test/etags/y-src/cccp.c
   2236    test/etags/y-src/parse.c
     30    test/indent/js-indent-init-dynamic.js
     21    test/indent/js-indent-init-t.js
     82    test/indent/js.js
   1092    test/indent/pascal.pas
    414    test/indent/ruby.rb
      9    test/indent/scheme.scm
    180    test/indent/shell.sh
    313    test/redisplay-testsuite.el
     93    test/rmailmm.el
2186947 total
ファイル数が多いので、最後だけ抜粋していますが、全体で200万行を越えています。
このパッケージでプロジェクトと呼んでいるのは、gitで管理されているディレクトリのことです。変数 hm-lines-project-file は .git として定義されています。
もしgitで管理されていないところで実行してもエラーになります。
対象のソース
対象のファイルの拡張子は hm-lines-file-extensions で定義されています。初期値では次のファイルが対象です。
- .el .lisp .scm .ss .rkt
 - .erl .hs .ml .sml
 - .c .cpp .hpp .cc .mm
 - .java .scala .sbt .groovy .clj
 - .py .rb .js .coffee .pl .php .go .lua .rs
 - .pas .sh .sql .fs .st .R .swift
 
注意点は、
- シェルコマンドの find, wc, rev, sort が必要
 - 実行結果はコメント行も含めた単純な行数
 - 前述している設定用の変数は、カスタマイズ用変数ではないので、変更する場合、init.elでの設定になる
 
といったところです。
インストール
インストールするには M-x package-install を実行して、 how-many-lines-in-project を入力すればOKです。
このブログでのお決まりになっていますが、パッケージのリポジトリにMELPAを指定しておいてください。詳しくは Emacsのパッケージ管理を使う を参照してください。