楠本研究室

業績一覧

ホーム業績一覧

プロジェクト全体の抽象構文木構築によるファイル間の移動コード検出

プロジェクト全体の抽象構文木構築によるファイル間の移動コード検出
電子情報通信学会論文誌 D, vol.J104-D, no.4, pp.242-254 (2021)
概要: ソフトウェア開発において,開発者がソースコードの差分を理解することは重要である.差分を検出するツールとしてGumTree がある.GumTree は変更前後のソースファイルを入力として受け取ると抽象構文木を生成し,削除・挿入・移動・更新といった操作を抽象構文木のノード単位で検出する.しかし,GumTree は単一ファイルの差分しか検出できないため,ファイルを横断するソースコードの移動を検出できない.本研究では,GumTree を拡張しファイルを横断するソースコードの移動を検出する手法を提案する.提案手法では,プロジェクトに含まれる全てのソースファイルから一つの大きな抽象構文木を構築し,検出精度向上のために抽象構文木に対して2段階のマッチングを行う.8個のオープンソースソフトウェアに対して提案手法を用いて実験を行った結果,88,848個のコミットの中から合計で89,418個のファイルを横断する移動を検出でき,ファイルを横断するソースコードの移動やファイル名に幾つかの特徴が得られた.また既存ツールと比較を行った結果,既存ツールを上回る数の移動を検出した. タグ: abstract, across, code, detecting, files, moves, project-level, source, syntax, tree
@article{藤本章良2021,
  author = {藤本 章良 and 肥後 芳樹 and 松本 淳之介 and 楠本 真二},
  title = {プロジェクト全体の抽象構文木構築によるファイル間の移動コード検出},
  journal = {電子情報通信学会論文誌 D},
  volume = {J104-D},
  number = {4},
  pages = {242--254},
  year = {2021},
  month = {apr},
  url = {https://doi.org/10.14923/transinfj.2020PDP0027}
}