ChatPaper.aiChatPaper

Статическая оценка завершения кода с использованием крупных языковых моделей

A Static Evaluation of Code Completion by Large Language Models

June 5, 2023
Авторы: 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

Аннотация

Крупные языковые модели, обученные на коде, продемонстрировали значительный потенциал для повышения производительности разработчиков программного обеспечения. Было предложено несколько исполняемых бенчмарков для оценки функциональной корректности кода, сгенерированного моделями, на простых программных задачах. Тем не менее, проведение аналогичной оценки на сложных реальных проектах является затратным с точки зрения ресурсов выполнения. С другой стороны, статические анализаторы, такие как линтеры, которые могут обнаруживать ошибки без запуска программы, недостаточно изучены для оценки моделей генерации кода. В данной работе мы предлагаем статическую структуру оценки для количественного определения статических ошибок в завершениях кода на Python, используя абстрактные синтаксические деревья. По сравнению с исполняемой оценкой, наш метод не только более эффективен, но и применим к коду в реальных условиях. Для экспериментов мы собираем контекст кода из открытых репозиториев, чтобы сгенерировать миллион тел функций с использованием публичных моделей. Наш статический анализ показывает, что наиболее распространёнными ошибками, допускаемыми языковыми моделями, являются "Неопределённое имя" и "Неиспользуемая переменная". В ходе обширных исследований мы также демонстрируем влияние температуры сэмплирования, размера модели и контекста на статические ошибки в завершениях кода.
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