[發(fā)明專(zhuān)利]一種基于深度學(xué)習(xí)的軟件代碼行級(jí)缺陷檢測(cè)方法有效
| 申請(qǐng)?zhí)枺?/td> | 201911092161.7 | 申請(qǐng)日: | 2019-11-11 |
| 公開(kāi)(公告)號(hào): | CN110825642B | 公開(kāi)(公告)日: | 2021-01-01 |
| 發(fā)明(設(shè)計(jì))人: | 楊小虎;曹靖;劉力華;張昕東;鄢萌;夏鑫 | 申請(qǐng)(專(zhuān)利權(quán))人: | 浙江大學(xué) |
| 主分類(lèi)號(hào): | G06F11/36 | 分類(lèi)號(hào): | G06F11/36 |
| 代理公司: | 杭州求是專(zhuān)利事務(wù)所有限公司 33200 | 代理人: | 邱啟旺 |
| 地址: | 310058 浙江*** | 國(guó)省代碼: | 浙江;33 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 深度 學(xué)習(xí) 軟件 代碼 缺陷 檢測(cè) 方法 | ||
1.一種基于深度學(xué)習(xí)的軟件代碼行級(jí)缺陷檢測(cè)方法,其特征在于,具體包括如下步驟:
步驟一:master分支中基于類(lèi)的ATS提取
master分支中的每一個(gè)Java文件通過(guò)AST解析為一棵語(yǔ)法樹(shù),Java文件中的每一個(gè)方法為所述語(yǔ)法樹(shù)上的一棵子樹(shù),記為MST,通過(guò)遍歷MST,得到MST所代表源代碼的API執(zhí)行流程;針對(duì)指定類(lèi),從解析到的代碼執(zhí)行流程中提取出指定類(lèi)在MST中的所有API使用序列,即ATS;多個(gè)ATS構(gòu)成ATS集合;
步驟二:ATS集合預(yù)處理
使用基于Skip-gram算法的分布式語(yǔ)義模型,將步驟一指定類(lèi)下的所有API Token訓(xùn)練為d維的詞向量,以此來(lái)捕捉所述ATS集合中各API token在向量空間下的關(guān)聯(lián);
步驟三:LSTM模型訓(xùn)練
將步驟一中提取到的ATS集合,按所屬類(lèi)分類(lèi),得到若干個(gè)ATS集,針對(duì)每一個(gè)ATS集訓(xùn)練一個(gè)LSTM模型,直到所述LSTM模型訓(xùn)練至損失函數(shù)收斂為止;
步驟四:開(kāi)發(fā)分支ATS集合提取與檢測(cè)
將Git倉(cāng)庫(kù)切換至開(kāi)發(fā)分支,使用步驟一和二中的方法從開(kāi)發(fā)分支中提取指定類(lèi)所屬的ATS集合,將得到的ATS集合輸入步驟三中訓(xùn)練好的對(duì)應(yīng)LSTM模型,得到各ATS的異常概率結(jié)果,具體過(guò)程為:
ATSc={api1,api2,…,apik,EOF} (3)
其中,EOF為結(jié)束標(biāo)識(shí)符,
按順序?qū)oken輸入LSTM模型中,每一Token:apii輸入之后,LSTM模型輸出其下一個(gè)Token為apii+1的概率pi,且EOF不輸入模型;對(duì)k個(gè)Token經(jīng)過(guò)LSTM模型后預(yù)測(cè)輸出的概率{p1,p2,…,pk}取平均值,遍得到ATSc中API使用的正確概率
其中,k為ATSc中的Token個(gè)數(shù),pi為apii經(jīng)由LSTM模型后輸出的概率值;
步驟五:ATS異常概率排序
將步驟四中所得指定類(lèi)的ATS集合中各ATS經(jīng)LSTM模型輸出的概率值按升序排序。
2.根據(jù)權(quán)利要求1所述缺陷檢測(cè)方法,其特征在于,步驟2中所述Skip-gram模型的目標(biāo)函數(shù)J的計(jì)算方法如下:
其中,n為表示Token序列的長(zhǎng)度,ti為ATS中某一Token,Cti為T(mén)okenti周?chē)鶷oken的集合,tj為Cti中的各Token,p(tj|ti)為softmax函數(shù)定義的條件概率,vt是Tokent的向量表示,T是ATS集合中所有Token的詞匯表。
3.根據(jù)權(quán)利要求1所述缺陷檢測(cè)方法,其特征在于,步驟3中所述LSTM模型中需要設(shè)置:指定類(lèi)ATS集合中所有詞匯表的大小為voca_size,詞向量的維度參數(shù)為vec_size,LSTM模型的輸入層維度參數(shù)input_size=vec_size,隱藏層維度參數(shù)設(shè)置為hidden_size=2*input_size,輸出層維度參數(shù)設(shè)置為output_size=voca_size,LSTM網(wǎng)絡(luò)層數(shù)設(shè)置為2。
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于浙江大學(xué),未經(jīng)浙江大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911092161.7/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- 同類(lèi)專(zhuān)利
- 專(zhuān)利分類(lèi)
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測(cè);錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過(guò)測(cè)試作故障硬件的檢測(cè)或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過(guò)處理作錯(cuò)誤檢測(cè)、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過(guò)軟件的測(cè)試或調(diào)試防止錯(cuò)誤
- 根據(jù)用戶(hù)學(xué)習(xí)效果動(dòng)態(tài)變化下載學(xué)習(xí)數(shù)據(jù)的系統(tǒng)及方法
- 用于智能個(gè)人化學(xué)習(xí)服務(wù)的方法
- 漸進(jìn)式學(xué)習(xí)管理方法及漸進(jìn)式學(xué)習(xí)系統(tǒng)
- 輔助學(xué)習(xí)的方法及裝置
- 基于人工智能的課程推薦方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)
- 基于強(qiáng)化學(xué)習(xí)的自適應(yīng)移動(dòng)學(xué)習(xí)路徑生成方法
- 一種線上視頻學(xué)習(xí)系統(tǒng)
- 一種基于校園大數(shù)據(jù)的自適應(yīng)學(xué)習(xí)方法、裝置及設(shè)備
- 一種學(xué)習(xí)方案推薦方法、裝置、設(shè)備和存儲(chǔ)介質(zhì)
- 游戲?qū)W習(xí)效果評(píng)測(cè)方法及系統(tǒng)
- 一種基于應(yīng)用軟件散布的軟件授權(quán)與保護(hù)方法及系統(tǒng)
- 一種用于航空機(jī)載設(shè)備的軟件在線加載系統(tǒng)及方法
- 軟件構(gòu)建方法、軟件構(gòu)建裝置和軟件構(gòu)建系統(tǒng)
- 惡意軟件檢測(cè)方法及裝置
- 一種基于軟件基因的軟件同源性分析方法和裝置
- 軟件引入系統(tǒng)、軟件引入方法及存儲(chǔ)介質(zhì)
- 軟件驗(yàn)證裝置、軟件驗(yàn)證方法以及軟件驗(yàn)證程序
- 使用靜態(tài)和動(dòng)態(tài)惡意軟件分析來(lái)擴(kuò)展惡意軟件的動(dòng)態(tài)檢測(cè)
- 一種工業(yè)控制軟件構(gòu)建方法和軟件構(gòu)建系統(tǒng)
- 可替換游戲軟件與測(cè)驗(yàn)軟件的裝置與方法





