ChatPaper.aiChatPaper

Leren om programma-uitvoering te voorspellen door dynamische afhankelijkheden op codegrafieken te modelleren

Learning to Predict Program Execution by Modeling Dynamic Dependency on Code Graphs

August 5, 2024
Auteurs: Cuong Chi Le, Hoang Nhat Phan, Huy Nhat Phan, Tien N. Nguyen, Nghi D. Q. Bui
cs.AI

Samenvatting

Het voorspellen van programma-gedrag zonder uitvoering is een essentiële en uitdagende taak in software engineering. Traditionele modellen hebben vaak moeite om dynamische afhankelijkheden en interacties binnen code vast te leggen. Dit artikel introduceert een nieuw machine learning-gebaseerd framework genaamd CodeFlowrepresents, dat code-dekking voorspelt en runtime-fouten detecteert door middel van Dynamic Dependencies Learning. Door gebruik te maken van control flow graphs (CFG's) representeert CodeFlowrepresents alle mogelijke uitvoeringspaden en de relaties tussen verschillende statements, wat een uitgebreid inzicht biedt in programma-gedrag. Het construeert CFG's om uitvoeringspaden weer te geven en leert vectorrepresentaties voor CFG-knopen, waarbij statische control-flow afhankelijkheden worden vastgelegd. Daarnaast leert het dynamische afhankelijkheden via uitvoeringstraces, die de impact tussen statements tijdens de uitvoering weerspiegelen. Deze aanpak maakt een nauwkeurige voorspelling van code-dekking en identificatie van runtime-fouten mogelijk. Empirische evaluaties tonen significante verbeteringen in de nauwkeurigheid van code-dekkingvoorspellingen en effectieve lokalisatie van runtime-fouten, wat huidige modellen overtreft.
English
Predicting program behavior without execution is an essential and challenging task in software engineering. Traditional models often struggle to capture dynamic dependencies and interactions within code. This paper introduces a novel machine learning-based framework called CodeFlowrepresents, which predicts code coverage and detects runtime errors through Dynamic Dependencies Learning. Utilizing control flow graphs (CFGs), CodeFlowrepresents all possible execution paths and the relationships between different statements, offering a comprehensive understanding of program behavior. It constructs CFGs to depict execution paths and learns vector representations for CFG nodes, capturing static control-flow dependencies. Additionally, it learns dynamic dependencies through execution traces, which reflect the impacts among statements during execution. This approach enables accurate prediction of code coverage and identification of runtime errors. Empirical evaluations show significant improvements in code coverage prediction accuracy and effective localization of runtime errors, surpassing current models.
PDF52November 28, 2024