亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于大感知域LSTM-Seq2Seq 模型的代碼缺陷檢測方法

        2023-05-30 02:03:40王鵬姚鑫鵬汪克念陳文琪陳曦
        關(guān)鍵詞:代碼樣本特征

        王鵬,姚鑫鵬,汪克念,陳文琪,陳曦

        (1.中國民航大學(xué)a.安全科學(xué)與工程學(xué)院;b.中歐航空工程師學(xué)院,天津 300300;2.民航航空器適航審定技術(shù)重點(diǎn)實(shí)驗(yàn)室,天津 300300)

        隨著軟件規(guī)模與復(fù)雜度不斷增加,軟件缺陷導(dǎo)致的系統(tǒng)失效風(fēng)險(xiǎn)不斷提升。系統(tǒng)在執(zhí)行任務(wù)過程中存在的失效風(fēng)險(xiǎn)可能會(huì)引起災(zāi)難性后果。這一情況在民用航空領(lǐng)域尤為突出。為了在軟件投入使用前查找并改正代碼中存在的缺陷,需對(duì)軟件代碼的需求符合性、可驗(yàn)證性、正確性、一致性等進(jìn)行評(píng)審分析[1-2]。目前,代碼評(píng)審[3]主要可以分為人工評(píng)審和自動(dòng)評(píng)審兩個(gè)方向。

        對(duì)于人工評(píng)審過程[4],評(píng)審專家會(huì)檢查軟件代碼是否存在資源競爭、內(nèi)存泄漏、緩沖區(qū)溢出和結(jié)構(gòu)化查詢語言(SQL,structured query language)注入等安全性缺陷。因此,評(píng)審過程十分依賴專家經(jīng)驗(yàn)。由于不同專家的知識(shí)領(lǐng)域、活躍度、對(duì)評(píng)審項(xiàng)目的熟悉程度不盡相同,從而導(dǎo)致項(xiàng)目評(píng)審效果參差不齊,且基于專家經(jīng)驗(yàn)的代碼評(píng)審過程存在效率低、工作量大等問題[5],這嚴(yán)重影響了軟件項(xiàng)目的評(píng)審效果。為了提高評(píng)審效果,研究者們不斷優(yōu)化搜索算法以推薦最優(yōu)的項(xiàng)目評(píng)審人員。文獻(xiàn)[6]提出一種基于貝葉斯個(gè)性化排序的BPR-CR2 評(píng)審者推薦模型,模型分析了4 種可能會(huì)影響評(píng)審者評(píng)審意愿的因素,在先驗(yàn)知識(shí)條件下極大化后驗(yàn)概率,以推薦最適合的評(píng)審人員。文獻(xiàn)[7]提出一種效力優(yōu)化的代碼評(píng)審者推薦模型,通過計(jì)算歷史評(píng)審者的時(shí)間效力與內(nèi)容效力來推薦合適的代碼評(píng)審人員。上述方法旨在通過優(yōu)化搜索算法來推薦合適的評(píng)審人員,以提高代碼評(píng)審效率,但未能減少評(píng)審人員的實(shí)際工作量。

        隨著深度學(xué)習(xí)技術(shù)的發(fā)展,尤其是在自然語言處理領(lǐng)域取得的成就,使其在代碼評(píng)審領(lǐng)域的應(yīng)用變?yōu)榭赡?。代碼本身作為一種語言,有準(zhǔn)確的語法規(guī)則,其語料庫與自然語言語料庫有相似的統(tǒng)計(jì)特性[8],同類代碼缺陷在代碼結(jié)構(gòu)及數(shù)據(jù)流上具有一定的相似特征,可使用深度學(xué)習(xí)算法挖掘代碼樣本中的安全性缺陷特征[9-10]。文獻(xiàn)[11]提出一種代碼分析方法,該方法以代碼段與缺陷檢測數(shù)據(jù)為輸入,訓(xùn)練深度網(wǎng)絡(luò)模型,獲取代碼編碼規(guī)則與評(píng)審建議特征,并基于評(píng)審數(shù)據(jù)庫輸出評(píng)審建議。文獻(xiàn)[12]使用查重工具在Stack Overflow 網(wǎng)站上查找與被審代碼相似的代碼段,然后通過計(jì)算文本相似度得到代碼缺陷估量,以此來計(jì)算代碼缺陷概率。上述方法計(jì)算的缺陷概率與兩段代碼相似度有關(guān),通過檢測算法輸出的評(píng)審建議與缺陷概率無法直接反映代碼缺陷類型。文獻(xiàn)[13-14]提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的源代碼缺陷檢測方法,可以挖掘代碼中蘊(yùn)含的缺陷特征,完成代碼缺陷檢測工作以實(shí)現(xiàn)代碼自動(dòng)缺陷檢測。但該方法不能輸出與代碼缺陷特征相關(guān)的評(píng)審建議,達(dá)不到幫助評(píng)審人員實(shí)現(xiàn)快速評(píng)審的目的。

        因此,目前自動(dòng)代碼評(píng)審方法存在的問題主要可以歸結(jié)為:在代碼評(píng)審過程中,現(xiàn)有模型或方法僅對(duì)源代碼缺陷進(jìn)行檢測,不能自動(dòng)化地對(duì)代碼缺陷特征進(jìn)行分析并給出專家建議,導(dǎo)致在后續(xù)修復(fù)代碼缺陷的工作中,仍需依靠大量基于人工評(píng)判的專家經(jīng)驗(yàn)對(duì)模型輸出結(jié)果進(jìn)行驗(yàn)證。

        為解決以上問題,本文提出了一種基于長短期記憶網(wǎng)絡(luò)[15](LSTM,long short-term memory)與序列到序列模型[16](Seq2Seq,sequence to sequence)的代碼缺陷檢測方法。該方法相較于傳統(tǒng)代碼缺陷檢測方法,采用深層LSTM 來學(xué)習(xí)數(shù)據(jù)集中的代碼缺陷特征與評(píng)審建議特征,首次提出基于大感知域的Seq2Seq 模型來建立代碼與評(píng)審特征間的映射關(guān)系,從而實(shí)現(xiàn)對(duì)未知代碼段缺陷的檢測、分析和輸出評(píng)審建議等功能,以輔助評(píng)審人員展開代碼評(píng)審工作。

        1 大感知域LSTM-Seq2Seq 算法流程介紹

        本文通過改進(jìn)LSTM-Seq2Seq 模型結(jié)構(gòu),提升模型對(duì)代碼缺陷深層特征的捕獲能力與感知域,并將其應(yīng)用于代碼缺陷檢測任務(wù)中,建立代碼缺陷自動(dòng)檢測模型。該模型可在代碼變更評(píng)審[17]、代碼整體評(píng)審過程中輔助評(píng)審人員實(shí)現(xiàn)快速評(píng)審。本文方法流程圖如圖1 所示,主要流程包括數(shù)據(jù)清洗、詞嵌入處理、模型訓(xùn)練3 部分。首先,通過數(shù)據(jù)清洗模塊去除數(shù)據(jù)集中的噪聲數(shù)據(jù)。其次,對(duì)數(shù)據(jù)集進(jìn)行詞嵌入處理,得到相應(yīng)的詞嵌入模型,模型將文本數(shù)據(jù)轉(zhuǎn)換為詞向量數(shù)據(jù)以訓(xùn)練深度網(wǎng)絡(luò)模型。最后,采用深層LSTM 網(wǎng)絡(luò)學(xué)習(xí)代碼缺陷的數(shù)據(jù)特征與評(píng)審建議的數(shù)據(jù)特征,基于Seq2Seq框架建立代碼缺陷特征與評(píng)審建議特征間的映射關(guān)系,實(shí)現(xiàn)評(píng)審輸出功能。經(jīng)過訓(xùn)練的深度網(wǎng)絡(luò)模型可實(shí)現(xiàn)檢測代碼中的缺陷漏洞并給出相應(yīng)評(píng)審建議的功能。本文整體架構(gòu)基于C 代碼數(shù)據(jù)集實(shí)現(xiàn),針對(duì)不同編程語言的代碼評(píng)審,該方法整體框架不變,可用以解決現(xiàn)有方法中存在的問題。

        圖1 方法流程圖Fig.1 The framework of proposed method

        1.1 數(shù)據(jù)清洗

        循環(huán)神經(jīng)網(wǎng)絡(luò)建立數(shù)據(jù)特征與特征間映射關(guān)系的關(guān)鍵在于網(wǎng)絡(luò)模型能夠?qū)W習(xí)文本的上下文關(guān)系,挖掘其中的數(shù)據(jù)特征,數(shù)據(jù)集質(zhì)量嚴(yán)重影響著模型最終的缺陷檢測效果。SARD 數(shù)據(jù)集中存在大量注釋信息,實(shí)際評(píng)審案例中部分樣本被用于描述工具版本迭代或代碼結(jié)構(gòu)優(yōu)化,與代碼缺陷無關(guān)。本文方法為突出數(shù)據(jù)集中代碼缺陷與評(píng)審建議特征,首先對(duì)數(shù)據(jù)集中的噪聲數(shù)據(jù)進(jìn)行清洗。數(shù)據(jù)清洗過程分為內(nèi)容清洗與樣本清洗,即分別對(duì)單個(gè)樣本包含的噪聲數(shù)據(jù)和數(shù)據(jù)集中的噪聲樣本進(jìn)行清洗。針對(duì)數(shù)據(jù)集中存在的噪聲特征編寫數(shù)據(jù)清洗需求如表1 所示。

        表1 數(shù)據(jù)清洗需求表Tab.1 Requirement table of data cleaning

        針對(duì)每一條數(shù)據(jù)清洗需求,基于正則表達(dá)式編寫其相應(yīng)的數(shù)據(jù)清洗算法。正則表達(dá)式是對(duì)字符進(jìn)行檢索、替換的一種邏輯公式,對(duì)噪聲數(shù)據(jù)特征建立約束條件,基于約束條件檢索并刪除數(shù)據(jù)集中的噪聲數(shù)據(jù),以實(shí)現(xiàn)數(shù)據(jù)清洗功能。根據(jù)數(shù)據(jù)清洗需求編寫算法時(shí),需結(jié)合被清洗語言的編碼規(guī)則進(jìn)行編寫,同時(shí)需考慮編程語言編碼規(guī)則的差異性,本文方法中清洗算法以C 代碼編碼規(guī)則為基礎(chǔ)進(jìn)行編寫。

        1.2 詞嵌入處理

        使用Word2Vec[18-19]技術(shù)對(duì)數(shù)據(jù)集進(jìn)行詞嵌入處理,在自然語言處理過程中,神經(jīng)網(wǎng)絡(luò)通過訓(xùn)練實(shí)現(xiàn)對(duì)文本的分析任務(wù)。Word2Vec 的兩種算法模型分別為跳元模型(skip-gram)和連續(xù)詞袋模型(CBOW,continuous big-of-words):skip-gram 模型以一個(gè)詞單元為輸入預(yù)測其上下文關(guān)系,此訓(xùn)練方法對(duì)低頻詞的訓(xùn)練效果較好,但訓(xùn)練過程相對(duì)緩慢;CBOW 模型以詞單元的上下文關(guān)系為輸入預(yù)測詞單元本身,模型訓(xùn)練速度較快[20]。本文使用的代碼集與評(píng)審集屬于代碼評(píng)審領(lǐng)域語料庫,低頻詞占比較小,因此使用訓(xùn)練速度較快的CBOW 模型對(duì)語料庫進(jìn)行無監(jiān)督訓(xùn)練。

        1.3 深層LSTM 提取樣本特征

        傳統(tǒng)LSTM 網(wǎng)絡(luò)由于其短期性問題,對(duì)學(xué)習(xí)長代碼序列數(shù)據(jù)的深層特征仍存在一定局限性,因此本文使用一種深層LSTM 網(wǎng)絡(luò)結(jié)構(gòu)來學(xué)習(xí)代碼缺陷數(shù)據(jù)集的深層數(shù)據(jù)特征,以實(shí)現(xiàn)更好的長序列特征記憶效果。

        輸入層Input 后連接3 層LSTM,每層LSTM 后連接Dropout 層提高模型泛化能力,第3 層Dropout 后連接Dense 全連接層實(shí)現(xiàn)分類訓(xùn)練。使用深層LSTM 學(xué)習(xí)代碼缺陷特征,實(shí)現(xiàn)代碼缺陷檢測功能,深層LSTM相較于單層LSTM 可建立更加復(fù)雜的特征表示,從而對(duì)深層復(fù)雜特征有更好的提取效果。

        1.4 基于大感知域注意力機(jī)制的Seq2Seq 模型

        為了解決傳統(tǒng)Seq2Seq 模型在回歸任務(wù)中信息壓縮損失問題與注意力(Attention)機(jī)制[21]在代碼評(píng)審項(xiàng)目中的感知域過于集中的問題,提出了一種基于大感知域注意力機(jī)制的Seq2Seq 模型,建立代碼缺陷特征與評(píng)審建議間的映射關(guān)系,以實(shí)現(xiàn)輸出評(píng)審建議功能。

        Seq2Seq 模型是一種由編碼器(Encoder)和譯碼器(Decoder)組成,實(shí)現(xiàn)序列到序列轉(zhuǎn)換的深度網(wǎng)絡(luò)模型。

        Encoder 對(duì)代碼詞向量特征進(jìn)行提取、壓縮并輸出至隱藏層狀態(tài),作為上下文信息C。Decoder 讀入上下文信息C,進(jìn)行解碼、映射并輸出評(píng)審詞向量特征,實(shí)現(xiàn)評(píng)審輸出功能。但Encoder 壓縮輸出過程是有損壓縮過程,當(dāng)輸入序列長度過長時(shí)會(huì)導(dǎo)致上下文信息中部分特征信息損失。為了解決這一問題,向Seq2Seq模型引入Attention 機(jī)制減少由長序列到定長序列轉(zhuǎn)換時(shí)的信息損失。

        在Decoder 對(duì)特征編碼進(jìn)行解碼時(shí),使用Attention機(jī)制根據(jù)解碼位置信息對(duì)Encoder 提取的字符級(jí)局部數(shù)據(jù)特征重新進(jìn)行加權(quán),組成具有解碼位置權(quán)重信息的局部特征編碼。引入Attention 機(jī)制后,Seq2Seq 模型中Decoder 輸入量不再是單一的上下文信息,而是帶有序列轉(zhuǎn)換位置權(quán)重的上下文信息,進(jìn)而解決Seq2Seq模型在長序列轉(zhuǎn)換時(shí)的信息壓縮損失問題。但Attention機(jī)制應(yīng)用于評(píng)審輸出任務(wù)時(shí)仍存在一定不匹配問題。由于字符級(jí)局部特征無法決定整段評(píng)審特征的變化趨勢,Decoder 解碼過程中注意力不應(yīng)聚焦于單個(gè)代碼詞單元的局部特征上,應(yīng)該更加聚焦于由多個(gè)代碼詞單元組成的代碼段特征之上。因此,向Seq2Seq 模型中引入代碼段長度系數(shù)L,在進(jìn)行上下文信息的權(quán)重計(jì)算前,將長度系數(shù)為L 的字符級(jí)局部特征進(jìn)行數(shù)據(jù)融合,輸出代碼段級(jí)局部融合特征。將其代碼段級(jí)局部特征作為Attention 機(jī)制權(quán)重計(jì)算對(duì)象,重新計(jì)算分配權(quán)重給上下文信息,以提高模型整體感知域,改進(jìn)后的Seq2Seq 模型如圖2 所示。

        圖2 大感知域Seq2Seq 結(jié)構(gòu)圖Fig.2 Seq2Seq structural model with large perception

        首先對(duì)長度系數(shù)為L 的代碼段所包含的數(shù)據(jù)特征進(jìn)行數(shù)據(jù)融合處理得到代碼段級(jí)局部特征

        式中hk表示字符級(jí)局部特征。

        其次,計(jì)算解碼器特征與每一個(gè)代碼段級(jí)局部特征間的相關(guān)度

        式中sj表示解碼器第j 步預(yù)測出的詞向量。

        eij通過Softmax 函數(shù)映射至0~1,并作為代碼段級(jí)局部特征影響解碼器解碼輸出的權(quán)重aij,局部特征與解碼器特征間的相關(guān)度越大,局部特征的影響權(quán)重越大,aij表示如下

        經(jīng)過aij分配權(quán)重后,Decoder 得到代碼段級(jí)局部特征加權(quán)平均后的Encoder 隱藏層狀態(tài),并將其作為上下文信息,即

        改進(jìn)后的上下文信息Ci包含的注意力信息從字符級(jí)局部特征轉(zhuǎn)移至代碼段級(jí)局部特征中,進(jìn)而提升了模型輸出評(píng)審效果。

        2 實(shí)驗(yàn)與分析

        2.1 實(shí)驗(yàn)數(shù)據(jù)

        SARD 標(biāo)準(zhǔn)數(shù)據(jù)集[22]是國內(nèi)外代碼自動(dòng)評(píng)審領(lǐng)域廣泛應(yīng)用的公開數(shù)據(jù)庫。數(shù)據(jù)集覆蓋了13 660 個(gè)測試程序,40 031 個(gè)代碼評(píng)審樣本,105 類代碼缺陷漏洞。數(shù)據(jù)集中代碼缺陷漏洞通過“OMITBAD”進(jìn)行標(biāo)注,同時(shí)對(duì)漏洞進(jìn)行修復(fù)后的正確代碼段使用“OMITGOOD”進(jìn)行標(biāo)注,錯(cuò)誤代碼段中使用“POTENTIAL FLAW”對(duì)漏洞相關(guān)屬性進(jìn)行標(biāo)注,注釋對(duì)代碼缺陷漏洞可能產(chǎn)生的相關(guān)危害進(jìn)行了說明,可作為代碼評(píng)審數(shù)據(jù)。為了增強(qiáng)模型的泛化能力,向數(shù)據(jù)集中引入實(shí)際工程代碼作為數(shù)據(jù)集的補(bǔ)充,對(duì)實(shí)際工程代碼樣本進(jìn)行數(shù)據(jù)清洗及預(yù)分類,通過整理篩選最終得到28 936 份代碼缺陷及其評(píng)審文本數(shù)據(jù)。

        對(duì)所有數(shù)據(jù)集進(jìn)行標(biāo)準(zhǔn)化處理,文本統(tǒng)一為小寫數(shù)據(jù),并進(jìn)行分詞處理。經(jīng)過數(shù)據(jù)清洗后的數(shù)據(jù)集相較于原始數(shù)據(jù),其噪聲數(shù)據(jù)大幅減少,缺陷特征更加清晰,對(duì)應(yīng)特征之間相關(guān)度顯著增加。

        使用Word2Vec 進(jìn)行詞嵌入工作為實(shí)驗(yàn)做準(zhǔn)備,使用代碼數(shù)據(jù)與評(píng)審數(shù)據(jù)訓(xùn)練CBOW 模型?;瑒?dòng)窗口大小window 設(shè)置為5,詞最小出現(xiàn)數(shù)min_count 設(shè)置為5,分4 個(gè)線程,workers 設(shè)置為4 開始訓(xùn)練,訓(xùn)練完成后得到兩組Word2Vec 轉(zhuǎn)換模型,以對(duì)代碼和評(píng)審文本進(jìn)行重新編碼。

        為了統(tǒng)一數(shù)據(jù)格式,重新編碼過程中固定代碼段中最大代碼單元個(gè)數(shù)為500。對(duì)所有樣本按照4 ∶1 的比例劃分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,通過reshape函數(shù)將數(shù)據(jù)集格式整理至與網(wǎng)絡(luò)結(jié)構(gòu)格式相同后,將其輸入至神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練。

        2.2 實(shí)驗(yàn)環(huán)境

        搭建模型實(shí)驗(yàn)環(huán)境,軟件環(huán)境:windows10、CUDA 10.1+cudnn7.60、PyCharm2020.2 平臺(tái)、Tensorflow2.2、Keras2.4.3、Tensorboard2.2.2、nltk3.5、numpy1.18.5;硬件環(huán)境:AMD R7-4800H CPU@2.9 GHz、16 GB 內(nèi)存、NVIDIA GeForce GTX1650 GPU。

        模型參數(shù)設(shè)置:根據(jù)功能劃分將訓(xùn)練過程分為深層LSTM 訓(xùn)練與改進(jìn)的LSTM-Seq2Seq 模型訓(xùn)練。其中LSTM 隱藏層維度為256維,Dropout 設(shè)置為0.3,編譯模型使用Adma 優(yōu)化器,輸出層激活函數(shù)采用Softmax,損失函數(shù)使用交叉熵?fù)p失;Seq2Seq 模型中Encoder 與Decoder 使用雙層256 維LSTM 組成的循環(huán)神經(jīng)網(wǎng)絡(luò),使用Relu 作為激活函數(shù),編譯模型使用Adma 優(yōu)化器,使用均方差損失MSE 為損失函數(shù),完成配置,進(jìn)行回歸訓(xùn)練。

        經(jīng)過樣本數(shù)據(jù)訓(xùn)練,模型學(xué)習(xí)代碼缺陷特征與評(píng)審特征間的詞向量映射關(guān)系,可針對(duì)代碼缺陷特征進(jìn)行評(píng)審輸出。

        2.3 評(píng)價(jià)指標(biāo)

        首先,對(duì)模型缺陷檢測效果進(jìn)行質(zhì)量評(píng)價(jià),檢測效果好壞決定整個(gè)缺陷檢測方法是否處于可用狀態(tài),需通過評(píng)判指標(biāo)量化本方法的缺陷檢測效果?;煜仃囀菣C(jī)器學(xué)習(xí)領(lǐng)域通用的性能指標(biāo),可以直觀反映模型預(yù)測性能。通過計(jì)算得到準(zhǔn)確率Aaccuracy、召回率Rrecall和F1值等具體評(píng)估指標(biāo),對(duì)比模型在不同網(wǎng)絡(luò)參數(shù)下的訓(xùn)練效果。評(píng)估指標(biāo)計(jì)算方法如下

        式中:真陽性(TP,true positive)表示錯(cuò)誤代碼被判別為錯(cuò)誤的樣本個(gè)數(shù);真陰性(TN,true negative)表示正確代碼被判別為正確的樣本個(gè)數(shù);假陽性(FP,false positive)表示正確代碼被判別為錯(cuò)誤的樣本個(gè)數(shù);假陰性(FN,false negative)表示錯(cuò)誤代碼被判別為正確的樣本個(gè)數(shù)。使用與訓(xùn)練集無交集的數(shù)據(jù)集進(jìn)行測試,檢測準(zhǔn)確率和召回率高的網(wǎng)絡(luò)模型其泛化誤差較小,模型泛化能力較強(qiáng),預(yù)測結(jié)果置信度高。

        對(duì)模型評(píng)審輸出效果進(jìn)行質(zhì)量評(píng)價(jià)。詞嵌入向量是文本數(shù)據(jù)映射到高維向量空間的表示,詞向量之間的余弦相似度越大,其所表示的詞性、詞義越接近。因此,為了量化模型輸出的評(píng)審質(zhì)量,使用Word2Vec 編碼計(jì)算模型輸出評(píng)審與人工評(píng)審文本間的余弦相似度,以余弦相似度模擬模型輸出評(píng)審與代碼缺陷特征之間的相關(guān)程度[23],并作為模型輸出質(zhì)量的評(píng)判標(biāo)準(zhǔn)。關(guān)于文本相似度計(jì)算方法,可定義模型輸出評(píng)審的詞向量矩陣為

        專家經(jīng)驗(yàn)評(píng)審文本的詞向量矩陣為

        模型評(píng)審與人工評(píng)審詞向量單元之間的余弦相似度為

        式中mu、nv為高維詞向量。模型輸出評(píng)審與人工評(píng)審之間的文本相似度為

        式中Z 表示整數(shù)域。

        使用與訓(xùn)練集無交集的數(shù)據(jù)集對(duì)模型效果進(jìn)行測試,記錄模型評(píng)審與人工評(píng)審的文本相似度。

        2.4 實(shí)驗(yàn)結(jié)果與分析

        為了驗(yàn)證深層LSTM 網(wǎng)絡(luò)的有效性,使用SARD 標(biāo)準(zhǔn)數(shù)據(jù)集對(duì)模型性能進(jìn)行測試,在相同軟硬件與實(shí)驗(yàn)環(huán)境下與SySeVR[9]、TextCNN[14]、DCR[11]方法中使用到的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行對(duì)比。首先對(duì)不同網(wǎng)絡(luò)訓(xùn)練過程進(jìn)行對(duì)比分析,模型訓(xùn)練過程中驗(yàn)證集測試Loss 曲線如圖3所示。

        圖3 Loss 曲線Fig.3 Loss curve

        由圖3 可知,本文方法在訓(xùn)練過程中,前期Loss曲線下降較慢,但經(jīng)過長時(shí)間訓(xùn)練后,本文方法對(duì)數(shù)據(jù)集特征的學(xué)習(xí)效果較好,訓(xùn)練Loss 下降最低,模型與真實(shí)數(shù)據(jù)擬合程度較好。

        模型訓(xùn)練過程中驗(yàn)證準(zhǔn)確率變化曲線如圖4 所示,DCR 方法在訓(xùn)練過程中Loss 表現(xiàn)優(yōu)于SySeVR,但驗(yàn)證精度表現(xiàn)始終差于SySeVR。本文方法模型驗(yàn)證準(zhǔn)確率上升趨勢表現(xiàn)與其Loss 下降趨勢表現(xiàn)一致,由于其訓(xùn)練參數(shù)相對(duì)較多導(dǎo)致訓(xùn)練過程緩慢,但本文方法模型可以學(xué)習(xí)到代碼數(shù)據(jù)中更深層次的數(shù)據(jù)特征,從而將代碼漏洞特征進(jìn)行高維抽象表示并提取映射至輸出層,進(jìn)而在驗(yàn)證準(zhǔn)確率方面表現(xiàn)最好。本文方法在訓(xùn)練過程中,模型驗(yàn)證準(zhǔn)確率穩(wěn)步上升達(dá)到了93.60%,高于對(duì)比方法的代碼缺陷檢測模型。

        圖4 驗(yàn)證準(zhǔn)確率Fig.4 Verification accuracy rate

        本文方法在檢測到代碼缺陷后可對(duì)其輸出評(píng)審意見,需比較不同模型在評(píng)審輸出任務(wù)中的性能表現(xiàn),經(jīng)過SARD 標(biāo)準(zhǔn)測試集測試后不同方法性能表現(xiàn)如表2 所示。

        表2 不同方法缺陷檢測效果對(duì)比Tab.2 Comparison of defect detection effect for different methods

        SySeVR、TextCNN、DCR 在對(duì)代碼缺陷進(jìn)行檢測的任務(wù)中取得了較好的效果,但未能對(duì)缺陷特征進(jìn)一步分析并輸出評(píng)審建議。Seq2Seq 模型在代碼缺陷檢測任務(wù)中實(shí)現(xiàn)了輸出評(píng)審建議的功能,由于組成編碼器、解碼器的網(wǎng)絡(luò)結(jié)構(gòu)不同,模型運(yùn)行效果存在差距。在實(shí)驗(yàn)過程中基于傳統(tǒng)RNN(recurrent neural network)網(wǎng)絡(luò)的Seq2Seq 模型,訓(xùn)練參數(shù)表現(xiàn)穩(wěn)定整體波動(dòng)較小,基于GRU(gate recurrent unit)[24]網(wǎng)絡(luò)的Seq2Seq 模型訓(xùn)練速度相對(duì)較快。但從實(shí)驗(yàn)結(jié)果來看,基于LSTM 網(wǎng)絡(luò)的Seq2Seq 模型在評(píng)審文本相似度方面的表現(xiàn)明顯優(yōu)于基于傳統(tǒng)RNN 網(wǎng)絡(luò)和GRU 網(wǎng)絡(luò)的Seq2Seq 模型,LSTM 3 個(gè)門控單元在訓(xùn)練過程中對(duì)數(shù)據(jù)特征的分篩、吸納更加靈活,LSTM 網(wǎng)絡(luò)相較于其他循環(huán)神經(jīng)網(wǎng)絡(luò)在本文方法中應(yīng)用優(yōu)勢更加明顯。因此,本文方法以LSTM-Seq2Seq 模型為基礎(chǔ),針對(duì)代碼數(shù)據(jù)特征對(duì)Seq2Seq 模型進(jìn)行改進(jìn),改進(jìn)后的模型對(duì)長序列代碼漏洞特征輸出評(píng)審時(shí)有更好的性能表現(xiàn)。

        通過與現(xiàn)有代碼缺陷檢測方法比較,本文方法可對(duì)源代碼中隱含的代碼缺陷進(jìn)行檢測分析并輸出評(píng)審建議,模型對(duì)安全性缺陷進(jìn)行分析并輸出的評(píng)審結(jié)果與專家先驗(yàn)知識(shí)相似度為76.37%。由于模型不確定性與數(shù)據(jù)不確定性的干擾增大了部分評(píng)審結(jié)果的不確定度,為了減小數(shù)據(jù)不確定度對(duì)模型測試性能的影響,最終在測試集中人工篩選了具有典型缺陷特征的評(píng)審樣本對(duì)模型評(píng)審輸出性能進(jìn)行驗(yàn)證,選取漏洞類型包括SQL 注入、CWE122、CWE-114 等。模型對(duì)人工篩選出的典型代碼缺陷樣本進(jìn)行評(píng)審,其輸出評(píng)審文本與專家評(píng)審文本相似度達(dá)85.99%。

        根據(jù)測試結(jié)果,本文方法可以有效地幫助評(píng)審人員確定缺陷類型,快速完成評(píng)審工作,與現(xiàn)有基于深度學(xué)習(xí)的代碼缺陷檢測方法相比,其在對(duì)評(píng)審結(jié)果進(jìn)行分析驗(yàn)證的過程中減少了對(duì)專家經(jīng)驗(yàn)意見的依賴。

        3 結(jié)語

        本文針對(duì)現(xiàn)有代碼缺陷檢測方法無法輸出評(píng)審建議的問題,提出了一種改進(jìn)的代碼缺陷檢測方法。該方法基于大感知域注意力機(jī)制LSTM-Seq2Seq 模型建立代碼缺陷檢測模型,實(shí)現(xiàn)對(duì)未知代碼的缺陷檢測和輸出評(píng)審功能。該方法基于SARD 數(shù)據(jù)集與實(shí)際評(píng)審樣本進(jìn)行訓(xùn)練,基于SARD 標(biāo)準(zhǔn)測試集測試,模型對(duì)代碼安全性缺陷檢測準(zhǔn)確率達(dá)92.50%,召回率達(dá)87.20%,F(xiàn)1評(píng)估參數(shù)達(dá)87.60%,達(dá)到了較高的水平。缺陷檢測模型對(duì)具有典型缺陷特征的代碼樣本進(jìn)行測試,輸出的評(píng)審文本與專家評(píng)審的文本相似度達(dá)到85.99%。測試結(jié)果表明代碼缺陷特征與評(píng)審特征間具有顯著的相關(guān)關(guān)系,且深度網(wǎng)絡(luò)模型可以通過訓(xùn)練建立其數(shù)據(jù)特征及映射關(guān)系,輸出評(píng)審建議。

        本文方法在評(píng)審輸出方向改進(jìn)了現(xiàn)有的代碼缺陷檢測方法,在實(shí)際應(yīng)用中能輔助評(píng)審人員提高評(píng)審效率。在訓(xùn)練及測試驗(yàn)證過程中發(fā)現(xiàn),訓(xùn)練數(shù)據(jù)對(duì)代碼安全性缺陷數(shù)據(jù)特征的覆蓋不夠完整,實(shí)際評(píng)審樣本中存在噪聲數(shù)據(jù),導(dǎo)致模型結(jié)果產(chǎn)生了模型與數(shù)據(jù)的不確定性,且無法對(duì)不確定度進(jìn)行準(zhǔn)確評(píng)估。接下來,考慮將Seq2Seq 模型與貝葉斯神經(jīng)網(wǎng)絡(luò)相結(jié)合計(jì)算評(píng)審置信度,以更好地輔助評(píng)審人員展開代碼評(píng)審。

        猜你喜歡
        代碼樣本特征
        用樣本估計(jì)總體復(fù)習(xí)點(diǎn)撥
        如何表達(dá)“特征”
        不忠誠的四個(gè)特征
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        推動(dòng)醫(yī)改的“直銷樣本”
        抓住特征巧觀察
        隨機(jī)微分方程的樣本Lyapunov二次型估計(jì)
        黄色中文字幕视频网站| 久久中文字幕人妻熟av女蜜柚m| 香蕉视频毛片| 国产人妖在线免费观看| 国产自拍在线观看视频| 大屁股人妻女教师撅着屁股| 日本动态120秒免费| 精品人妻av一区二区三区不卡| 色播视频在线观看麻豆 | 天堂а√在线最新版中文在线| 精品久久久久久久无码| 特级毛片a级毛片在线播放www| 成av人大片免费看的网站| 精品成在人线av无码免费看| 亚洲天堂2017无码中文| 国产成人综合久久三区北岛玲| 最新国产女主播在线观看| 国产乱人激情h在线观看| 波多野结衣国产一区二区三区| 国产精品三级自产拍av| 国产一级内射视频在线观看| 国产av无码专区亚洲av极速版| 国产福利小视频在线观看| 成人免费毛片立即播放| 精品国品一二三产品区别在线观看| 女人做爰高潮呻吟17分钟| 无码久久精品蜜桃| 亚洲视频在线观看一区二区三区| 国产色在线 | 亚洲| 国产在线网址| 亚洲大胆美女人体一二三区| 精品综合久久久久久888蜜芽| 毛茸茸性xxxx毛茸茸毛茸茸| av熟女一区二区久久| 日韩精品一区二区三区在线视频| 无码一区二区三区在线 | 国产日本精品一二三四区| 青草视频在线播放| 久久青草国产免费观看| 国产一区二区黄色网页| 精品乱码久久久久久久|