研究概要 |
今年度は,ギャップを含むクローンの検出に取り組んだ.多頻度グラフマイニングアルゴリズムの1つであるAGMアルゴリズムを応用することによって,既存のクローン検出ツールの結果から,高速にギャップを含むクローンの情報を生成する手法を提案した.多頻度グラフマイニングとは,グラフの集合が与えられた時に,その集合に中に一定回数以上出現する部分グラフを検出する手法である.すべての部分グラフを検出する場合は,NP完全として知られる部分グラフ同形問題となるので現実的ではない.そこで,「検出する部分グラフは分岐・閉路を含まない」という制約を設けることにより,高速に検出することを試みた. 提案手法をソフトウェアツールとして実装し,複数のオープンソースのソフトウェアに対して実験を行った.実験の結果,提案手法は十分にスケーラビリティが高く,実規模のソフトウェアシステムから高速にギャップを含むコードクローンの検出を完了することができることが確認できた.また,これまでの検出ツールでは,別々のクローンとして検出されてしまっていたが,本提案でギャップを含むクローンとして扱われているものを多数検出できることも確認できた.それらすべてを調査した結果,フォールトを含んでいると思われるような部分など,興味深い部分を特定することができた. しかし,特にソフトウェアの保守に悪影響と与えているとは思われないクローンも検出されてしまっており,今後はこのようなコードクローンをうまくフィルタリングする機構を考案する必要があると考えている.
|