コードクローンの検出・分析技術の活用手法に関する研究

上村 恭平 (1661002)


ソースコード中に存在する、互いに一致、あるいは類似するソースコードの断片をコードクローンと呼ぶ。 コードクローンの存在はソフトウェア開発の効率を低下させる要因の一つであり、適切に管理することが重要であるといわれている。 そのため、ソースコード中から自動でコードクローンを検出する技術や、コードクローンの除去を支援する技術、一貫した修正を支援する技術などが提案されている。 しかし、コードクローン関連技術を実際の開発の中で利用するには課題がある。 まず、既存のコードクローン検出ツールが特定の言語のみを対象としていることが挙げられる。 次に、コードクローンの影響を分析するために、コードクローンの変更履歴を調査することがあるが、既存手法では大規模なソフトウェアへの適用が困難であること。 最後に、コードクローン検出ツールの検出結果はソースコードの管理に利用するには余分な検出結果が多いこと。 本研究ではこれら3つの問題を解決する手法に関する研究を行った。

初めに、コードクローン検出技術のハードウェア記述言語を用いた回路開発への応用に関する研究を行った。 この研究では既存のコードクローン検出ツールが対応していない言語で記述されたソースコードに対して、簡易な変換を適用することでコードクローンを検出する手法を提案した。 次に、メソッド単位の変更情報を記録した構文情報リポジトリであるHistorageを利用した、コードクローンの履歴情報を抽出する手法を提案した。 加えて、オープンソースソフトウェアの開発に関わる情報を分析した結果を提供するプラットフォームであるCodosseumを開発した。 最後に、ソースコード削減可能量見積もり作業の支援を目的としたツールの開発を行った。 開発したツールはコードクローン検出結果から重複を除去し、ファイル単位で類似するソースコードをまとめた類似プログラム集合を利用者に提供する。 これらの研究はコードクローン関連技術の活用範囲を広げ、利用性を高めることにつながり、今後のコードクローンに関する研究や開発の中での活用の促進に貢献するものであると考える。

本発表では、取り組んだ研究のうち、ハードウェア記述言語を対象としたコードクローンの検出と調査に関する研究と、メソッド単位のコードクローンの履歴追跡に関する研究について報告する。