D-CCFinder
D-CCFinder は80 台のコンピュータを用いた分散処理型コードクローン検出システムであり,検出されたコードクローン情報は散布図などを用いて可視化されます.
コードクローン検出には,CCFinder を利用します.検出対象であるソースコード群を小さなピースに分割し, ピース単位で CCFinder を実行することにより,コードクローンを検出します.
D-CCFinder の計算モデルは,次のようになります.まず検出対象の規模を nu とします(n は分割数であり,u はユニット(全ファイル集合をあらかじめ決めたサイズ以下で分割した要素)のサイズを表しています).このとき,任意のピースは(i, j)で表すことができます(ただし,1 <=i, j <=n).ピース(i, j) に含まれるコードクローンはピース(j, i) に含まれるコードクローンと同様であるため,後者については検出を行いません. これにより,CCFinder を用いてコードクローンを検出しなければならないピースの数はn(n + 1)/ 2 となります.
D-CCFinder は, 既存のCCFinder を複数のコンピュータで実行することにより,コードクローン検出を行います.各ピースの演算(コードクローン検出)は他のピースの演算結果に全く依存しないため,タスクの割り当て処理は単純に行えます.コードクローンが未検出のピースを,アイドル状態のコンピュータに割り当て,検出結果を回収するだけでよいことになります.
D-CCFinder はマスタースレーブ型のシステムであり,各スレーブマシン上でCCFinder が実行されます.マスターは, スレーブの実行状態を監視し, タスクを割り当てます.マスター・スレーブ間の通信は,Java RMI を用いて行われる. マスター・スレーブ間は 100Mbps のネットワークで結ばれています.検出対象ソースファイルと検出結果は全てのマシンがアクセス可能なファイルシステム上に存在し,各マ シンはNFS 経由でアクセスします.
D-CCFinder は大学の演習室のコンピュータ80 台を用いて実装されており,1 台がマスター,残りの79 台がスレーブです.D-CCFinder には対象ソー スファイルに前処理を行うユーテリティ,検出結果を集約するプログラム,および散布図などを生成するジェネレータが統合されています.
オープンソースオペレーティングシステム FreeBSD 用のソフトウェア集合であるPorts コレクションに含まれるソースファイルに対して D-CCFinder を適用しました. 約4 億行のC 言語で記述されたソースコードから51 時間でコードクローン検出を完了し, 散布図等を用いてコードクローン共有状態の全体像を把握することができました.また,Java 部品検索システムSPARS-J との間でコードク ローンを検出しました.検出結果は可視化され,容易にどの機能がオープンソースとコードクローンであるかを特定することができました.
評価対象のソフトウェアと大量のオープンソースコード間で共有されているコードクローンを検出することにより, ソースコードの著作権違反の検出 等にも有効な技術となることが期待されます.また,D-CCFinder は分散環境を用いたコードクローン検出のプロトタイプシステムであり,多くの改良しなければならない部分があります. 今後は,CCFinder で用いているコードクローン検出とは異なる手法(例えば, fingerprint 技術)を用いてコードクローン検出を行うことを検討しており,更なるパフォーマンスの向上とユーザビリティの改善を続けていく予定です.
主な関連文献
  • 肥後 芳樹,リビエリ シモネ,松下 誠,井上 克郎,“大規模ソースコードを対象としたコードクローンの検出と可視化,” 情報処理学会論文誌,Vol.48,No.11,pp.3510-3519,November 2007.
  • リビエリ・シモネ,肥後 芳樹,松下 誠,井上 克郎,“D-CCFinder:超大規模ソースコード集合を対象とした分散処理型コードクローン検出・可視化システム,” 電子情報通信学会技術研究報告,SS2006-68,Vol.106,No.427,pp.19-24,December 2006.
  • Simone Livieri, Yoshiki Higo, Makoto Matsushita and Katsuro Inoue, “Very-Large Scale Code Clone Analysis and Visualization of Open Source Programs Using Distributed CCFinder: D-CCFinder,” Proc. 29th International Conference on Software Engineering (ICSE 2007), pp.106-115, Minneapolis, MN, May 2007.
  • Copyright (c) 2003-2008 Nara Institute of Science and Technology and Osaka University. All Rights Reserved.