July 10, 2006

Rabin Karp アルゴリズムでコード重複の検出

YAPC::NA で会った FotangoNorman Nunley がつくってる Algorithm::RabinKarp モジュールが面白げです。

Rabin Karp 文字列探索アルゴリズム (wikipedia) を使って文字列のハッシュ(ダイジェスト)をチェックし、同一の値を示す部分を重複しているとみなしてレポートしてくれます。つまり、プロジェクト内のコードのコピーペーストを検出するツールとして使えるというわけ。

ためしに Plagger で試してみた結果は rabin.txt のようになりました。プラグインの register_hook や CustomFeed での Feed オブジェクトの生成など、イディオム的に使う部分が大半になってしまっていますが、いくつか実際コピペで再利用しているコードが検出できています。

cpan Algorithm::RabinKarp でインストールすると、rabin.pl というコマンドラインツールがインストールされるので、 rabin.pl \*.pm dir のように実行します。Enjoy!

Posted by miyagawa at July 10, 2006 04:28 PM | Permalink | Comments (1) | TrackBack(0)
\n"); //-->
Comments

CCFinderX というコード重複検出用のソフトがあります.
オープンソースでは無いですが,グラフィカルに見えるのが面白いです.
一度試されてみてはいかがでしょう.
(Perlコードもテキストとして解析させれば使えます)
http://www.ccfinder.net/ccfinderx-j.html

自分のコードを解析してみると結構重複が見つかったりして面白いです...

Posted by: みかげ on July 10, 2006 10:42 PM
Trackbacks
TrackBack URL for this entry: http://blog.bulknews.net/mt3/mt-tb.cgi/2004
Post a comment