Apprendre à prédire l'exécution de programmes en modélisant les dépendances dynamiques sur des graphes de code
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
Résumé
Prédire le comportement d'un programme sans exécution est une tâche essentielle et complexe en ingénierie logicielle. Les modèles traditionnels peinent souvent à capturer les dépendances dynamiques et les interactions au sein du code. Cet article présente un nouveau cadre d'apprentissage automatique appelé CodeFlowrepresents, qui prédit la couverture de code et détecte les erreurs d'exécution grâce à l'apprentissage des dépendances dynamiques. En utilisant des graphes de flot de contrôle (CFG), CodeFlowrepresents représente tous les chemins d'exécution possibles et les relations entre les différentes instructions, offrant ainsi une compréhension approfondie du comportement du programme. Il construit des CFG pour illustrer les chemins d'exécution et apprend des représentations vectorielles pour les nœuds des CFG, capturant ainsi les dépendances statiques du flot de contrôle. De plus, il apprend les dépendances dynamiques à travers des traces d'exécution, qui reflètent les impacts entre les instructions pendant l'exécution. Cette approche permet une prédiction précise de la couverture de code et une identification efficace des erreurs d'exécution. Les évaluations empiriques montrent des améliorations significatives dans la précision de la prédiction de la couverture de code et une localisation efficace des erreurs d'exécution, surpassant les modèles actuels.
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