[修士論文] 変更箇所の構成情報と構造的特徴の学習に基づく自動コミット分割

小林研M2の古賀さんが修士論文を提出しました.

題目:変更箇所の構成情報と構造的特徴の学習に基づく自動コミット分割
論文概要:

VCSを用いたソフトウェア開発において、一つのコミットに複数のタスクがまとめられてしまった複合コミットが作成されることがある.複合コミットはコードのレビューやrevertを困難にすることで開発の妨げとなることが知られている.そこで複合コミットをコミット内に存在する各タスクに基づいてSingle Task Commitに分解する手法がこれまで多く提案されてきた.当研究室の李は、Tree-Based CNNを用いて変更箇所のASTのノード名だけでなく木構造の特徴も捉えて学習するモデルを提案した.この手法内では同じく当研究室の真田が提案した、変更箇所間のファイルや変更種別の異同に基づいて変更箇所の組を分類する手法が用いられているが、この手法内で考慮されている変更種別は削除と追加のみであり、特定の削除と追加の変更の組からなる修正に相当する変更が考慮されていない.修正に含まれる削除と追加の変更は高い割合で同コミットとなるため、それらをまとめて一つの変更とすることで実際に異コミットとなりうる変更間の関係に絞って学習することができ、精度の向上と学習時間の改善が期待できる.実際にクラスタリング精度と学習時間をベースラインと比較したところ、平均Success rateは最大4.5% 改善し、学習時間は半分以下に抑えられることが明らかとなった.

また本研究では複合コミット分割で用いられてきた既存のデータセットの問題にも対処する.Herzigらの研究をはじめとする既存の複合コミット分割に関する研究で用いられているデータセットは、研究者らが手動でプロジェクトを解析することで得られたものであり、データセットの数を増やす、対象言語を広げるといった拡張を行える余地がない.そのため、Github APIを用いて実際のプルリクエストから複合コミット分割用のデータセットを自動で構築する手法を提案する.この手法ではデータセット数の増加や対象言語の拡張は容易であり、既存データセットにおける拡張性の乏しさの問題点を解消している.更に本データセットで学習したモデルは、Herzigらの作成した既存データセットに対しても平均Success rate 84% と高い精度で予測を行うことができ、Herzigらのデータセットで学習したモデルよりも高い精度で予測を行えていた.