コード片再利用に基づいたプログラム自動修正に対する再利用候補限定に向けた調査
卒業論文, 大阪大学
特別研究報告
概要: デバッグ工数の削減に向けて,プログラムの自動修正が望まれる.
一般に,プログラムの修正はバグの同定と同定したバグの修正により構成される.
つまり,自動修正に向けて,バグ同定とバグ修正の自動化が必要である.
これまでに,自動バグ同定の研究は盛んに行われているのに対し,自動バグ修正に関する研究はあまり行われていない.
自動バグ修正は,バグを含んだソースファイルに変更を加え,修正プログラムを生成するものである.
加える変更には,コード片の追加や削除などがある.
コード片の追加は,修正に用いるコード片をバグ同定によって特定された位置に挿入する操作である.
しかし,修正候補は構文が許容する限り無限に存在するため,追加するコード片の決定は困難である.
そこで,再利用に基づく自動修正手法が提案されている.
再利用に基づく自動修正手法では,修正候補を同一プロジェクト内の既存コードに限定している.
追加するコード片は,修正候補よりランダムに1行選択する.
しかし,大規模なソフトウェアを対象とした場合,再利用されるコード片候補の数が膨大になるという問題がある.
再利用候補をある程度絞り込むことができれば,より短時間で自動修正を行えると期待できる.
仮に,追加元コード片の周辺領域と追加先コード片の周辺領域間に何らかの関係があれば,再利用候補を限定することができる.
そこで本研究では,追加元コード片の周辺領域と追加先コード片の周辺領域間における類似度について調査を行った.
本研究では,OSSを対象として,追加元コード片の周辺領域と追加先コード片の周辺領域の類似度(A),同一プロジェクトの各周辺領域と追加先コード片の周辺領域の類似度(B)を算出し,類似度Aと類似度Bの比較を行った.
調査の結果,4つのOSSプロジェクトにおいて,類似度Aの中央値および平均値がBよりも高くなることがわかった.
また,仮説検定により,AとBの平均値に差が認められることを示した.
タグ: debug, automated, program, repair, code, reuse, software, repository, mining
@mastersthesis{横山晴樹2015,
author = {横山 晴樹},
title = {コード片再利用に基づいたプログラム自動修正に対する再利用候補限定に向けた調査},
school = {大阪大学},
type = {Bachelor's Thesis},
year = {2015},
month = {feb}
}