ChatPaper.aiChatPaper

Обучение предсказанию выполнения программы путем моделирования динамической зависимости от графов кода

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

August 5, 2024
Авторы: Cuong Chi Le, Hoang Nhat Phan, Huy Nhat Phan, Tien N. Nguyen, Nghi D. Q. Bui
cs.AI

Аннотация

Предсказание поведения программы без выполнения является важной и сложной задачей в области программной инженерии. Традиционные модели часто испытывают трудности в улавливании динамических зависимостей и взаимодействий в коде. В данной статье представлен новый фреймворк на основе машинного обучения под названием CodeFlowrepresents, который предсказывает покрытие кода и обнаруживает ошибки времени выполнения через обучение динамических зависимостей. Используя графы потока управления (CFGs), CodeFlowrepresents отображает все возможные пути выполнения и отношения между различными операторами, предлагая всестороннее понимание поведения программы. Он строит CFGs для изображения путей выполнения и изучает векторные представления для узлов CFG, улавливая статические зависимости потока управления. Кроме того, он изучает динамические зависимости через следы выполнения, отражающие взаимосвязи между операторами во время выполнения. Этот подход позволяет точно предсказывать покрытие кода и идентифицировать ошибки времени выполнения. Эмпирические оценки показывают значительное улучшение точности предсказания покрытия кода и эффективную локализацию ошибок времени выполнения, превосходя текущие модели.
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