多粒度コードクローンの検出と評価

抄録

コードクローンはソフトウェアの保守性を低下させる原因の 1 つとされており,コードクローンがソフトウェア中にどの程度存在しているか,及びどこに存在しているかを理解することはソフトウェア保守の観点から重要である.そのため,これまでに多くのコードクローン検出手法が提案され,自動的にコードクローンを検出するツールが開発されている.また近年,大規模なソースコードの集合に対してコードクローン検出ツールを適用し,ライブラリの候補や修正漏れを検出する研究が行われている.既存のコードクローン検出手法は,ファイル単位やコード片単位など単一の粒度でコードクローンを検出する.一般的に,検出の粒度が粗いほど検出時間は短くなるが,検出可能なコードクローンは少なくなる.一方,検出対象の粒度が細かいほど検出可能なコードクローンは多くなるが,検出時間は長くなる.そこで本論文では,より多くのコードクローンをより短時間で検出することを目的として,粗粒度から細粒度へ段階的にコードクローンを検出する手法を提案する.段階的にコードクローンを検出する過程において,ある粒度でコードクローンとして検出されたコードをそれよりも細粒度なコードクローンの検出対象から除外することで,細粒度な検出手法と比較してより高速に検出できる.また,粗粒度な検出手法と比較してより多くのコードクローンを検出できる.提案手法をコードクローン検出ツール Decrescendo として実装し,複数のオープンソースソフトウェアに適用した.そして,提案手法を粗粒度な検出手法および細粒度な検出手法と比較して評価を行った.実験の結果より,細粒度な (コード片単位の) 検出手法と比較して,多粒度な検出手法が約 10 ~ 20 倍高速にコードクローンを検出できることを示した.また,粗粒度な (メソッド単位の) 検出手法と比較して,多粒度な検出手法が約 10 ~ 30 倍のコードクローンを検出した.この検出数は細粒度な (コード片単位の) 検出手法とほぼ同数であった.

収録刊行物

詳細情報 詳細情報について

  • CRID
    1050855522100315264
  • NII論文ID
    170000175814
  • Web Site
    http://id.nii.ac.jp/1001/00183120/
  • 本文言語コード
    ja
  • 資料種別
    conference paper
  • データソース種別
    • IRDB
    • CiNii Articles

問題の指摘

ページトップへ