プロジェクトのソースコードは全体で何行あるかを計算してくれるパッケージを紹介します。

用途として、

  • 自分のつくっているプログラムの進捗を測る
  • オープンソースのプロジェクトの規模を知る

といったことに使えると思います。

使いかた

実行するには、対象のプロジェクトのファイルやディレクトリ上で、 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のパッケージ管理を使う を参照してください。