Skip to main content
QUICK REVIEW

[論文レビュー] FRANC: A Lightweight Framework for High-Quality Code Generation

Mohammed Latif Siddiq, Beatrice Casey|arXiv (Cornell University)|Jul 17, 2023
Software Engineering Research被引用数 6
ひとこと要約

FRANCは、静的フィルタリング、品質認識ランク付け、プロンプト工学を活用することで、LLMベースのコード生成におけるコード品質を向上させる軽量でモデルに依存しないフレームワークです。Javaではコンパイル可能率が9–46%向上し、Pythonでは10–43%向上し、NDCG@10が0.0763向上し、問題のあるプロンプトの80%を最小限の遅延(0.08–1.98秒)で修復します。

ABSTRACT

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.

研究の動機と目的

  • LLM生成コードにおけるセキュリティ脆弱性と低品質コードの増加という問題に対処すること。
  • 大規模言語モデルの高コストなファインチューニングの必要性を減らすために、軽量なポストプロセッシングフレームワークを導入すること。
  • モデルの再トレーニングなしで、より高品質でコンパイル可能で安全なコードを開発者が得られるようにすること。
  • 静的フィルタリング、品質スコアリング、プロンプトベースの修復を統合した、設定可能なモデルに依存しないソリューションを提供すること。
  • PythonおよびJavaの実世界のプロンプトと多様なコード生成モデルにおいて、有効性を実証すること。

提案手法

  • ヒューリスティクスを用いて非コンパイル可能なコードを除去または修復する静的フィルタを適用し、文法的正しさを向上させること。
  • Pmd、Checkstyle、Spotbugsなどの既成品の静的解析ツールを統合し、コードスモールや脆弱性を検出し、品質スコアを付与すること。
  • 複数のツールからの品質メトリクスを集約してスコア化・ランク付けする品質認識ランカーを実装すること。
  • LLMを活用したプロンプト工学により、低品質コードの修復提案を生成し、継続的な問題に焦点を当てる。
  • モデルファインチューニングなしで、フィルタリング、ランク付け、修復の段階を経る、モジュール型でモデルに依存しないパイプラインを設計すること。
  • Stack Overflowから抽出した新しい70プロンプトデータセットを活用し、実世界の適用性と耐性を評価すること。

実験結果

リサーチクエスチョン

  • RQ1ファインチューニングなしで、軽量なフレームワークがLLM生成コードのコンパイル可能率をどの程度向上できるか?
  • RQ2品質認識ランク付けシステムは、多様なモデルとプロンプトにおいて、最高品質のコードスニペットをどの程度的確に特定できるか?
  • RQ3プロンプト工学技術は、生成コードにおける継続的な品質問題を自動で修復できるか?
  • RQ4FRANCは、PythonおよびJavaという異なるプログラミング言語と、多様なコード生成モデルにおいて、どの程度のパフォーマンスを示すか?
  • RQ5リアルタイムのコード生成ワークフローに適用した際、FRANCの実行時オーバーヘッドはどの程度か?

主な発見

  • 静的フィルタにより、複数のモデルを対象に、Javaで9%~46%、Pythonで10%~43%のコンパイル可能率向上が達成された。
  • 品質認識ランカーはNDCG@10で平均0.0763の向上を達成し、人間による評価との整合性が高まったことを示した。
  • プロンプト工学技術により、問題のあるプロンプトの上位80%が効果的に修復され、繰り返し発生する品質問題の修正に有効であることが示された。
  • FRANCは低遅延を実現し、Pythonコードは平均0.08秒、Javaコードは平均1.98秒で処理可能であり、リアルタイム利用に適している。
  • FRANCは、CodeParrot、InCoder、CodeGen、PolyCoder、GPT-3.5-turboの5つのコード生成モデルおよび多様なプロンプトセットにおいて、優れた一般化性能を示した。
  • 再現性と拡張性を考慮し、新規のFRANCプロンプトデータセットを含む再現パッケージが、https://github.com/s2e-lab/FRANC で公開されている。

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

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

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

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