論文の概要: PyTy: Repairing Static Type Errors in Python
- arxiv url: http://arxiv.org/abs/2401.06619v1
- Date: Fri, 12 Jan 2024 15:08:56 GMT
- ステータス: 処理完了
- システム内更新日: 2024-01-15 19:08:32.947758
- Title: PyTy: Repairing Static Type Errors in Python
- Title(参考訳): PyTy: Pythonの静的型エラーの修正
- Authors: Yiu Wai Chow, Luca Di Grazia, Michael Pradel
- Abstract要約: 本稿では,Python の静的型エラーを対象とした自動プログラム修復手法 PyTy を提案する。
私たちは、PyTyDefectsという名前の176のGitHubリポジトリから、2,766のエラー修正ペアのデータセットを作成します。
我々の評価によると、PyTyは10の頻繁な型エラーに対して修正を提供し、実世界のエラー281件のうち85.4%に対処できた。
- 参考スコア(独自算出の注目度): 19.74043303068795
- License: http://arxiv.org/licenses/nonexclusive-distrib/1.0/
- Abstract: Gradual typing enables developers to annotate types of their own choosing,
offering a flexible middle ground between no type annotations and a fully
statically typed language. As more and more code bases get type-annotated,
static type checkers detect an increasingly large number of type errors.
Unfortunately, fixing these errors requires manual effort, hampering the
adoption of gradual typing in practice. This paper presents PyTy, an automated
program repair approach targeted at statically detectable type errors in
Python. The problem of repairing type errors deserves specific attention
because it exposes particular repair patterns, offers a warning message with
hints about where and how to apply a fix, and because gradual type checking
serves as an automatic way to validate fixes. We addresses this problem through
three contributions: (i) an empirical study that investigates how developers
fix Python type errors, showing a diverse set of fixing strategies with some
recurring patterns; (ii) an approach to automatically extract type error fixes,
which enables us to create a dataset of 2,766 error-fix pairs from 176 GitHub
repositories, named PyTyDefects; (iii) the first learning-based repair
technique for fixing type errors in Python. Motivated by the relative data
scarcity of the problem, the neural model at the core of PyTy is trained via
cross-lingual transfer learning. Our evaluation shows that PyTy offers fixes
for ten frequent categories of type errors, successfully addressing 85.4% of
281 real-world errors. This effectiveness outperforms state-of-the-art large
language models asked to repair type errors (by 2.1x) and complements a
previous technique aimed at type errors that manifest at runtime. Finally, 20
out of 30 pull requests with PyTy-suggested fixes have been merged by
developers, showing the usefulness of PyTy in practice.
- Abstract(参考訳): グラデーショナル型付けにより、開発者は自身の選択した型に注釈を付けることができ、型アノテーションと完全に静的な型付け言語の間に柔軟な中間層を提供する。
より多くのコードベースに型アノテーションが加えられるにつれて、静的型チェッカーはますます多くの型エラーを検出する。
残念ながら、これらのエラーを修正するには手作業が必要です。
本稿では,Python の静的検出可能な型エラーを対象とした自動プログラム修復手法 PyTy を提案する。
型エラーを修復する問題は、特定の修復パターンを公開し、修正の場所と適用方法に関するヒントと、段階的な型チェックが修正を検証する自動的な方法として機能する警告メッセージを提供するため、特に注意に値する。
3つの貢献を通してこの問題に対処します
(i)pythonの型エラーの修正方法を調査し、繰り返し発生するパターンで様々な修正戦略を示す実証的研究。
(ii) 型エラーフィックスを自動的に抽出するアプローチで、pytydefectsという名前の176のgithubリポジトリから2,766のエラーフィックスペアのデータセットを作成することができる。
(iii)Pythonの型エラーを修正するための最初の学習ベースの修復テクニック。
問題の相対的なデータ不足により、PyTyのコアにあるニューラルネットワークは、言語間移動学習を通じて訓練される。
我々の評価によると、PyTyは10の頻繁な型エラーに対して修正を提供し、281の現実世界エラーの85.4%に対処できた。
この効果は、(2.1倍の)型エラーの修正を求める最先端の大規模言語モデルよりも優れており、実行時に現れる型エラーを対象とする以前のテクニックを補完するものである。
最後に、PyTy推奨修正による30のプルリクエストのうち20が開発者によってマージされ、実際にPyTyの有用性が示されている。
関連論文リスト
- LecPrompt: A Prompt-based Approach for Logical Error Correction with CodeBERT [28.711745671275477]
LecPromptは論理的エラーをローカライズし、修復するためのプロンプトベースのアプローチである。
CodeBERTは、コードに基づいてトレーニングされたトランスフォーマーベースの大規模言語モデルである。
Pythonでは、LecPromptが注目すべき74.58%のトップ-1トークンレベルの修復精度を達成した。
Javaでは、LecPromptは69.23%のトップ-1トークンレベルの修復精度を提供する。
論文 参考訳(メタデータ) (2024-10-10T01:56:04Z) - A Novel Approach for Automatic Program Repair using Round-Trip
Translation with Large Language Models [50.86686630756207]
研究によると、ある文の文法的誤りは、それを他の言語に翻訳し、その語を返せば修正できる。
現在の自動プログラム修復(APR)生成モデルは、ソースコードで事前訓練され、修正のために微調整されている。
本稿では,あるプログラミング言語から別のプログラミング言語,あるいは自然言語へのコード変換,そして,その逆といった,微調整ステップをバイパスし,ラウンド・トリップ変換(RTT)を用いる手法を提案する。
論文 参考訳(メタデータ) (2024-01-15T22:36:31Z) - Generative Type Inference for Python [62.01560866916557]
本稿では静的解析から静的ドメイン知識を取り入れた数ショットの生成型推論手法であるTypeGenを紹介する。
TypeGenは、静的解析の型推論ステップを、型依存グラフ(TDG)に基づいたプロンプトに変換することで、COTプロンプトを生成する。
実験の結果、TypeGenは引数型予測では10.0%、Top-1 Exact Matchでは22.5%で最高のベースラインであるType4Pyを上回っている。
論文 参考訳(メタデータ) (2023-07-18T11:40:31Z) - Domain Knowledge Matters: Improving Prompts with Fix Templates for
Repairing Python Type Errors [41.87781274165405]
Pythonの型エラーを自動的に修復するためのルールベースのアプローチがある。
アプローチは正確なパッチを生成することができるが、ドメインの専門家がパッチ合成ルールを設計する必要がある。
本稿では,Pythonの型エラーの修正に修正テンプレートを組み込んだ新しいプロンプトベースのアプローチであるTypeFixを提案する。
論文 参考訳(メタデータ) (2023-06-02T09:42:16Z) - TypeT5: Seq2seq Type Inference using Static Analysis [51.153089609654174]
本稿では,型予測をコード入力タスクとして扱う新しい型推論手法を提案する。
本手法では静的解析を用いて,型シグネチャがモデルによって予測されるコード要素毎に動的コンテキストを構築する。
また,モデルの入力コンテキストに事前の型予測を組み込んだ反復復号方式を提案する。
論文 参考訳(メタデータ) (2023-03-16T23:48:00Z) - Towards Fine-Grained Information: Identifying the Type and Location of
Translation Errors [80.22825549235556]
既存のアプローチでは、エラーの位置と型を同期的に考慮することはできない。
我々はtextbf の追加と textbfomission エラーを予測するために FG-TED モデルを構築した。
実験により,本モデルではエラータイプと位置の同時同定が可能であり,最先端の結果が得られた。
論文 参考訳(メタデータ) (2023-02-17T16:20:33Z) - Repairing Bugs in Python Assignments Using Large Language Models [9.973714032271708]
本稿では,プログラム代入のためのAPRシステムを構築するために,コード上で訓練された大規模言語モデルを提案する。
本システムでは,複数モーダルプロンプト,反復クエリ,テストケースベースの数ショット選択,プログラムチャンキングを組み合わせることで,構文的および意味的誤りを解消することができる。
我々は,286の実際の学生プログラム上でMMAPRを評価し,最新のPython構文修復エンジン,BIFI,最新のPython意味修復エンジンを組み合わせたベースラインであるRefactoryと比較した。
論文 参考訳(メタデータ) (2022-09-29T15:41:17Z) - Is this Change the Answer to that Problem? Correlating Descriptions of
Bug and Code Changes for Evaluating Patch Correctness [8.606215760860362]
パッチの正当性評価を質問回答問題に変換する。
我々は、バグレポートと生成されたパッチの自然言語記述を入力として検討する。
実験により、Quatrainはパッチの正確性を予測するために0.886のAUCを達成できることが示された。
論文 参考訳(メタデータ) (2022-08-08T13:32:58Z) - Identifying non-natural language artifacts in bug reports [1.464410818828473]
我々は,Pythonの行レベルにおいて,コンテンツを自然言語とアーティファクトに分類する機械学習ベースのアプローチを提案する。
GitHubのイシュートラッカからのデータを、自動トレーニングセット生成にどのように使用できるかを示します。
我々のモデルは手動でアノテートした検証セットに対して0.95ROC-AUCと0.93F1でスコアし、10k行を0.72秒で分類する。
論文 参考訳(メタデータ) (2021-10-04T11:33:51Z) - Break-It-Fix-It: Unsupervised Learning for Program Repair [90.55497679266442]
我々は2つの重要なアイデアを持つ新しいトレーニング手法であるBreak-It-Fix-It (BIFI)を提案する。
批判者は、実際の悪い入力でフィクスダーの出力をチェックし、トレーニングデータに良い(固定された)出力を追加する。
これらのアイデアに基づいて、よりペア化されたデータを生成するために、ブレーカとフィクスチャを同時に使用しながら、繰り返し更新する。
BIFIは既存のメソッドより優れており、GitHub-Pythonで90.5%、DeepFixで71.7%の修正精度がある。
論文 参考訳(メタデータ) (2021-06-11T20:31:04Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。