• 研究課題をさがす
  • 研究者をさがす
  • KAKENの使い方
  1. 課題ページに戻る

2022 年度 実施状況報告書

独立したソフトウェア変更を促進するマージ競合の全自動解決

研究課題

研究課題/領域番号 22K11985
研究機関立命館大学

研究代表者

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

研究分担者 肥後 芳樹  大阪大学, 大学院情報科学研究科, 教授 (70452414)
研究期間 (年度) 2022-04-01 – 2025-03-31
キーワードマージ競合 / 版管理 / 自動プログラム修正 / ソフトウェア保守と進化 / ソフトウェア開発環境 / プログラム解析
研究実績の概要

バグを含むプログラムとその振る舞いを検査するテストケースを与えて、バグを取り除いたソースコードを出力する自動プログラム修正技術を応用することで、独立に変更されたプログラムのソースコードをマージする際に発生する競合を自動的に解決する仕組みを確立し、それを実現するツールを構築する。2022年度は、主に2つの研究項目を実施した。
(1)テストケースをオラクルとして用いる探索ベースの自動プログラム修正システムは、与えられたすべてのテストケースに成功するプログラムを出力するだけである。このため、可読性や信頼性の観点から開発者にとって、受け入れられない修正プログラムが出力されることが発生する。このような修正プログラムを自動マージ結果として提供しても、開発者がそのプログラムをそのまま受け入れる可能性はきわめて低い。そこで、本研究で利用する遺伝的アルゴリズムに基づく自動プログラム修正システムにおいて、開発者が受け入れ可能なプログラムがどのような状況において出力されるのかを明らかにすることを目的とした実証的研究を行った。
(2)自動マージによって出力されるプログラムの振る舞いを検査するテストケースを選択するためには、競合する変更差分がマージ対象のソースコードやテストコードに対して影響を与える範囲を把握する必要がある。従来の静的解析ツールは、オブジェクト指向プログラムのソースコードに対する依存関係解析の能力が十分でなく、影響波及範囲を正確に把握することが困難であった。そこで、メソッドをまたがるデータフロー、動的束縛を伴うメソッド呼び出し、非構造化プログラミングに対応した、Java言語のソースコード向けのツールプラットフォームを開発した。

現在までの達成度 (区分)
現在までの達成度 (区分)

2: おおむね順調に進展している

理由

2022年度の計画における研究項目は、(1)自動マージを実装したベースシステムの構築と、(2)競合する変更差分を考慮した上で除外するテストケースを推測する手法を確立することである。
研究項目(1)については、遺伝的アルゴリズムに基づく自動プログラム修正システムkGenProgを組み入れた自動マージシステムの構築を完了した。具体的には、マージ対象のソースコードに対して、競合が発生するメソッドを特定し、競合に関係する部分だけを修正対象とするようにkGenProgを改造し、マージに特化したシステムとして完成させた。また、研究項目(2)の実現に向けて、オラクルとして用いるテストケースをクラス単位ではなくメソッド単位で指定できるようにkGenProgを改造した。
研究項目(1)と(2)においてソースコードを扱う上で、従来の解析ツールで不十分な点を解決するために、従来から開発を続けているJava言語のソースコード向けの解析ツールJxPlatformの改良を行った。改良ツール(第3版)については、GitHuBで広く一般に公開した。
このように、2022年度は、ベースシステムの改善や解析ツールの改良に力を入れた。また、当初は予定していなかった、自動プログラム修正ツールの効率的な利用に関する検討を新たに実施した。その一方で、除外するテストケースを推測する手法に関する理論的な側面からの検討が不十分となった。計画の一部に不十分な点があるものの、自動マージシステムの完成に向けて開発は進んでおり、研究はおおむね順調に進展しているといえる。

今後の研究の推進方策

