ChatPaper.aiChatPaper

Een statische evaluatie van code-aanvulling door grote taalmodellen

A Static Evaluation of Code Completion by Large Language Models

June 5, 2023
Auteurs: Hantian Ding, Varun Kumar, Yuchen Tian, Zijian Wang, Rob Kwiatkowski, Xiaopeng Li, Murali Krishna Ramanathan, Baishakhi Ray, Parminder Bhatia, Sudipta Sengupta, Dan Roth, Bing Xiang
cs.AI

Samenvatting

Grote taalmodellen getraind op code hebben groot potentieel getoond om de productiviteit van softwareontwikkelaars te verhogen. Verschillende op uitvoering gebaseerde benchmarks zijn voorgesteld om de functionele correctheid van door modellen gegenereerde code te evalueren op eenvoudige programmeerproblemen. Desalniettemin is het kostbaar om dezelfde evaluatie uit te voeren op complexe real-world projecten, gezien de uitvoeringskosten. Aan de andere kant zijn statische analyse tools zoals linters, die fouten kunnen detecteren zonder het programma uit te voeren, nog niet goed onderzocht voor het evalueren van codegeneratiemodellen. In dit werk stellen we een statisch evaluatiekader voor om statische fouten in Python-codecompleties te kwantificeren, door gebruik te maken van Abstract Syntax Trees. Vergeleken met op uitvoering gebaseerde evaluatie is onze methode niet alleen efficiënter, maar ook toepasbaar op code in het wild. Voor experimenten verzamelen we codecontext uit open source repositories om één miljoen functielichamen te genereren met behulp van publieke modellen. Onze statische analyse onthult dat Undefined Name en Unused Variable de meest voorkomende fouten zijn onder andere fouten gemaakt door taalmodellen. Door uitgebreide studies tonen we ook de impact van samplingtemperatuur, modelgrootte en context op statische fouten in codecompleties.
English
Large language models trained on code have shown great potential to increase productivity of software developers. Several execution-based benchmarks have been proposed to evaluate functional correctness of model-generated code on simple programming problems. Nevertheless, it is expensive to perform the same evaluation on complex real-world projects considering the execution cost. On the contrary, static analysis tools such as linters, which can detect errors without running the program, haven't been well explored for evaluating code generation models. In this work, we propose a static evaluation framework to quantify static errors in Python code completions, by leveraging Abstract Syntax Trees. Compared with execution-based evaluation, our method is not only more efficient, but also applicable to code in the wild. For experiments, we collect code context from open source repos to generate one million function bodies using public models. Our static analysis reveals that Undefined Name and Unused Variable are the most common errors among others made by language models. Through extensive studies, we also show the impact of sampling temperature, model size, and context on static errors in code completions.
PDF30December 15, 2024