Clocを使用してDebianパッケージでコード行を見つける方法

Clocを使用してDebianパッケージでコード行を見つける方法

cloc - コード行数を計算する統計ユーティリティ

マンページでは、タールボールのコード行数を計算するために使用できると言われています。

cloc perl-5.10.0.tar.gz

Debian パッケージは圧縮されたターボールと同じです。 clocを使用する方法はありますか?

私は試しました:-

[$] cloc cloc_1.60-1.1_all.deb                                                                                                    
       0 text files.
       0 unique files.                              
       1 file ignored.

出力が正しくありません。私はDebianパッケージにどれくらいのファイルがあるのか​​見てみました。

[$] dpkg -L cloc                                                                                                                
/.
/usr
/usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/cloc.1.gz
/usr/share/doc
/usr/share/doc/cloc
/usr/share/doc/cloc/changelog.Debian.gz
/usr/share/doc/cloc/changelog.gz
/usr/share/doc/cloc/copyright
/usr/bin
/usr/bin/cloc

したがって、それはclocのバグであるか、正しく適用されていません。記録のために(小さいので)clocのDebianパッケージを例としてダウンロードしました。

[$] ls -lh cloc_1.60-1.1_all.deb                                                                                             
-rw-r--r-- 1 shirish shirish 88K Jul 24  2015 cloc_1.60-1.1_all.deb

答えを楽しみにしています。

答え1

バイナリパッケージ(バイナリパッケージcloc)ではなくソースパッケージで実行する必要があります。cloc_1.60-1.1_all.deb

これは働きます:

dget -d http://httpredir.debian.org/debian/pool/main/c/cloc/cloc_1.60-1.1.dsc
cloc cloc_1.60.orig.tar.gz

そしてショー

      12 text files.
       7 unique files.                              
       9 files ignored.

http://cloc.sourceforge.net v 1.60  T=0.05 s (57.3 files/s, 176957.8 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Perl                             2            666            978           7477
make                             1             26             35             75
-------------------------------------------------------------------------------
SUM:                             3            692           1013           7552
-------------------------------------------------------------------------------

dgetソースコードパッケージのダウンロード渡す記述子を提供し、-dソースを抽出しないように指示します。パッケージdgetにあります。devscripts

答え2

実際、.debファイルにソースコードが含まれていると仮定し、clocの--extract-withスイッチを使用して.debファイルを使用して直接コードを計算することができます。

cloc --extract-with='dpkg-deb -x >FILE< .' ../cloc_1.60-1_all.deb 
       2 text files.
       2 unique files.                              
       1 file ignored.

https://github.com/AlDanial/cloc v 1.66  T=0.09 s (11.3 files/s, 102181.3 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Perl                             1            661            966           7437
-------------------------------------------------------------------------------

でもちょっとおっぱいです。次のバージョンのcloc(1.68)では、.debファイルの基本サポートを追加します。

また、tarballと.debsの数の違いに注意してください。 tarballには完全なソースコード配布が含まれていますが、後者にはインストールする最終ツールのみが含まれています。 clocはソースコードなので計算できますが、コンパイルされていると.debは計算できません。このトリックはほとんどの.debファイルでは機能しません。ほとんどのファイルにはコンパイルされた実行可能ファイルが含まれているためです。

関連情報