ChatPaper.aiChatPaper

Aprendizado para Prever a Execução de Programas por Modelagem da Dependência Dinâmica em Gráficos 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

Resumo

Prever o comportamento de programas sem execução é uma tarefa essencial e desafiadora na engenharia de software. Modelos tradicionais frequentemente têm dificuldade em capturar dependências dinâmicas e interações dentro do código. Este artigo apresenta um novo framework baseado em aprendizado de máquina chamado CodeFlowrepresents, que prevê a cobertura de código e detecta erros em tempo de execução por meio do Aprendizado de Dependências Dinâmicas. Utilizando grafos de fluxo de controle (CFGs), o CodeFlowrepresents representa todos os caminhos de execução possíveis e as relações entre diferentes declarações, oferecendo uma compreensão abrangente do comportamento do programa. Ele constrói CFGs para representar os caminhos de execução e aprende representações vetoriais para os nós do CFG, capturando dependências estáticas de fluxo de controle. Além disso, ele aprende dependências dinâmicas por meio de rastreamentos de execução, que refletem os impactos entre declarações durante a execução. Essa abordagem possibilita a previsão precisa da cobertura de código e a identificação de erros em tempo de execução. Avaliações empíricas mostram melhorias significativas na precisão da previsão de cobertura de código e na localização eficaz de erros em tempo de execução, superando os modelos atuais.
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