Helping LLMs Improve Code Generation Using Feedback from Testing and Static Analysis

要約

大規模言語モデル (LLM) は、人工知能の分野で最も有望な開発の 1 つであり、ソフトウェア エンジニアリング コミュニティは、ソフトウェア開発ライフサイクルにおける LLM の潜在的な役割にすぐに気づきました。
開発者は日常的に LLM にコード スニペットの生成を依頼し、生産性を向上させますが、所有権、プライバシー、正確性、セキュリティの問題が発生する可能性もあります。
これまでの研究では、主流の商用 LLM によって生成されたコードが、脆弱性、バグ、コードの臭いを含んでおり、安全ではないことが多いことを強調しました。
このペーパーでは、テストと静的分析を活用して、汎用のオープンソース LLM によって生成されたコードの品質を評価し、自己改善をガイドするフレームワークを紹介します。
まず、LLM に C コードを生成して、多くのプログラミング タスクを解決するように依頼します。
次に、グラウンド トゥルース テストを使用して、生成されたコードの(不)正しさを評価し、静的分析ツールを使用して潜在的な安全性の脆弱性を検出します。
次に、モデルにエラーと脆弱性の検出を依頼することで、生成されたコードを評価するモデルの機能を評価します。
最後に、生成されたコードを修正するモデルの機能をテストし、静的分析と不正確さの評価フェーズ中に生成されたレポートをフィードバックとして提供します。
私たちの結果は、モデルが誤ったコードを生成することが多く、生成されたコードには安全性の問題が含まれる可能性があることを示しています。
さらに、どちらの問題も検出する能力が非常に低くなります。
良い面としては、失敗したテストや潜在的な脆弱性に関する情報が提供された場合に、欠陥のあるコードを修正する実質的な能力が確認されており、LLM ベースのコード生成ツールの安全性を向上させるための有望な手段が示されています。

要約(オリジナル)

Large Language Models (LLMs) are one of the most promising developments in the field of artificial intelligence, and the software engineering community has readily noticed their potential role in the software development life-cycle. Developers routinely ask LLMs to generate code snippets, increasing productivity but also potentially introducing ownership, privacy, correctness, and security issues. Previous work highlighted how code generated by mainstream commercial LLMs is often not safe, containing vulnerabilities, bugs, and code smells. In this paper, we present a framework that leverages testing and static analysis to assess the quality, and guide the self-improvement, of code generated by general-purpose, open-source LLMs. First, we ask LLMs to generate C code to solve a number of programming tasks. Then we employ ground-truth tests to assess the (in)correctness of the generated code, and a static analysis tool to detect potential safety vulnerabilities. Next, we assess the models ability to evaluate the generated code, by asking them to detect errors and vulnerabilities. Finally, we test the models ability to fix the generated code, providing the reports produced during the static analysis and incorrectness evaluation phases as feedback. Our results show that models often produce incorrect code, and that the generated code can include safety issues. Moreover, they perform very poorly at detecting either issue. On the positive side, we observe a substantial ability to fix flawed code when provided with information about failed tests or potential vulnerabilities, indicating a promising avenue for improving the safety of LLM-based code generation tools.

arxiv情報

著者 Greta Dolcetti,Vincenzo Arceri,Eleonora Iotti,Sergio Maffeis,Agostino Cortesi,Enea Zaffanella
発行日 2025-01-07 15:30:56+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

カテゴリー: cs.AI, cs.SE パーマリンク