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のパッケージ管理を使う を参照してください。