ChatPaper.aiChatPaper

Apprendere a Prevedere l'Esecuzione del Programma Modellando la Dipendenza Dinamica su Grafi di Codice

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

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

Abstract

Prevedere il comportamento di un programma senza esecuzione è un compito essenziale e complesso nell'ingegneria del software. I modelli tradizionali spesso faticano a catturare le dipendenze dinamiche e le interazioni all'interno del codice. Questo articolo introduce un nuovo framework basato sul machine learning chiamato CodeFlowrepresents, che prevede la copertura del codice e rileva errori di runtime attraverso l'apprendimento delle dipendenze dinamiche. Utilizzando i grafi di flusso di controllo (CFG), CodeFlowrappresenta tutti i possibili percorsi di esecuzione e le relazioni tra diverse istruzioni, offrendo una comprensione completa del comportamento del programma. Costruisce CFG per rappresentare i percorsi di esecuzione e apprende rappresentazioni vettoriali per i nodi dei CFG, catturando le dipendenze statiche del flusso di controllo. Inoltre, apprende le dipendenze dinamiche attraverso tracce di esecuzione, che riflettono gli impatti tra le istruzioni durante l'esecuzione. Questo approccio consente una previsione accurata della copertura del codice e l'identificazione degli errori di runtime. Valutazioni empiriche mostrano miglioramenti significativi nell'accuratezza della previsione della copertura del codice e un'efficace localizzazione degli errori di runtime, superando i modelli attuali.
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