Frustrated with Code Quality Issues? LLMs can Help!

要約

ソフトウェア プロジェクトが進行するにつれて、コードの品質はソフトウェアの信頼性、保守性、セキュリティに影響を与えるため、最も重要視されます。
このため、開発者のワークフローでは静的分析ツールが使用され、コード品質の問題にフラグが立てられます。
ただし、開発者は、ツールの結果に基づいてコードの品質を向上させるためにコードを修正するために余分な労力を費やす必要があります。
この研究では、開発者がコード品質の問題を解決するためにコードを修正するのを支援するために、(命令に従う) 大規模言語モデル (LLM) の使用を調査します。
私たちは、提案者とランカーで構成されるデュオとして組織された 1 対の LLM を使用して設計されたツール CORE (COde REvisions の略) を紹介します。
静的分析ツールのプロバイダーはツールの警告を軽減する方法を推奨し、開発者はそれに従ってコードを修正します。
CORE の \emph{proposer LLM} は、同じ推奨事項のセットを取得し、それらを適用してコード リビジョン候補を生成します。
静的品質チェックに合格した候補は保持されます。
ただし、LLM は、静的解析では検出されない、意図しない微妙な機能変更を導入する可能性があります。
\emph{ranker LLM} は、開発者が強制する受け入れ基準に厳密に従うルーブリックを使用して、提案者によって加えられた変更を評価します。
CORE は、開発者に提示する前に、ランカー LLM によって割り当てられたスコアを使用して候補リビジョンをランク付けします。
CORE は、ツールと人間のレビュー担当者の両方による精査に合格できるように、Python ファイルの 59.2% (52 の品質チェック全体) を改訂することができました。
ランカー LLM は、このような場合に誤検知を 25.8% 削減できます。
CORE が作成したリビジョンでは、Java ファイルの 76.8% (10 回の品質チェック中) が静的解析ツールに合格しました。これは、特殊なプログラム修復ツールの 78.3% に匹敵し、エンジニアリングの労力は大幅に軽減されました。

要約(オリジナル)

As software projects progress, quality of code assumes paramount importance as it affects reliability, maintainability and security of software. For this reason, static analysis tools are used in developer workflows to flag code quality issues. However, developers need to spend extra efforts to revise their code to improve code quality based on the tool findings. In this work, we investigate the use of (instruction-following) large language models (LLMs) to assist developers in revising code to resolve code quality issues. We present a tool, CORE (short for COde REvisions), architected using a pair of LLMs organized as a duo comprised of a proposer and a ranker. Providers of static analysis tools recommend ways to mitigate the tool warnings and developers follow them to revise their code. The \emph{proposer LLM} of CORE takes the same set of recommendations and applies them to generate candidate code revisions. The candidates which pass the static quality checks are retained. However, the LLM may introduce subtle, unintended functionality changes which may go un-detected by the static analysis. The \emph{ranker LLM} evaluates the changes made by the proposer using a rubric that closely follows the acceptance criteria that a developer would enforce. CORE uses the scores assigned by the ranker LLM to rank the candidate revisions before presenting them to the developer. CORE could revise 59.2% Python files (across 52 quality checks) so that they pass scrutiny by both a tool and a human reviewer. The ranker LLM is able to reduce false positives by 25.8% in these cases. CORE produced revisions that passed the static analysis tool in 76.8% Java files (across 10 quality checks) comparable to 78.3% of a specialized program repair tool, with significantly much less engineering efforts.

arxiv情報

著者 Nalin Wadhwa,Jui Pradhan,Atharv Sonwane,Surya Prakash Sahu,Nagarajan Natarajan,Aditya Kanade,Suresh Parthasarathy,Sriram Rajamani
発行日 2023-09-22 15:37:07+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

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