FRANC: A Lightweight Framework for High-Quality Code Generation

要約

近年、トランスフォーマベースの生成モデルを利用した自動ソースコード生成の利用が拡大しており、開発者の要求に応じた機能コードを生成することができます。
しかし、最近の調査により、これらの自動生成されたソース コードには脆弱性やその他の品質上の問題が含まれる可能性があることが明らかになりました。
研究者や実践者はコード生成モデルを強化しようと試みていますが、大規模な言語モデルの再トレーニングと微調整には時間とリソースが大量にかかります。
そこで、トランスフォーマーベースのコード生成モデルから派生した、より安全で高品質なソース コードを推奨するための軽量フレームワークである FRANC について説明します。
FRANC には、生成されたコードをヒューリスティックでコンパイルできるようにする静的フィルターと、品質スコアに基づいてコード スニペットを並べ替える品質を意識したランカーが含まれています。
さらに、このフレームワークは迅速なエンジニアリングを使用して、永続的な品質問題を解決します。
私たちは、5 つの Python および Java コード生成モデルと、この作業で新しく作成されたもの (SOEval) を含む 6 つのプロンプト データセットを使用してフレームワークを評価しました。
静的フィルターにより、コンパイル可能性に関して Java の提案が 9% ~ 46%、Python の提案が 10% ~ 43% 向上します。
ランキング システムの NDCG@10 スコアに対する平均改善率は 0.0763 で、修復技術によりプロンプトの最高 80% が修復されます。
Java の場合、FRANC には平均 1.98 秒かかります。
Python の場合、0.08 秒かかります。

要約(オリジナル)

In recent years, the use of automated source code generation utilizing transformer-based generative models has expanded, and these models can generate functional code according to the requirements of the developers. However, recent research revealed that these automatically generated source codes can contain vulnerabilities and other quality issues. Despite researchers’ and practitioners’ attempts to enhance code generation models, retraining and fine-tuning large language models is time-consuming and resource-intensive. Thus, we describe FRANC, a lightweight framework for recommending more secure and high-quality source code derived from transformer-based code generation models. FRANC includes a static filter to make the generated code compilable with heuristics and a quality-aware ranker to sort the code snippets based on a quality score. Moreover, the framework uses prompt engineering to fix persistent quality issues. We evaluated the framework with five Python and Java code generation models and six prompt datasets, including a newly created one in this work (SOEval). The static filter improves 9% to 46% Java suggestions and 10% to 43% Python suggestions regarding compilability. The average improvement over the NDCG@10 score for the ranking system is 0.0763, and the repairing techniques repair the highest 80% of prompts. FRANC takes, on average, 1.98 seconds for Java; for Python, it takes 0.08 seconds.

arxiv情報

著者 Mohammed Latif Siddiq,Beatrice Casey,Joanna C. S. Santos
発行日 2024-08-28 14:47:24+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

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