ChatPaper.aiChatPaper

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

PDF52November 28, 2024