ChatPaper.aiChatPaper

Lernen, die Ausführung von Programmen vorherzusagen, indem die dynamische Abhängigkeit von Codegraphen modelliert wird.

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

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

Zusammenfassung

Die Vorhersage des Programmverhaltens ohne Ausführung ist eine wesentliche und anspruchsvolle Aufgabe im Software Engineering. Traditionelle Modelle haben oft Schwierigkeiten, dynamische Abhängigkeiten und Interaktionen im Code zu erfassen. Dieses Papier stellt ein neuartiges maschinelles Lern-Framework namens CodeFlowrepresents vor, das Codeabdeckung vorhersagt und Laufzeitfehler durch das Lernen dynamischer Abhängigkeiten erkennt. Unter Verwendung von Kontrollflussgraphen (CFGs) stellt CodeFlowrepresents alle möglichen Ausführungspfade und die Beziehungen zwischen verschiedenen Anweisungen dar, um ein umfassendes Verständnis des Programmverhaltens zu bieten. Es erstellt CFGs zur Darstellung von Ausführungspfaden und lernt Vektorrepräsentationen für CFG-Knoten, um statische Kontrollflussabhängigkeiten zu erfassen. Darüber hinaus lernt es dynamische Abhängigkeiten durch Ausführungsspuren, die die Auswirkungen zwischen Anweisungen während der Ausführung widerspiegeln. Dieser Ansatz ermöglicht eine genaue Vorhersage der Codeabdeckung und die Identifizierung von Laufzeitfehlern. Empirische Bewertungen zeigen signifikante Verbesserungen in der Genauigkeit der Codeabdeckungsvorhersage und eine effektive Lokalisierung von Laufzeitfehlern, die aktuelle Modelle übertreffen.
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.

Summary

AI-Generated Summary

PDF52November 28, 2024