Skip to main content
QUICK REVIEW

[論文レビュー] Domain Knowledge Matters: Improving Prompts with Fix Templates for Repairing Python Type Errors

Yun Peng, Shuzheng Gao|arXiv (Cornell University)|Jun 2, 2023
Software Engineering Research被引用数 4
ひとこと要約

本稿では、実世界のパッチから抽出したドメイン固有の修復テンプレートを統合することで、Pythonの型エラーを修復するためのコード事前学習モデルの性能を向上させる、プロンプトベースのアプローチであるTypeFixを提案する。一般化された編集パターンを用いてマスクの位置を動的に特定することで、プロンプトの有効性が向上し、BugsInPyおよびTypeBugsのベンチマークでそれぞれ26件および55件の成功した修復を達成。これは最良のベースラインを9件および14件上回り、開発者によるパッチの75%をカバーする。

ABSTRACT

Although the dynamic type system of Python facilitates the developers in writing Python programs, it also brings type errors at run-time. There exist rule-based approaches for automatically repairing Python type errors. The approaches can generate accurate patches but they require domain experts to design patch synthesis rules and suffer from low template coverage of real-world type errors. Learning-based approaches alleviate the manual efforts in designing patch synthesis rules. Among the learning-based approaches, the prompt-based approach which leverages the knowledge base of code pre-trained models via pre-defined prompts, obtains state-of-the-art performance in general program repair tasks. However, such prompts are manually defined and do not involve any specific clues for repairing Python type errors, resulting in limited effectiveness. How to automatically improve prompts with the domain knowledge for type error repair is challenging yet under-explored. In this paper, we present TypeFix, a novel prompt-based approach with fix templates incorporated for repairing Python type errors. TypeFix first mines generalized fix templates via a novel hierarchical clustering algorithm. The identified fix templates indicate the common edit patterns and contexts of existing type error fixes. TypeFix then generates code prompts for code pre-trained models by employing the generalized fix templates as domain knowledge, in which the masks are adaptively located for each type error instead of being pre-determined. Experiments on two benchmarks, including BugsInPy and TypeBugs, show that TypeFix successfully repairs 26 and 55 type errors, outperforming the best baseline approach by 9 and 14, respectively. Besides, the proposed fix template mining approach can cover 75% of developers' patches in both benchmarks, increasing the best rule-based approach PyTER by more than 30%.

研究の動機と目的

  • Pythonの型エラーを修復する際の手動で定義されたプロンプトの限界的効果を是正すること。
  • ルールベースのアプローチにおける専門家が設計したパッチ合成ルールへの依存を低減すること。
  • 実世界の型エラー修復から得たドメイン知識を統合することで、プロンプトベースのプログラム修復を向上させること。
  • 既存のルールベース手法を上回る、実世界の型エラーに対するテンプレートのカバレッジを向上させること。
  • 抽出された修復テンプレートを用いて、自動的に文脈に適応した動的プロンプトを生成する手法を開発すること。

提案手法

  • TypeFixは、実世界の型エラー修復に対して、新規の階層的クラスタリングアルゴリズムを用いて一般化された修復テンプレートを抽出する。
  • 抽出されたテンプレートは、型エラー修復における一般的な編集パターンと構文的文脈を捉えている。
  • 本手法は、修復テンプレートに基づいて、バグのあるコードにおける最適なマスク位置を動的に同定し、静的プロンプト設計に代わる。
  • これらのテンプレートをドメイン知識としてプロンプトに統合し、コード事前学習モデルの修復精度を向上させる。
  • モデルは、強化された文脈に配慮したプロンプトを用いてマスクされたトークンを予測することでパッチを生成する。
  • 本手法は、標準的な APR 評価指標を用いて、BugsInPy および TypeBugs の2つのベンチマークで評価されている。

実験結果

リサーチクエスチョン

  • RQ1実世界のパッチから抽出した修復テンプレートは、Pythonの型エラーに対するプロンプトベースのプログラム修復の性能を向上させることができるか?
  • RQ2修復テンプレートに基づく動的マスク配置戦略は、固定された事前定義プロンプトと比較して、複雑な型エラーの修復においてどのように優れているか?
  • RQ3提案された修復テンプレート抽出アプローチは、既存のルールベース手法に比べてどの程度カバレッジを向上させられるか?
  • RQ4テンプレートを用いてドメイン固有の知識を統合することで、汎用的プロンプトと比較して修復成功率が向上するか?
  • RQ5本アプローチは、実世界のPythonコードにおける多様な型エラーのパターンに対して、どの程度の頑健性を示すか?

主な発見

  • TypeFixはBugsInPyベンチマークで26件の型エラーを修復し、最良のベースラインを9件上回った。
  • TypeBugsベンチマークでは55件の成功した修復を達成し、最良のベースラインを14件上回った。
  • 修復テンプレート抽出アプローチは、両ベンチマークで開発者パッチの75%をカバーし、最良のルールベース手法であるPyTERと比較して30%以上のカバレッジ向上を達成した。
  • 動的マスク配置戦略は、静的で手動で定義されたプロンプトと比較して、修復効果が顕著に向上した。
  • ドメイン固有の修復テンプレートをプロンプトに統合することで、修復精度と一般化性能の両面で明確な性能向上が得られた。
  • 本アプローチは多様な型エラーのパターンにわたり強力な一般化性能を示しており、実世界のシナリオにおける頑健性を裏付けた。

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

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

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

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