現時点では、kGenProgに対して2つの改造は別々に実施されている。自動マージシステムの構築という点から、今後はこれら2つの改造の統合が必要である。また、除外するテストケースを推測する手法について検討をすすめ、早急に仕組みを確立する。その上で、確立した仕組みをマージシステムに組み入れる。システムの構築が完了した後には、テストケースを除外することで開発者が受け入れ可能なマージ結果を出力できるのかどうかに関する評価実験を行い、自動マージの適用可能性と有用性を明らかにすることを目指す。
さらに、2023年度は、研究計画に基づき、実際に人間が行った競合解決時の編集履歴を収集し、競合解決パターンの整理に取り組む。当初の予定では、被験者を用意して、ソースコードに対する編集操作を収集することにしていた。その一方で、このように収集できる編集操作の数や種類は限定的である。そこで、GitHubに公開されているプロジェクトから振る舞い競合を発生させたコミットを特定し、マージ前後のソースコードから抽象構文木における差分を抽出する戦略も取り入れる。これらの差分を統計的に処理することで、競合解決パターンを自動抽出できる仕組みの確立に取り組む。

次年度使用額が生じた理由

国際会議がオンライン実施になったため、旅費の支出が減少した。また、論文投稿が間に合わなかったため、掲載料の支払いが不要になった。
設備備品費は、当初の予定通り、実験結果を保存する記憶媒体の購入に使用する。旅費は、研究代表者および研究分担者が発表のために国際会議および国内会議に出席するために使用する。その他の経費は、会議の参加費、論文掲載料を計上している。2022年度からの繰り越し分については、実験用PCを増強するための備品購入に使用する。

  • 研究成果

    (10件)

すべて 2023 2022 その他

すべて 学会発表 (9件) (うち国際学会 4件) 備考 (1件)

  • [学会発表] コマンドの編集距離に基づくDockerfileにおける類似記述の検索2023

    • 著者名/発表者名
      中村 碧海,丸山 勝久
    • 学会等名
      電子情報通信学会 知能ソフトウェア工学研究会
  • [学会発表] プログラム構造が自動生成テストの網羅率に与える影響の調査2023

    • 著者名/発表者名
      渡邉凌雅, 肥後芳樹, 楠本真二
    • 学会等名
      電子情報通信学会 ソフトウェアサイエンス研究会
  • [学会発表] A Preliminary Finding on Programs Fixed by an APR Tool based on a Genetic Algorithm2022

    • 著者名/発表者名
      Kanon Harada, Katsuhisa Maruyama
    • 学会等名
      Proc. of the 29th Asia-Pacific Software Engineering Conference (APSEC 2022)
    • 国際学会
  • [学会発表] GAベースの自動プログラム修正における出力プログラムの調査2022

    • 著者名/発表者名
      原田和音,丸山勝久
    • 学会等名
      電子情報通信学会 ソフトウェアサイエンス研究会
  • [学会発表] プルリクエストのレビューを支援するツールプラットフォーム2022

    • 著者名/発表者名
      トウ ハクブン,丸山勝久
    • 学会等名
      電子情報通信学会 ソフトウェアサイエンス研究会
  • [学会発表] Classification of Changes Based on API2022

    • 著者名/発表者名
      Masashi Iriyama, Yoshiki Higo, and Shinji Kusumoto
    • 学会等名
      Proc. of the 23rd International Conference on Product-Focused Software Process Improvement (PROFES2022)
    • 国際学会
  • [学会発表] Are NLP Metrics Suitable for Evaluating Generated Code2022

    • 著者名/発表者名
      Riku Takaichi, Yoshiki Higo, Shinsuke Matsumoto, Shinji Kusumoto, Toshiyuki Kurabayashi, Hiroyuki Kirinuki, and Haruto Tanno
    • 学会等名
      Proc. of the 23rd International Conference on Product-Focused Software Process Improvement (PROFES2022)
    • 国際学会
  • [学会発表] Improving Weighted-SBFL by Blocking Spectrum2022

    • 著者名/発表者名
      Haruka Yoshikoka, Yoshiki Higo, and Shinji Kusumoto
    • 学会等名
      Proc. of the 22nd IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM2022)
    • 国際学会
  • [学会発表] 欠陥限局および自動プログラム修正のための自動テスト生成と実行経路を用いたテスト選択2022

    • 著者名/発表者名
      入山優, 肥後芳樹, 楠本真二
    • 学会等名
      情報処理学会 ソフトウェアエンジニアリングシンポジウム
  • [備考] JxPlatform3 (JxPlatform v3)

    • URL

      https://github.com/katsuhisamaruyama/jxplatform3

URL: 

公開日: 2023-12-25  

サービス概要 検索マニュアル よくある質問 お知らせ 利用規程 科研費による研究の帰属

Powered by NII kakenhi