2022 Fiscal Year Research-status Report
Fully Automated Resolution of Merge Conflicts to Promote Individual Software Changes
Project/Area Number |
22K11985
|
Research Institution | Ritsumeikan University |
Principal Investigator |
丸山 勝久 立命館大学, 情報理工学部, 教授 (30330012)
|
Co-Investigator(Kenkyū-buntansha) |
肥後 芳樹 大阪大学, 大学院情報科学研究科, 教授 (70452414)
|
Project Period (FY) |
2022-04-01 – 2025-03-31
|
Keywords | マージ競合 / 版管理 / 自動プログラム修正 / ソフトウェア保守と進化 / ソフトウェア開発環境 / プログラム解析 |
Outline of Annual Research Achievements |
バグを含むプログラムとその振る舞いを検査するテストケースを与えて、バグを取り除いたソースコードを出力する自動プログラム修正技術を応用することで、独立に変更されたプログラムのソースコードをマージする際に発生する競合を自動的に解決する仕組みを確立し、それを実現するツールを構築する。2022年度は、主に2つの研究項目を実施した。 (1)テストケースをオラクルとして用いる探索ベースの自動プログラム修正システムは、与えられたすべてのテストケースに成功するプログラムを出力するだけである。このため、可読性や信頼性の観点から開発者にとって、受け入れられない修正プログラムが出力されることが発生する。このような修正プログラムを自動マージ結果として提供しても、開発者がそのプログラムをそのまま受け入れる可能性はきわめて低い。そこで、本研究で利用する遺伝的アルゴリズムに基づく自動プログラム修正システムにおいて、開発者が受け入れ可能なプログラムがどのような状況において出力されるのかを明らかにすることを目的とした実証的研究を行った。 (2)自動マージによって出力されるプログラムの振る舞いを検査するテストケースを選択するためには、競合する変更差分がマージ対象のソースコードやテストコードに対して影響を与える範囲を把握する必要がある。従来の静的解析ツールは、オブジェクト指向プログラムのソースコードに対する依存関係解析の能力が十分でなく、影響波及範囲を正確に把握することが困難であった。そこで、メソッドをまたがるデータフロー、動的束縛を伴うメソッド呼び出し、非構造化プログラミングに対応した、Java言語のソースコード向けのツールプラットフォームを開発した。
|
Current Status of Research Progress |
Current Status of Research Progress
2: Research has progressed on the whole more than it was originally planned.
Reason
2022年度の計画における研究項目は、(1)自動マージを実装したベースシステムの構築と、(2)競合する変更差分を考慮した上で除外するテストケースを推測する手法を確立することである。 研究項目(1)については、遺伝的アルゴリズムに基づく自動プログラム修正システムkGenProgを組み入れた自動マージシステムの構築を完了した。具体的には、マージ対象のソースコードに対して、競合が発生するメソッドを特定し、競合に関係する部分だけを修正対象とするようにkGenProgを改造し、マージに特化したシステムとして完成させた。また、研究項目(2)の実現に向けて、オラクルとして用いるテストケースをクラス単位ではなくメソッド単位で指定できるようにkGenProgを改造した。 研究項目(1)と(2)においてソースコードを扱う上で、従来の解析ツールで不十分な点を解決するために、従来から開発を続けているJava言語のソースコード向けの解析ツールJxPlatformの改良を行った。改良ツール(第3版)については、GitHuBで広く一般に公開した。 このように、2022年度は、ベースシステムの改善や解析ツールの改良に力を入れた。また、当初は予定していなかった、自動プログラム修正ツールの効率的な利用に関する検討を新たに実施した。その一方で、除外するテストケースを推測する手法に関する理論的な側面からの検討が不十分となった。計画の一部に不十分な点があるものの、自動マージシステムの完成に向けて開発は進んでおり、研究はおおむね順調に進展しているといえる。
|
Strategy for Future Research Activity |
現時点では、kGenProgに対して2つの改造は別々に実施されている。自動マージシステムの構築という点から、今後はこれら2つの改造の統合が必要である。また、除外するテストケースを推測する手法について検討をすすめ、早急に仕組みを確立する。その上で、確立した仕組みをマージシステムに組み入れる。システムの構築が完了した後には、テストケースを除外することで開発者が受け入れ可能なマージ結果を出力できるのかどうかに関する評価実験を行い、自動マージの適用可能性と有用性を明らかにすることを目指す。 さらに、2023年度は、研究計画に基づき、実際に人間が行った競合解決時の編集履歴を収集し、競合解決パターンの整理に取り組む。当初の予定では、被験者を用意して、ソースコードに対する編集操作を収集することにしていた。その一方で、このように収集できる編集操作の数や種類は限定的である。そこで、GitHubに公開されているプロジェクトから振る舞い競合を発生させたコミットを特定し、マージ前後のソースコードから抽象構文木における差分を抽出する戦略も取り入れる。これらの差分を統計的に処理することで、競合解決パターンを自動抽出できる仕組みの確立に取り組む。
|
Causes of Carryover |
国際会議がオンライン実施になったため、旅費の支出が減少した。また、論文投稿が間に合わなかったため、掲載料の支払いが不要になった。 設備備品費は、当初の予定通り、実験結果を保存する記憶媒体の購入に使用する。旅費は、研究代表者および研究分担者が発表のために国際会議および国内会議に出席するために使用する。その他の経費は、会議の参加費、論文掲載料を計上している。2022年度からの繰り越し分については、実験用PCを増強するための備品購入に使用する。
|