Skip to main content
QUICK REVIEW

[論文レビュー] Fixing Rust Compilation Errors using LLMs

Pantazis Deligiannis, Akash Lal|arXiv (Cornell University)|Aug 9, 2023
Software Engineering Research被引用数 4
ひとこと要約

本稿では、高度なプロンプト技術と反復的LLM精錬を用いてRustのコンパイルエラーを自動で修正するLLMベースのツール、RustAssistantを提示する。実世界の公開リポジトリからの本物のエラーにおいて最大74%の正確性を達成し、強力な安全保証を備えた複雑なシステムプログラミングのデバッグ問題に対してLLMの有効性を示している。

ABSTRACT

The Rust programming language, with its safety guarantees, has established itself as a viable choice for low-level systems programming language over the traditional, unsafe alternatives like C/C++. These guarantees come from a strong ownership-based type system, as well as primitive support for features like closures, pattern matching, etc., that make the code more concise and amenable to reasoning. These unique Rust features also pose a steep learning curve for programmers. This paper presents a tool called RustAssistant that leverages the emergent capabilities of Large Language Models (LLMs) to automatically suggest fixes for Rust compilation errors. RustAssistant uses a careful combination of prompting techniques as well as iteration with an LLM to deliver high accuracy of fixes. RustAssistant is able to achieve an impressive peak accuracy of roughly 74% on real-world compilation errors in popular open-source Rust repositories. We plan to release our dataset of Rust compilation errors to enable further research.

研究の動機と目的

  • Rustの所有権と借用システムの高い習得難易度が初心者に混乱をもたらすコンパイルエラーを解消すること。
  • コンパイルエラーの修正案を自動化することで、Rustプログラムのデバッグに要する時間と認知的負荷を低減すること。
  • LLMが複雑なRustの型システムおよび借用チェッカーのエラーを理解し、解決できるかどうかを評価すること。
  • 今後の研究のためのプログラム修復およびLLM支援デバッグ分野に貢献する、実世界のRustコンパイルエラーのデータセットを構築・公開すること。

提案手法

  • RustAssistantは、LLMがコードを段階的に理解・修正できるように導くために、カスタムの変更履歴ベースのプロンプトフォーマットを採用している。
  • 反復的プロンプト技術を適用し、LLMが修正案を生成し、システムが複数ラウンドにわたり検証・精錬することで改善を図っている。
  • ツールはRustコンパイラーと統合されており、コンパイルエラーを検出すると、LLMを用いてパッチの提案と適用を実行する。
  • GPT-3.5およびGPT-4モデルを活用しており、Rust独自の型システムとエラー意味論に特化したプロンプト工学が適用されている。
  • 修正の妥当性は、修正されたコードを再コンパイルすることで検証している。
  • 本研究の評価のために、crates.io上の人気クラフトから182件のGitHubコミットを収集し、実際のコンパイルエラーのデータセットを構築した。

実験結果

リサーチクエスチョン

  • RQ1LLMは、所有権や借用にかかわる複雑なRustコンパイルエラーを効果的に理解・修正できるか?
  • RQ2プロンプト工学および反復的精錬は、RustエラーのLLM生成修正の正確性にどのように影響するか?
  • RQ3GPT-3.5とGPT-4の間には、実世界のRustコンパイルエラーの修正において、性能に差があるか?
  • RQ4LLMベースのツールは、コンパイルエラーにとどまらず、他の種類のRust開発課題に対しても一般化できるか?

主な発見

  • RustAssistantは、人気Rustクラフトから抽出したGitHubコミットにおける実世界のコンパイルエラーで、ピーク73.63%の正確性を達成した。
  • Stack Overflowのプログラムでは、GPT-4を用いることで72%のコンパイルエラーが修正された。
  • 公式Rustエラーコード506件のうち270件をカバーするマイクロベンチマークでは、GPT-4が92.59%の修正率を達成した。
  • GPT-4は、すべての評価設定においてGPT-3.5を顕著に上回り、モデル規模と推論能力の影響を裏付けた。
  • アブレーションスタディの結果、反復的プロンプト技術とカスタムプロンプト工学が、高い修正正確性を達成するために不可欠であることが示された。
  • 著者らは、人気Rustリポジトリから抽出した182件の実世界のコンパイルエラーのデータセットを公開し、今後の研究を支援した。

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

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

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

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