Aprendizaje para predecir la ejecución de programas mediante la modelización de la dependencia dinámica en grafos de código.
Learning to Predict Program Execution by Modeling Dynamic Dependency on Code Graphs
August 5, 2024
Autores: Cuong Chi Le, Hoang Nhat Phan, Huy Nhat Phan, Tien N. Nguyen, Nghi D. Q. Bui
cs.AI
Resumen
Predecir el comportamiento de un programa sin ejecutarlo es una tarea esencial y desafiante en ingeniería de software. Los modelos tradicionales a menudo tienen dificultades para capturar las dependencias dinámicas e interacciones dentro del código. Este artículo presenta un novedoso marco basado en aprendizaje automático llamado CodeFlowrepresents, que predice la cobertura de código y detecta errores en tiempo de ejecución a través del Aprendizaje de Dependencias Dinámicas. Utilizando grafos de flujo de control (CFGs), CodeFlowrepresents todos los posibles caminos de ejecución y las relaciones entre diferentes declaraciones, ofreciendo una comprensión integral del comportamiento del programa. Construye CFGs para representar los caminos de ejecución y aprende representaciones vectoriales para los nodos del CFG, capturando dependencias estáticas de flujo de control. Además, aprende dependencias dinámicas a través de trazas de ejecución, que reflejan los impactos entre declaraciones durante la ejecución. Este enfoque permite una predicción precisa de la cobertura de código e identificación de errores en tiempo de ejecución. Las evaluaciones empíricas muestran mejoras significativas en la precisión de la predicción de cobertura de código y una localización efectiva de errores en tiempo de ejecución, superando a los modelos actuales.
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