ChatPaper.aiChatPaper

Évaluation statique de la complétion de code par les grands modèles de langage

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

Résumé

Les grands modèles de langage entraînés sur du code ont démontré un potentiel considérable pour augmenter la productivité des développeurs de logiciels. Plusieurs benchmarks basés sur l'exécution ont été proposés pour évaluer la correction fonctionnelle du code généré par les modèles sur des problèmes de programmation simples. Néanmoins, il est coûteux de réaliser la même évaluation sur des projets complexes du monde réel en raison des coûts d'exécution. À l'inverse, les outils d'analyse statique tels que les linters, qui peuvent détecter des erreurs sans exécuter le programme, n'ont pas été suffisamment explorés pour évaluer les modèles de génération de code. Dans ce travail, nous proposons un cadre d'évaluation statique pour quantifier les erreurs statiques dans les complétions de code Python, en exploitant les arbres syntaxiques abstraits. Par rapport à l'évaluation basée sur l'exécution, notre méthode est non seulement plus efficace, mais aussi applicable au code en situation réelle. Pour les expériences, nous collectons des contextes de code à partir de dépôts open source pour générer un million de corps de fonctions à l'aide de modèles publics. Notre analyse statique révèle que les erreurs les plus courantes parmi celles commises par les modèles de langage sont les noms non définis et les variables inutilisées. À travers des études approfondies, nous montrons également l'impact de la température d'échantillonnage, de la taille du modèle et du contexte sur les erreurs statiques dans les complétions de code.
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