Skip to main content
QUICK REVIEW

[论文解读] Convolutional Neural Networks over Control Flow Graphs for Software Defect Prediction

Anh Viet Phan, Le-Minh Nguyen|arXiv (Cornell University)|Feb 14, 2018
Software Engineering Research参考文献 15被引用 28
一句话总结

本文提出了一种新颖的深度学习方法用于软件缺陷预测,通过从编译后的汇编代码构建控制流图(CFG),并应用多视角、多层有向图卷积神经网络(DGCNN)自动学习语义特征。该方法显著优于传统的基于特征的方法和基于树的方法,在真实世界数据集上的准确率最高提升15.49%,AUC最高提升12.39%。

ABSTRACT

Existing defects in software components is unavoidable and leads to not only a waste of time and money but also many serious consequences. To build predictive models, previous studies focus on manually extracting features or using tree representations of programs, and exploiting different machine learning algorithms. However, the performance of the models is not high since the existing features and tree structures often fail to capture the semantics of programs. To explore deeply programs' semantics, this paper proposes to leverage precise graphs representing program execution flows, and deep neural networks for automatically learning defect features. Firstly, control flow graphs are constructed from the assembly instructions obtained by compiling source code; we thereafter apply multi-view multi-layer directed graph-based convolutional neural networks (DGCNNs) to learn semantic features. The experiments on four real-world datasets show that our method significantly outperforms the baselines including several other deep learning approaches.

研究动机与目标

  • 为解决现有软件缺陷预测方法依赖人工设计指标或抽象语法树(AST)的局限性,这些方法往往无法捕捉程序的深层语义。
  • 探究从汇编代码导出的控制流图(CFG)是否能比AST或传统指标更好地表示程序执行语义。
  • 开发一种端到端的深度学习模型,利用基于图的神经网络从CFG中自动学习与缺陷相关的特征。
  • 在真实世界数据集上评估所提方法,并与最先进的基于特征和基于树的方法进行性能比较。

提出的方法

  • 源代码被编译为汇编代码,随后用于构建精确的控制流图(CFG),以表示程序的逐步执行流程。
  • 应用多视角、多层有向图卷积神经网络(DGCNN)于CFG,以从图结构数据中学习分层语义特征。
  • DGCNN处理CFG中的有向、带标签的节点和边,通过图卷积操作捕捉与缺陷相关的结构和行为模式。
  • 模型端到端训练,基于学习到的CFG表示将源代码分类为缺陷或非缺陷。
  • 该方法利用了汇编级CFG保留底层执行语义且对语法重排不敏感的特性,相比AST更具优势。
  • 使用准确率、AUC和F1-score等标准指标,在四个真实世界软件缺陷预测数据集上评估性能。

实验结果

研究问题

  • RQ1从汇编代码导出的CFG是否能比传统软件指标或AST更好地表示缺陷预测的程序语义?
  • RQ2与基于树的AST相比,DGCNN在从图结构CFG中有效学习缺陷相关特征方面的程度如何?
  • RQ3在真实世界数据集上,所提方法与现有基于特征和基于树的深度学习方法相比表现如何?
  • RQ4哪些代码变化类型(例如,结构重排、语句替换、库函数使用)会影响基于CFG的模型与基于树的模型的性能?

主要发现

  • 所提出的基于DGCNN的CFG方法在四个真实世界数据集上,相较于最佳性能的基于特征基线,准确率最高提升15.49%。
  • 与基于树的深度学习方法相比,该方法在AUC上最高提升12.39%,表现出更优的判别能力。
  • 基于树的模型(如SibStCNN和TBCNN)在AST规模增大时性能显著下降,尤其在SUMTRIAN数据集等复杂程序上表现更差。
  • 基于CFG的方法对语法变化(如语句重排和变量声明位置变化)更具鲁棒性,这些变化会显著改变AST结构,但对汇编级CFG影响甚微。
  • 当代码涉及外部库函数(如__gcd)时,模型表现较差,因为这些函数在缺乏源代码的情况下未被包含在CFG中,导致此类情况误分类。
  • 尽管在库函数调用方面存在局限,但CFG-DGCNN模型在所有评估指标上均持续优于基于特征和基于树的基线模型。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。