Automatically learning semantic features for defect prediction

背景

  • 出处:2016 IEEE/ACM 38th IEEE International Conference on Software Engineering
  • 作者:Song Wang,Taiyue Liu and Lin Tan

概述

论文主要观点

解析程序源代码中的抽象语法树(AST),利用深度置信网络(DBN)从中抽取特征,形成“语义特征”,利用这些特征进行软件缺陷检测。

成果

利用DBN从AST中抽取的语义特征在within-project和cross-project中均表现良好。

方法模型#

相关工作图

Automatically learning semantic features for defect prediction_第1张图片

主要步骤

  1. 将源码转换成AST;
  2. 从AST中识别声明节点、控制流节点等,将其转换成向量;
  3. 将向量中的元素映射成数字,形成数字向量;
  4. 将向量送入DBN中进行特征提取(降维),产生最终的“语义特征”;
  5. 如此形成带标记的训练数据,在训练数据上利用经典分类器训练。

实验

  1. 为DBN选择三个参数:通过改变参数值不断实验得到最优值;
  2. within-project:选择同一个项目的两个连续的版本,前一个作为训练数据,后一个作为测试数据。对比另外两个特征;
  3. 对比不同的分类器,均为经典分类器,朴素贝叶斯,逻辑回归等;
  4. cross-project:两个不同的项目,第一个用来训练,第二个用来测试。对比ACT+算法(使用经典特征);
  5. 测试算法的时间空间复杂度。

创新点

所谓的“语义特征”,用DBN处理AST,对raw数据进行了压缩提纯。

总结

优点

“语义特征”的效果似乎非常好。

不足

对比的TCA+是作者自己实现的,其效果不一定有原始的好,数据来源不太可靠。

我的想法

可否在分类器上再做些更好的选择?

你可能感兴趣的:(Automatically learning semantic features for defect prediction)