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

2024年08月05日
  • 简介
    预测程序行为而无需执行是软件工程中至关重要且具有挑战性的任务。传统模型往往难以捕捉代码内的动态依赖和交互。本文介绍了一种新颖的基于机器学习的框架CodeFlow,旨在通过动态依赖学习预测代码覆盖率并检测运行时错误。通过利用控制流图(CFGs),CodeFlow表示所有可能的执行路径和不同语句之间的关系,提供了对程序行为的全面理解。CodeFlow构建CFGs来描述执行路径,并学习CFG节点的向量表示,捕捉静态控制流依赖关系。此外,它通过执行跟踪学习动态依赖关系,反映执行过程中语句之间的影响。这种方法使得能够准确预测代码覆盖率并有效识别运行时错误。经验评估表明,在代码覆盖率预测准确性和有效定位运行时错误方面,CodeFlow比现有模型表现更好。
  • 作者讲解
  • 图表
  • 解决问题
    论文试图通过动态依赖学习来预测代码覆盖率和检测运行时错误,以解决传统模型难以捕捉代码内部动态依赖和交互的问题。
  • 关键思路
    CodeFlow是一种基于机器学习的框架,通过控制流图来表示所有可能的执行路径和语句之间的关系,从而提供对程序行为的全面理解。CodeFlow利用执行跟踪来学习动态依赖性,同时为控制流图节点学习向量表示,以捕捉静态控制流依赖关系。
  • 其它亮点
    CodeFlow能够准确地预测代码覆盖率和有效地识别运行时错误,优于现有模型。论文还提供了实验结果和数据集,并开源了代码。值得继续深入研究。
  • 相关研究
    在该领域的相关研究包括:《DeepTest: Automated Testing of Deep-Neural-Network-driven Autonomous Cars》、《DeepGauge: Multi-Granularity Testing Criteria for Deep Learning Systems》等。
许愿开讲
PDF
原文
点赞 收藏
向作者提问
NEW
分享到Link

提问交流

提交问题,平台邀请作者,轻松获得权威解答~

向作者提问