ChatPaper.aiChatPaper

Eine statische Bewertung der Code-Vervollständigung durch große Sprachmodelle

A Static Evaluation of Code Completion by Large Language Models

June 5, 2023
Autoren: 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

Zusammenfassung

Große Sprachmodelle, die auf Code trainiert wurden, haben ein großes Potenzial gezeigt, die Produktivität von Softwareentwicklern zu steigern. Es wurden mehrere ausführungsbasierte Benchmarks vorgeschlagen, um die funktionale Korrektheit von modellgeneriertem Code bei einfachen Programmierproblemen zu bewerten. Dennoch ist es kostspielig, dieselbe Bewertung für komplexe, realweltliche Projekte durchzuführen, wenn man die Ausführungskosten berücksichtigt. Im Gegensatz dazu wurden statische Analysetools wie Linter, die Fehler erkennen können, ohne das Programm auszuführen, noch nicht umfassend für die Bewertung von Codegenerierungsmodellen untersucht. In dieser Arbeit schlagen wir ein statisches Evaluationsframework vor, um statische Fehler in Python-Code-Vervollständigungen zu quantifizieren, indem wir Abstract Syntax Trees nutzen. Im Vergleich zur ausführungsbasierten Bewertung ist unsere Methode nicht nur effizienter, sondern auch auf Code in der Praxis anwendbar. Für Experimente sammeln wir Code-Kontexte aus Open-Source-Repositories, um eine Million Funktionskörper mit öffentlichen Modellen zu generieren. Unsere statische Analyse zeigt, dass „Undefined Name“ und „Unused Variable“ die häufigsten Fehler unter den von Sprachmodellen gemachten Fehlern sind. Durch umfangreiche Studien zeigen wir auch die Auswirkungen der Sampling-Temperatur, der Modellgröße und des Kontexts auf statische Fehler in Code-Vervollständigungen.
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