• Search Research Projects
  • Search Researchers
  • How to Use
  1. Back to previous page

Fully Automated Resolution of Merge Conflicts to Promote Individual Software Changes

Research Project

Project/Area Number 22K11985
Research Category

Grant-in-Aid for Scientific Research (C)

Allocation TypeMulti-year Fund
Section一般
Review Section Basic Section 60050:Software-related
Research InstitutionRitsumeikan University

Principal Investigator

丸山 勝久  立命館大学, 情報理工学部, 教授 (30330012)

Co-Investigator(Kenkyū-buntansha) 肥後 芳樹  大阪大学, 大学院情報科学研究科, 教授 (70452414)
Project Period (FY) 2022-04-01 – 2025-03-31
Project Status Granted (Fiscal Year 2023)
Budget Amount *help
¥4,290,000 (Direct Cost: ¥3,300,000、Indirect Cost: ¥990,000)
Fiscal Year 2024: ¥1,430,000 (Direct Cost: ¥1,100,000、Indirect Cost: ¥330,000)
Fiscal Year 2023: ¥1,430,000 (Direct Cost: ¥1,100,000、Indirect Cost: ¥330,000)
Fiscal Year 2022: ¥1,430,000 (Direct Cost: ¥1,100,000、Indirect Cost: ¥330,000)
Keywordsマージ競合 / 版管理 / 自動プログラム修正 / ソフトウェア保守と進化 / ソフトウェア開発環境 / プログラム解析 / 並行開発
Outline of Research at the Start

本研究の目的は、自動プログラム修正技術を応用することで、人間にとって面倒な振舞い競合の解決を機械によって自動的に実行できることを立証し、それに基づく競合解決システムを構築することである。そのために、テストケースの一部を探索的に除外しながら修正を試みる手法を確立する。さらに、実際に人間が行った競合解決の編集履歴を活用することで、競合解決の成功率の向上と時間短縮を達成する。

Outline of Annual Research Achievements

バグを含むプログラムと正しい振る舞いを検査するテストケースを与えて、バグを取り除いたソースコードを出力する自動プログラム修正技術を応用することで、独立に変更されたプログラムのソースコードをマージする際に発生する競合を自動的に解決する仕組みを確立し、それを実現するツールを構築する。2023年度は、主に2つの研究項目を実施した。
(1)テストケースをオラクルとして用いる探索ベースの自動プログラム修正システムは、与えられたすべてのテストケースの実行に成功するプログラムを出力するだけである。このため、可読性の観点から開発者にとって、受け入れられない修正プログラムが出力されることがある。このような修正プログラムを自動マージの結果として提供しても、開発者がそのプログラムをそのまま受け入れる可能性はきわめて低い。そこで、本研究で利用する遺伝的アルゴリズムに基づく自動プログラム修正システムkGenProgにおいて、開発者が受け入れられないプログラムがどのような状況で出力されるのかを明らかにすることを目的とした実証的研究を行った。
(2)実際に人間が行ったマージ競合解決のためのコード変換を収集するために、GitHubのプルリクエストに含まれる情報とコード差分の関係を調査する支援ツールを構築した。このツールは、プルリクエストにおけるコメント記述からソースコード要素への参照を抽出し、コメント記述をソースコードの意味的な差分と関連付けするのが特徴である。このツールを用いることで、振る舞い競合が発生した場面、さらに競合が解決・未解決な場面におけるソースコードの意味的差分を自動的に収集できるようになる。

Current Status of Research Progress
Current Status of Research Progress

2: Research has progressed on the whole more than it was originally planned.

Reason

2023年度の計画における研究項目は、(1)テストケースを探索的に除外できるようにベースシステムを拡張と、(2)人間が行ったマージ競合解決時の編集履歴を収集し、競合解決パターンを抽出することである。
研究項目(1)については、テストケースをメソッド単位で除外できるようにkGenProgの改造を継続した。その上で、すべてのテストケースの実行に成功することだけを自動マージの目的としてしまうと、マージに成功するテストメソッドの組み合わせに対して、大量のマージ結果が出力されてしまう。このような状況では、開発者にとって受け入れられないプログラムをマージ結果から自動的に取り除くべきである。本研究では、開発者にとって受け入れられないプログラムの記述パターンを定義した。このパターンを適用することで、開発者に受け入れられる可能性が高いマージ結果だけを出力するテストメソッドの組み合わせを推測できる可能性が高まった。このように、テストメソッドを除外する際の戦略の一つを新たに見いだした成果が得られた。一方で、テストメソッドを除外する具体的な手法については検討中である。
研究項目(2)の実現に向けて、GitHubのプルリクエストに着目し、過去において発生したマージ競合、競合解決の可否、競合に関係するソースコードの意味的差分を収集するツールの構築に取り組んだ。ツールを用いることで、マージ競合に関する情報を自動的かつ効率的に収集することに成功した。その一方で、収集した情報を競合解決パターンとして整理するまでに至らなかった。
当初計画の一部に未達成な部分があるものの、自動マージシステムの完成に向けて理論的な検討は進んでおり、研究はおおむね順調に進展しているといえる。

