Automatically learning semantic features for defect prediction

背景

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

概述

論文主要觀點(diǎn)

解析程序源代碼中的抽象語法樹(AST),利用深度置信網(wǎng)絡(luò)(DBN)從中抽取特征,形成“語義特征”,利用這些特征進(jìn)行軟件缺陷檢測。

成果

利用DBN從AST中抽取的語義特征在within-project和cross-project中均表現(xiàn)良好。

方法模型#

相關(guān)工作圖

主要步驟

  1. 將源碼轉(zhuǎn)換成AST;
  2. 從AST中識(shí)別聲明節(jié)點(diǎn)、控制流節(jié)點(diǎn)等,將其轉(zhuǎn)換成向量;
  3. 將向量中的元素映射成數(shù)字,形成數(shù)字向量;
  4. 將向量送入DBN中進(jìn)行特征提取(降維),產(chǎn)生最終的“語義特征”;
  5. 如此形成帶標(biāo)記的訓(xùn)練數(shù)據(jù),在訓(xùn)練數(shù)據(jù)上利用經(jīng)典分類器訓(xùn)練。

實(shí)驗(yàn)

  1. 為DBN選擇三個(gè)參數(shù):通過改變參數(shù)值不斷實(shí)驗(yàn)得到最優(yōu)值;
  2. within-project:選擇同一個(gè)項(xiàng)目的兩個(gè)連續(xù)的版本,前一個(gè)作為訓(xùn)練數(shù)據(jù),后一個(gè)作為測試數(shù)據(jù)。對(duì)比另外兩個(gè)特征;
  3. 對(duì)比不同的分類器,均為經(jīng)典分類器,樸素貝葉斯,邏輯回歸等;
  4. cross-project:兩個(gè)不同的項(xiàng)目,第一個(gè)用來訓(xùn)練,第二個(gè)用來測試。對(duì)比ACT+算法(使用經(jīng)典特征);
  5. 測試算法的時(shí)間空間復(fù)雜度。

創(chuàng)新點(diǎn)

所謂的“語義特征”,用DBN處理AST,對(duì)raw數(shù)據(jù)進(jìn)行了壓縮提純。

總結(jié)

優(yōu)點(diǎn)

“語義特征”的效果似乎非常好。

不足

對(duì)比的TCA+是作者自己實(shí)現(xiàn)的,其效果不一定有原始的好,數(shù)據(jù)來源不太可靠。

我的想法

可否在分類器上再做些更好的選擇?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容