pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


ソースコードの行数をカウントできるohcountの対象ファイルにDelphiプロジェクトファイル dpr を追加する

ソースコードの行数を数えるというのは、プロジェクトの規模を確認したいときの指標の一つになると思います。ohcount はそういう場合に利用できるツールの一つであり、200を超える拡張子を対象に調査できます。私が普段触ることのある言語だと、Pascal(Delphi), C++, JavaScript, awk, sh などは当然カバーされています。

しかし、Delphi プロジェクトファイル dpr の行数はカウントされないことに気付きました。dpr はプロジェクトファイルであると同時にソースコードの一部でもあり、コンソールアプリなら dpr だけで完結するケースがありますし、そうでなくてもアプリケーションの初期化処理などを含むケースがあります。プロジェクト全体から見れば些細な分量とはいえ、ソースコードとして解析したい対象です。

そこで、ohcount のソースコードを修正して dpr を調査対象に含めることにしました。私は ohcount を WSL 上の Ubuntu 18.04 LTS で使っていますので、この環境での変更方法を手順として残しておきます。個人的なメモなので、内容は割と雑に書いてますが、Ubuntu / Debian が分かる方なら対応可能と思います。

  • ソースパッケージをダウンロードできるように /etc/apt/sources.list を修正する
  • apt-get source ohcount を実行してソースパッケージを取得する
  • ソースコードの下記の箇所を修正する
--- src/hash/extensions.gperf.orig      2020-07-08 19:41:30.072570000 +0900
+++ src/hash/extensions.gperf   2020-07-08 19:17:12.717217100 +0900
@@ -52,6 +52,7 @@
 d, LANG_DMD
 dat, DISAMBIGUATE("dat")
 def, DISAMBIGUATE("def")
+dpr, LANG_PASCAL
 di, LANG_DMD
 doc, BINARY
 dtx, LANG_TEX_DTX
  • dpkg-buildpackage -b -uc を実行してビルド
  • sudo dpkg -i ohcount_3.1.0-2_amd64.deb を実行してパッケージをインストール

この修正を行う前後で ohcount の実行結果を比較すると、Files, Code などの集計結果が変わっていることが確認できます。実行結果の比較は Delphi 10.4 のサンプルプロジェクト Samples/Object Pascal/RTL/HttpDownload を使用しました。

# Samples/Object Pascal/RTL/HttpDownload のファイル一覧
$  ls | cat
FDownloadDemo.fmx
FDownloadDemo.pas
HttpDownloadDemo.dpr
HttpDownloadDemo.dproj
readme.md

# 修正前
$ ohcount .
                          Ohloh Line Count Summary

Language          Files       Code    Comment  Comment %      Blank      Total
----------------  -----  ---------  ---------  ---------  ---------  ---------
pascal                1        282         20       6.6%         46        348
----------------  -----  ---------  ---------  ---------  ---------  ---------
Total                 1        282         20       6.6%         46        348
Examining 5 file(s)


# 修正後
$ ohcount .
                          Ohloh Line Count Summary

Language          Files       Code    Comment  Comment %      Blank      Total
----------------  -----  ---------  ---------  ---------  ---------  ---------
pascal                2        292         29       9.0%         52        373
----------------  -----  ---------  ---------  ---------  ---------  ---------
Total                 2        292         29       9.0%         52        373