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