背景
- 出處: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)工作圖

主要步驟
- 將源碼轉(zhuǎn)換成AST;
- 從AST中識(shí)別聲明節(jié)點(diǎn)、控制流節(jié)點(diǎn)等,將其轉(zhuǎn)換成向量;
- 將向量中的元素映射成數(shù)字,形成數(shù)字向量;
- 將向量送入DBN中進(jìn)行特征提取(降維),產(chǎn)生最終的“語義特征”;
- 如此形成帶標(biāo)記的訓(xùn)練數(shù)據(jù),在訓(xùn)練數(shù)據(jù)上利用經(jīng)典分類器訓(xùn)練。
實(shí)驗(yàn)
- 為DBN選擇三個(gè)參數(shù):通過改變參數(shù)值不斷實(shí)驗(yàn)得到最優(yōu)值;
- within-project:選擇同一個(gè)項(xiàng)目的兩個(gè)連續(xù)的版本,前一個(gè)作為訓(xùn)練數(shù)據(jù),后一個(gè)作為測試數(shù)據(jù)。對(duì)比另外兩個(gè)特征;
- 對(duì)比不同的分類器,均為經(jīng)典分類器,樸素貝葉斯,邏輯回歸等;
- cross-project:兩個(gè)不同的項(xiàng)目,第一個(gè)用來訓(xùn)練,第二個(gè)用來測試。對(duì)比ACT+算法(使用經(jīng)典特征);
- 測試算法的時(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ù)來源不太可靠。
我的想法
可否在分類器上再做些更好的選擇?