Strategy for Future Research Activity

開発者に受け入れられる可能性が高いマージ結果だけを出力するように、自動プログラム修正システムkGenProgの改造を行う。その上で、振る舞い競合の解決が成功するように、テストケースを除外する手法について検討をすすめ、早急に仕組みを確立する。この仕組みを組み込んだ自動マージシステムを用いることで、テストケースを除外しても開発者が受け入れ可能なマージ結果を出力できるのかどうか、テストケースの除外が開発者が受け入れ可能なマージ結果の増減に影響を与えるのかどうかに関する評価実験を行う。
GitHubのプルリクエストに基づき収集したマージ競合の履歴から競合解決パターンを抽出する。同時に、変更前後のソースコードを解析することで振る舞い競合を検出するツールの構築に取り組み、プルリクエストを伴わないコミットからもマージ競合を自動的に収集し、競合解決パターンとして抽出する。このように抽出した競合解決パターンを導入することの有効性を示すために、パターンに基づく自動プログラム修正システムを構築し、評価実験を行う。評価実験の実施においては、十分な数の振る舞い競合の履歴が収集できなかった場合に備えて、振る舞い競合を強制的に生み出すコード変換の戦略を確立し、振る舞い競合のデータセットの構築にも取り組む。
今後は、自動マージシステムの構築を目指して、テストケースの探索的な除外と競合解決パターンの導入邇関するそれぞれの手法の統合を進める。また、2024年度は、完成した自動マージシステムを用いた評価実験を実施し、自動マージの適用可能性と有用性を明らかにする。さらに、研究計画に基づき、あらかじめ用意した競合解決パターンを組み込んでおくだけでなく、開発者の環境において統合解決パターンを自動マージシステムに適時登録できる仕組みを検討する。

Report

(2 results)
  • 2023 Research-status Report
  • 2022 Research-status Report
  • Research Products

    (19 results)

All 2024 2023 2022 Other

