Skip to main content
QUICK REVIEW

[論文レビュー] Revisiting ssFix for Better Program Repair

Xin Qi, Steven P. Reiss|arXiv (Cornell University)|Mar 11, 2019
Software Testing and Debugging Techniques参考文献 51被引用数 4
ひとこと要約

本稿では、コード検索および再利用戦略の見直しによりssFixを改善した、syntactic search-basedプログラム修復手法sharpFixを提案する。sharpFixはDefects4Jで36件のバグを修復し、Bugs.jar-ELIXIRにおいてssFixおよび他の4種類のAPR手法を上回り、より良いコード取得および変換手法により修復効果が顕著に向上することを示している。

ABSTRACT

A branch of automated program repair (APR) techniques look at finding and reusing existing code for bug repair. ssFix is one of such techniques that is syntactic search-based: it searches a code database for code fragments that are syntactically similar to the bug context and reuses such retrieved code fragments to produce patches. Using such a syntactic approach, ssFix is relatively lightweight and was shown to outperform many other APR techniques. In this paper, to investigate the true effectiveness of ssFix, we conducted multiple experiments to validate ssFix's built-upon assumption (i.e., to see whether it is often possible to reuse existing code for bug repair) and evaluate its code search and code reuse approaches. Our results show that while the basic idea of ssFix, i.e., reusing existing code for bug repair, is promising, the approaches ssFix uses are not the best and can be significantly improved. We proposed a new repair technique sharpFix which follows ssFix's basic idea but differs in the code search and reuse approaches used. We evaluated sharpFix and ssFix on two bug datasets: Defects4J and Bugs.jar-ELIXIR. The results confirm that sharpFix is an improvement over ssFix. For the Defects4J dataset, sharpFix successfully repaired a total of 36 bugs and outperformed many existing repair techniques in repairing more bugs. For the Bugs.jar-ELIXIR dataset, we compared sharpFix, ssFix, and four other APR techniques, and found that sharpFix has the best repair performance. In essence, the paper shows how effective a syntactic search-based approach can be and what techniques should be used for such an approach.

研究の動機と目的

  • ssFixの基本的仮定、すなわちバグ修復のためのfix ingredients(正しいコード断片)が既存コードに存在するという仮定を評価すること。
  • ssFixのコード断片の取得および再利用の有効性を、パッチ生成の観点から評価すること。
  • ssFixのコード検索および再利用メカニズムにおける限界を特定し、最適な修復パフォーマンスを阻害する要因を同定すること。
  • より洗練された検索および再利用戦略を用いてssFixの手法を改善した新しい修復手法、sharpFixの設計および評価を行うこと。
  • 構文的検索に基づく修復が、洗練された検索および変換手法と組み合わせられることで、極めて有効であることを示すこと。

提案手法

  • ssFixの改善版としてsharpFixを提案し、バグ修復に既存コード断片を再利用するという核心的なアイデアを維持する。
  • 局所プログラムコード用および外部コードリポジトリ用に分離したコード検索戦略を実装し、取得精度を向上させる。
  • コード翻訳、コンポonentマッチング(意味的整合性)、コード変更の3段階からなるパッチ生成パイプラインを採用し、各段階を精度向上のために強化する。
  • バグコンテキストに類似するコード断片を特定するために、構文的類似性測定を用い、構造的および語彙的特徴に注目する。
  • パッチ合成段階で、取得したコード断片を故障したコンテキストに適切に整合させるための改善されたマッチングヒューリスティクスを導入する。
  • パッチの正しさを保証するため、慎重な手動検証プロセスを採用し、意味を保持する変換のみを承認する。

実験結果

リサーチクエスチョン

  • RQ1fix ingredients(バグ修復に使用可能なコード断片)は、局所的または外部コードリポジトリにどの程度存在するか?
  • RQ2ssFixは、正しいパッチを生成するために、既存のコード断片をどの程度効果的に取得および再利用できるか?
  • RQ3ssFixのコード検索および再利用メカニズムにおける主な限界は何か? これにより修復効果が低下する要因は何か?
  • RQ4コード検索および再利用の見直しを施したアプローチは、ssFixと比較して、修復パフォーマンスを顕著に向上させられるか?
  • RQ5提案されたsharpFix手法は、実世界のバグデータセットにおいて、他の最先端APR手法と比較してどの程度の性能を示すか?

主な発見

  • fix ingredientsが既存コードに存在するという仮定は妥当である—バグ修復に必要なコード断片は、局所的および外部コードの両方で頻繁に見られる。
  • ssFixのコード検索および再利用メカニズムは最適でないため、fix ingredientsが存在するにもかかわらず、修復機会を逃すことがある。
  • sharpFixはDefects4Jデータセットで36件のバグを修復し、ssFixよりも14件多く修復し、他の4種類のAPR手法を上回った。
  • Bugs.jar-ELIXIRデータセットでは、sharpFixが評価されたすべての手法の中で最高の修復パフォーマンスを達成した。ssFixおよびELIXIRを含む。
  • 修復効果の向上は、検索空間や複雑さの増加によるものではなく、より鋭いコード取得およびより正確な再利用戦略によるものである。
  • バグレポート情報を利用しないにもかかわらず、sharpFixはDefects4JにおいてELIXIRを上回ったが、Bugs.jar-ELIXIRでは正しく生成されたパッチが少ないことから、こうした情報の統合によるさらなる改善の余地があることが示唆された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。