「CCFinderX」でコードクローン分析

コードクローン(重複コード)とは、ソースコード中の全く同じあるいは類似したコードの断片。一般に、コードクローンが存在するソースコードは保守が困難になる。これは、誤りを含んだコードを複製することでその誤りが分散してしまうことや、機能変更を行う際にクローンを探して、同様の対応が必要かどうかを調査する必要があるためである。コードクローンを検出するためには、単純なテキスト比較では不十分であり、言語の構文レベルでの比較が必要となる。

CCFinderXは、フリーのコードクローン検出ツール。2004年の未踏にも採択されているようだ。

CCFinderXはコードクローン検出ツールです。Java, C/C++, COBOL, VB, C#ソースコードから、コードクローン(重複コード)を検出します。
CCFinderXは、拙作CCFinderのメジャーバージョンアップであり、新しい設計と技術により、性能の向上、利用者による前処理のカスタマイズ、メトリクスやプログラムパターンに基づいた対話的な分析を可能にします。

http://www.ccfinder.net/ccfinderx-j.html

某プロジェクトでダサい障害が発生したので、なんとなくソースを眺めてみたら、、、なんじゃこりゃ〜!というような冗長なコードが目に付いた。もしかして、こんなコードがほかのモジュールにも伝染しているのではと不安になったのだけど、手作業で全量チェックもできないし、単純な文字列比較ではチェックできないしと困っていたところ、「ITプロジェクトの見える化」で紹介されていた「CCFinderX」を思い出した。

ITプロジェクトの「見える化」下流工程編 (SEC BOOKS)

ITプロジェクトの「見える化」下流工程編 (SEC BOOKS)

とりあえず、動作確認のために学生時代に作成したプログラムを解析してみた。少人数で作成した小さなプログラムだし、ちゃんとしたアーキテクト(もちろん僕ではない)が設計しているのでコードクローンはほとんどなし。使い方は理解したので実プロジェクトの成果物に適用してみたい。

http://f.hatena.ne.jp/images/fotolife/j/jun-yoshida/20070312/20070312012444.gif

インストール

インストールには、解凍パスワードとライセンスキーファイルが必要となるため、少々面倒。

  • ユーザー登録ページに名前とメールアドレスを入力すると、解凍パスワードとライセンスキーファイルが登録したメールアドレスに送付される
  • ダウンロードページから最新をダウンロード
  • ファイルは7zip形式で圧縮されているので、解凍ツールをダウンロードする必要がある(ここが面倒・・・)。
  • ファイルを7-Zipで展開する。
  • ライセンスキー入りのメールを「licensedata.eml」という名前で保存し、binディレクトリ下にコピー