All Presentation (18 results) (of which Int'l Joint Research: 8 results) Remarks (1 results)

  • [Presentation] Towards Efficient Program Repair with APR Tools Based on Genetic Algorithms2024

    • Author(s)
      Kanon Harada, Katsuhisa Maruyama
    • Organizer
      Proc. of the 31th of the International Conference on Software Analysis, Evolution and Reengineering (SANER2024)
    • Related Report
      2023 Research-status Report
    • Int'l Joint Research
  • [Presentation] 軽量的な借用検査によるJavaプログラムの安全性解析2024

    • Author(s)
      西見 元希,丸山 勝久
    • Organizer
      電子情報通信学会 ソフトウェアサイエンス研究会
    • Related Report
      2023 Research-status Report
  • [Presentation] Autorepairability: A New Software Quality Characteristic2024

    • Author(s)
      Pongpop Lapvikai, Yoshiki Higo, Chaiyong Ragkhitwetsagul, Morakot Choetkiertikul
    • Organizer
      In Proc. of the 31th of the International Conference on Software Analysis, Evolution and Reengineering (SANER2024
    • Related Report
      2023 Research-status Report
    • Int'l Joint Research
  • [Presentation] 機械学習を用いたリファクタリング適用時のバグ混入判定2023

    • Author(s)
      田畑 善行,丸山 勝久
    • Organizer
      情報処理学会 ソフトウェア工学研究会
    • Related Report
      2023 Research-status Report
  • [Presentation] Impacts of Program Structures on Code Coverage of Generated Test Suites2023

    • Author(s)
      Ryoga Watanabe, Yoshiki Higo, Shinji Kusumoto
    • Organizer
      In Proc. of the 24th International Conference on Product-Focused Software Process Improvement (PROFES2023)
    • Related Report
      2023 Research-status Report
    • Int'l Joint Research
  • [Presentation] Do Exceptional Behavior Tests Matter on Spectrum-Based Fault Localization?2023

    • Author(s)
      Haruka Yoshioka, Yoshiki Higo, Shinsuke Matsumoto, Shinji Kusumoto, Shinji Itoh, Phan Thi Thanh Huyen
    • Organizer
      In Proc. of the 24th International Conference on Product-Focused Software Process Improvement (PROFES2023)
    • Related Report
      2023 Research-status Report
    • Int'l Joint Research
  • [Presentation] 自動テスト生成技術を利用した機能等価メソッドデータセットの構築2023

    • Author(s)
      肥後芳樹
    • Organizer
      情報処理学会 ソフトウェアエンジニアリングシンポジウム2023
    • Related Report
      2023 Research-status Report
  • [Presentation] 例外処理を検査するテストが実行経路に基づく欠陥限局手法に与える影響の調査2023

    • Author(s)
      吉岡遼, 肥後芳樹, 松本真佑, 楠本真二, 伊藤信治, Phan Thi Thanh Huyen
    • Organizer
      情報処理学会 ソフトウェアエンジニアリングシンポジウム2023
    • Related Report
      2023 Research-status Report
  • [Presentation] 行単位の依存関係を用いたテスト選択手法の提案2023

    • Author(s)
      藤原勇真, 神田哲也, 嶋利一真, 肥後芳樹
    • Organizer
      情報処理学会 ソフトウェアエンジニアリングシンポジウム2023
    • Related Report
      2023 Research-status Report
  • [Presentation] コマンドの編集距離に基づくDockerfileにおける類似記述の検索2023

    • Author(s)
      中村 碧海,丸山 勝久
    • Organizer
      電子情報通信学会 知能ソフトウェア工学研究会
    • Related Report
      2022 Research-status Report
  • [Presentation] プログラム構造が自動生成テストの網羅率に与える影響の調査2023

    • Author(s)
      渡邉凌雅, 肥後芳樹, 楠本真二
    • Organizer
      電子情報通信学会 ソフトウェアサイエンス研究会
    • Related Report
      2022 Research-status Report
  • [Presentation] A Preliminary Finding on Programs Fixed by an APR Tool based on a Genetic Algorithm2022

    • Author(s)
      Kanon Harada, Katsuhisa Maruyama
    • Organizer
      Proc. of the 29th Asia-Pacific Software Engineering Conference (APSEC 2022)
    • Related Report
      2022 Research-status Report
    • Int'l Joint Research
  • [Presentation] GAベースの自動プログラム修正における出力プログラムの調査2022

    • Author(s)
      原田和音,丸山勝久
    • Organizer
      電子情報通信学会 ソフトウェアサイエンス研究会
    • Related Report
      2022 Research-status Report
  • [Presentation] プルリクエストのレビューを支援するツールプラットフォーム2022

    • Author(s)
      トウ ハクブン,丸山勝久
    • Organizer
      電子情報通信学会 ソフトウェアサイエンス研究会
    • Related Report
      2022 Research-status Report
  • [Presentation] Classification of Changes Based on API2022

    • Author(s)
      Masashi Iriyama, Yoshiki Higo, and Shinji Kusumoto
    • Organizer
      Proc. of the 23rd International Conference on Product-Focused Software Process Improvement (PROFES2022)
    • Related Report
      2022 Research-status Report
    • Int'l Joint Research
  • [Presentation] Are NLP Metrics Suitable for Evaluating Generated Code2022

    • Author(s)
      Riku Takaichi, Yoshiki Higo, Shinsuke Matsumoto, Shinji Kusumoto, Toshiyuki Kurabayashi, Hiroyuki Kirinuki, and Haruto Tanno
    • Organizer
      Proc. of the 23rd International Conference on Product-Focused Software Process Improvement (PROFES2022)
    • Related Report
      2022 Research-status Report
    • Int'l Joint Research
  • [Presentation] Improving Weighted-SBFL by Blocking Spectrum2022

    • Author(s)
      Haruka Yoshikoka, Yoshiki Higo, and Shinji Kusumoto
    • Organizer
      Proc. of the 22nd IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM2022)
    • Related Report
      2022 Research-status Report
    • Int'l Joint Research
  • [Presentation] 欠陥限局および自動プログラム修正のための自動テスト生成と実行経路を用いたテスト選択2022

    • Author(s)
      入山優, 肥後芳樹, 楠本真二
    • Organizer
      情報処理学会 ソフトウェアエンジニアリングシンポジウム
    • Related Report
      2022 Research-status Report
  • [Remarks] JxPlatform3 (JxPlatform v3)

    • URL

      https://github.com/katsuhisamaruyama/jxplatform3

    • Related Report
      2022 Research-status Report

URL: 

Published: 2022-04-19   Modified: 2024-12-25  

Information User Guide FAQ News Terms of Use Attribution of KAKENHI

Powered by NII kakenhi