研究課題/領域番号 |
22K11985
|
研究機関 | 立命館大学 |
研究代表者 |
丸山 勝久 立命館大学, 情報理工学部, 教授 (30330012)
|
研究分担者 |
肥後 芳樹 大阪大学, 大学院情報科学研究科, 教授 (70452414)
|
研究期間 (年度) |
2022-04-01 – 2025-03-31
|
キーワード | マージ競合 / 版管理 / 自動プログラム修正 / ソフトウェア保守と進化 / ソフトウェア開発環境 / プログラム解析 |
研究実績の概要 |
バグを含むプログラムと正しい振る舞いを検査するテストケースを与えて、バグを取り除いたソースコードを出力する自動プログラム修正技術を応用することで、独立に変更されたプログラムのソースコードをマージする際に発生する競合を自動的に解決する仕組みを確立し、それを実現するツールを構築する。2023年度は、主に2つの研究項目を実施した。 (1)テストケースをオラクルとして用いる探索ベースの自動プログラム修正システムは、与えられたすべてのテストケースの実行に成功するプログラムを出力するだけである。このため、可読性の観点から開発者にとって、受け入れられない修正プログラムが出力されることがある。このような修正プログラムを自動マージの結果として提供しても、開発者がそのプログラムをそのまま受け入れる可能性はきわめて低い。そこで、本研究で利用する遺伝的アルゴリズムに基づく自動プログラム修正システムkGenProgにおいて、開発者が受け入れられないプログラムがどのような状況で出力されるのかを明らかにすることを目的とした実証的研究を行った。 (2)実際に人間が行ったマージ競合解決のためのコード変換を収集するために、GitHubのプルリクエストに含まれる情報とコード差分の関係を調査する支援ツールを構築した。このツールは、プルリクエストにおけるコメント記述からソースコード要素への参照を抽出し、コメント記述をソースコードの意味的な差分と関連付けするのが特徴である。このツールを用いることで、振る舞い競合が発生した場面、さらに競合が解決・未解決な場面におけるソースコードの意味的差分を自動的に収集できるようになる。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
2023年度の計画における研究項目は、(1)テストケースを探索的に除外できるようにベースシステムを拡張と、(2)人間が行ったマージ競合解決時の編集履歴を収集し、競合解決パターンを抽出することである。 研究項目(1)については、テストケースをメソッド単位で除外できるようにkGenProgの改造を継続した。その上で、すべてのテストケースの実行に成功することだけを自動マージの目的としてしまうと、マージに成功するテストメソッドの組み合わせに対して、大量のマージ結果が出力されてしまう。このような状況では、開発者にとって受け入れられないプログラムをマージ結果から自動的に取り除くべきである。本研究では、開発者にとって受け入れられないプログラムの記述パターンを定義した。このパターンを適用することで、開発者に受け入れられる可能性が高いマージ結果だけを出力するテストメソッドの組み合わせを推測できる可能性が高まった。このように、テストメソッドを除外する際の戦略の一つを新たに見いだした成果が得られた。一方で、テストメソッドを除外する具体的な手法については検討中である。 研究項目(2)の実現に向けて、GitHubのプルリクエストに着目し、過去において発生したマージ競合、競合解決の可否、競合に関係するソースコードの意味的差分を収集するツールの構築に取り組んだ。ツールを用いることで、マージ競合に関する情報を自動的かつ効率的に収集することに成功した。その一方で、収集した情報を競合解決パターンとして整理するまでに至らなかった。 当初計画の一部に未達成な部分があるものの、自動マージシステムの完成に向けて理論的な検討は進んでおり、研究はおおむね順調に進展しているといえる。
|
今後の研究の推進方策 |
開発者に受け入れられる可能性が高いマージ結果だけを出力するように、自動プログラム修正システムkGenProgの改造を行う。その上で、振る舞い競合の解決が成功するように、テストケースを除外する手法について検討をすすめ、早急に仕組みを確立する。この仕組みを組み込んだ自動マージシステムを用いることで、テストケースを除外しても開発者が受け入れ可能なマージ結果を出力できるのかどうか、テストケースの除外が開発者が受け入れ可能なマージ結果の増減に影響を与えるのかどうかに関する評価実験を行う。 GitHubのプルリクエストに基づき収集したマージ競合の履歴から競合解決パターンを抽出する。同時に、変更前後のソースコードを解析することで振る舞い競合を検出するツールの構築に取り組み、プルリクエストを伴わないコミットからもマージ競合を自動的に収集し、競合解決パターンとして抽出する。このように抽出した競合解決パターンを導入することの有効性を示すために、パターンに基づく自動プログラム修正システムを構築し、評価実験を行う。評価実験の実施においては、十分な数の振る舞い競合の履歴が収集できなかった場合に備えて、振る舞い競合を強制的に生み出すコード変換の戦略を確立し、振る舞い競合のデータセットの構築にも取り組む。 今後は、自動マージシステムの構築を目指して、テストケースの探索的な除外と競合解決パターンの導入邇関するそれぞれの手法の統合を進める。また、2024年度は、完成した自動マージシステムを用いた評価実験を実施し、自動マージの適用可能性と有用性を明らかにする。さらに、研究計画に基づき、あらかじめ用意した競合解決パターンを組み込んでおくだけでなく、開発者の環境において統合解決パターンを自動マージシステムに適時登録できる仕組みを検討する。
|