ソースコードの行数をカウントできる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
この修正を行う前後で 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