ChatPaper.aiChatPaper

Code Coverage Voorspellen zonder Uitvoering

Predicting Code Coverage without Execution

July 25, 2023
Auteurs: Michele Tufano, Shubham Chandel, Anisha Agarwal, Neel Sundaresan, Colin Clement
cs.AI

Samenvatting

Code coverage is een veelgebruikte maatstaf om te kwantificeren in hoeverre programmeerelementen, zoals statements of branches, worden uitgevoerd tijdens het testen. Het berekenen van code coverage is resource-intensief, omdat het vereist dat code wordt gebouwd en uitgevoerd met extra overhead voor instrumentatie. Bovendien vereist het berekenen van de coverage van elk stukje code de volledige programmacontext. Het gebruik van Machine Learning om dit kostbare proces te amortiseren, zou de kosten van code coverage kunnen verlagen door alleen de broncodecontext te vereisen, en de taak van code coverage-voorspelling kan een nieuwe benchmark zijn om het vermogen van modellen om code te begrijpen te beoordelen. Wij stellen een nieuwe benchmarktaak voor genaamd Code Coverage Prediction voor Large Language Models (LLMs). We formaliseren deze taak om het vermogen van LLMs om code-uitvoering te begrijpen te evalueren door te bepalen welke regels van een methode worden uitgevoerd door een gegeven testcase en invoer. We hebben een dataset samengesteld en vrijgegeven die we COVERAGEEVAL noemen, door tests en code uit de HumanEval-dataset uit te voeren en code coverage-informatie te verzamelen. We rapporteren de prestaties van vier state-of-the-art LLMs die worden gebruikt voor code-gerelateerde taken, waaronder OpenAI's GPT-4 en GPT-3.5-Turbo, Google's BARD en Anthropic's Claude, op de Code Coverage Prediction-taak. Tot slot beargumenteren we dat code coverage als maatstaf en als bron van voorafgaande trainingsgegevens waardevol is voor de algehele prestaties van LLMs op software-engineeringtaken.
English
Code coverage is a widely used metric for quantifying the extent to which program elements, such as statements or branches, are executed during testing. Calculating code coverage is resource-intensive, requiring code building and execution with additional overhead for the instrumentation. Furthermore, computing coverage of any snippet of code requires the whole program context. Using Machine Learning to amortize this expensive process could lower the cost of code coverage by requiring only the source code context, and the task of code coverage prediction can be a novel benchmark for judging the ability of models to understand code. We propose a novel benchmark task called Code Coverage Prediction for Large Language Models (LLMs). We formalize this task to evaluate the capability of LLMs in understanding code execution by determining which lines of a method are executed by a given test case and inputs. We curate and release a dataset we call COVERAGEEVAL by executing tests and code from the HumanEval dataset and collecting code coverage information. We report the performance of four state-of-the-art LLMs used for code-related tasks, including OpenAI's GPT-4 and GPT-3.5-Turbo, Google's BARD, and Anthropic's Claude, on the Code Coverage Prediction task. Finally, we argue that code coverage as a metric and pre-training data source are valuable for overall LLM performance on software engineering tasks.
PDF90December 15, 2024