王鵬,姚鑫鵬,汪克念,陳文琪,陳曦
(1.中國民航大學a.安全科學與工程學院;b.中歐航空工程師學院,天津 300300;2.民航航空器適航審定技術(shù)重點實驗室,天津 300300)
隨著軟件規(guī)模與復雜度不斷增加,軟件缺陷導致的系統(tǒng)失效風險不斷提升。系統(tǒng)在執(zhí)行任務(wù)過程中存在的失效風險可能會引起災(zāi)難性后果。這一情況在民用航空領(lǐng)域尤為突出。為了在軟件投入使用前查找并改正代碼中存在的缺陷,需對軟件代碼的需求符合性、可驗證性、正確性、一致性等進行評審分析[1-2]。目前,代碼評審[3]主要可以分為人工評審和自動評審兩個方向。
對于人工評審過程[4],評審專家會檢查軟件代碼是否存在資源競爭、內(nèi)存泄漏、緩沖區(qū)溢出和結(jié)構(gòu)化查詢語言(SQL,structured query language)注入等安全性缺陷。因此,評審過程十分依賴專家經(jīng)驗。由于不同專家的知識領(lǐng)域、活躍度、對評審項目的熟悉程度不盡相同,從而導致項目評審效果參差不齊,且基于專家經(jīng)驗的代碼評審過程存在效率低、工作量大等問題[5],這嚴重影響了軟件項目的評審效果。為了提高評審效果,研究者們不斷優(yōu)化搜索算法以推薦最優(yōu)的項目評審人員。文獻[6]提出一種基于貝葉斯個性化排序的BPR-CR2 評審者推薦模型,模型分析了4 種可能會影響評審者評審意愿的因素,在先驗知識條件下極大化后驗概率,以推薦最適合的評審人員。文獻[7]提出一種效力優(yōu)化的代碼評審者推薦模型,通過計算歷史評審者的時間效力與內(nèi)容效力來推薦合適的代碼評審人員。上述方法旨在通過優(yōu)化搜索算法來推薦合適的評審人員,以提高代碼評審效率,但未能減少評審人員的實際工作量。
隨著深度學習技術(shù)的發(fā)展,尤其是在自然語言處理領(lǐng)域取得的成就,使其在代碼評審領(lǐng)域的應(yīng)用變?yōu)榭赡?。代碼本身作為一種語言,有準確的語法規(guī)則,其語料庫與自然語言語料庫有相似的統(tǒng)計特性[8],同類代碼缺陷在代碼結(jié)構(gòu)及數(shù)據(jù)流上具有一定的相似特征,可使用深度學習算法挖掘代碼樣本中的安全性缺陷特征[9-10]。文獻[11]提出一種代碼分析方法,該方法以代碼段與缺陷檢測數(shù)據(jù)為輸入,訓練深度網(wǎng)絡(luò)模型,獲取代碼編碼規(guī)則與評審建議特征,并基于評審數(shù)據(jù)庫輸出評審建議。文獻[12]使用查重工具在Stack Overflow 網(wǎng)站上查找與被審代碼相似的代碼段,然后通過計算文本相似度得到代碼缺陷估量,以此來計算代碼缺陷概率。上述方法計算的缺陷概率與兩段代碼相似度有關(guān),通過檢測算法輸出的評審建議與缺陷概率無法直接反映代碼缺陷類型。文獻[13-14]提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的源代碼缺陷檢測方法,可以挖掘代碼中蘊含的缺陷特征,完成代碼缺陷檢測工作以實現(xiàn)代碼自動缺陷檢測。但該方法不能輸出與代碼缺陷特征相關(guān)的評審建議,達不到幫助評審人員實現(xiàn)快速評審的目的。
因此,目前自動代碼評審方法存在的問題主要可以歸結(jié)為:在代碼評審過程中,現(xiàn)有模型或方法僅對源代碼缺陷進行檢測,不能自動化地對代碼缺陷特征進行分析并給出專家建議,導致在后續(xù)修復代碼缺陷的工作中,仍需依靠大量基于人工評判的專家經(jīng)驗對模型輸出結(jié)果進行驗證。
為解決以上問題,本文提出了一種基于長短期記憶網(wǎng)絡(luò)[15](LSTM,long short-term memory)與序列到序列模型[16](Seq2Seq,sequence to sequence)的代碼缺陷檢測方法。該方法相較于傳統(tǒng)代碼缺陷檢測方法,采用深層LSTM 來學習數(shù)據(jù)集中的代碼缺陷特征與評審建議特征,首次提出基于大感知域的Seq2Seq 模型來建立代碼與評審特征間的映射關(guān)系,從而實現(xiàn)對未知代碼段缺陷的檢測、分析和輸出評審建議等功能,以輔助評審人員展開代碼評審工作。
本文通過改進LSTM-Seq2Seq 模型結(jié)構(gòu),提升模型對代碼缺陷深層特征的捕獲能力與感知域,并將其應(yīng)用于代碼缺陷檢測任務(wù)中,建立代碼缺陷自動檢測模型。該模型可在代碼變更評審[17]、代碼整體評審過程中輔助評審人員實現(xiàn)快速評審。本文方法流程圖如圖1 所示,主要流程包括數(shù)據(jù)清洗、詞嵌入處理、模型訓練3 部分。首先,通過數(shù)據(jù)清洗模塊去除數(shù)據(jù)集中的噪聲數(shù)據(jù)。其次,對數(shù)據(jù)集進行詞嵌入處理,得到相應(yīng)的詞嵌入模型,模型將文本數(shù)據(jù)轉(zhuǎn)換為詞向量數(shù)據(jù)以訓練深度網(wǎng)絡(luò)模型。最后,采用深層LSTM 網(wǎng)絡(luò)學習代碼缺陷的數(shù)據(jù)特征與評審建議的數(shù)據(jù)特征,基于Seq2Seq框架建立代碼缺陷特征與評審建議特征間的映射關(guān)系,實現(xiàn)評審輸出功能。經(jīng)過訓練的深度網(wǎng)絡(luò)模型可實現(xiàn)檢測代碼中的缺陷漏洞并給出相應(yīng)評審建議的功能。本文整體架構(gòu)基于C 代碼數(shù)據(jù)集實現(xiàn),針對不同編程語言的代碼評審,該方法整體框架不變,可用以解決現(xiàn)有方法中存在的問題。
圖1 方法流程圖Fig.1 The framework of proposed method
循環(huán)神經(jīng)網(wǎng)絡(luò)建立數(shù)據(jù)特征與特征間映射關(guān)系的關(guān)鍵在于網(wǎng)絡(luò)模型能夠?qū)W習文本的上下文關(guān)系,挖掘其中的數(shù)據(jù)特征,數(shù)據(jù)集質(zhì)量嚴重影響著模型最終的缺陷檢測效果。SARD 數(shù)據(jù)集中存在大量注釋信息,實際評審案例中部分樣本被用于描述工具版本迭代或代碼結(jié)構(gòu)優(yōu)化,與代碼缺陷無關(guān)。本文方法為突出數(shù)據(jù)集中代碼缺陷與評審建議特征,首先對數(shù)據(jù)集中的噪聲數(shù)據(jù)進行清洗。數(shù)據(jù)清洗過程分為內(nèi)容清洗與樣本清洗,即分別對單個樣本包含的噪聲數(shù)據(jù)和數(shù)據(jù)集中的噪聲樣本進行清洗。針對數(shù)據(jù)集中存在的噪聲特征編寫數(shù)據(jù)清洗需求如表1 所示。
表1 數(shù)據(jù)清洗需求表Tab.1 Requirement table of data cleaning
針對每一條數(shù)據(jù)清洗需求,基于正則表達式編寫其相應(yīng)的數(shù)據(jù)清洗算法。正則表達式是對字符進行檢索、替換的一種邏輯公式,對噪聲數(shù)據(jù)特征建立約束條件,基于約束條件檢索并刪除數(shù)據(jù)集中的噪聲數(shù)據(jù),以實現(xiàn)數(shù)據(jù)清洗功能。根據(jù)數(shù)據(jù)清洗需求編寫算法時,需結(jié)合被清洗語言的編碼規(guī)則進行編寫,同時需考慮編程語言編碼規(guī)則的差異性,本文方法中清洗算法以C 代碼編碼規(guī)則為基礎(chǔ)進行編寫。
使用Word2Vec[18-19]技術(shù)對數(shù)據(jù)集進行詞嵌入處理,在自然語言處理過程中,神經(jīng)網(wǎng)絡(luò)通過訓練實現(xiàn)對文本的分析任務(wù)。Word2Vec 的兩種算法模型分別為跳元模型(skip-gram)和連續(xù)詞袋模型(CBOW,continuous big-of-words):skip-gram 模型以一個詞單元為輸入預測其上下文關(guān)系,此訓練方法對低頻詞的訓練效果較好,但訓練過程相對緩慢;CBOW 模型以詞單元的上下文關(guān)系為輸入預測詞單元本身,模型訓練速度較快[20]。本文使用的代碼集與評審集屬于代碼評審領(lǐng)域語料庫,低頻詞占比較小,因此使用訓練速度較快的CBOW 模型對語料庫進行無監(jiān)督訓練。
傳統(tǒng)LSTM 網(wǎng)絡(luò)由于其短期性問題,對學習長代碼序列數(shù)據(jù)的深層特征仍存在一定局限性,因此本文使用一種深層LSTM 網(wǎng)絡(luò)結(jié)構(gòu)來學習代碼缺陷數(shù)據(jù)集的深層數(shù)據(jù)特征,以實現(xiàn)更好的長序列特征記憶效果。
輸入層Input 后連接3 層LSTM,每層LSTM 后連接Dropout 層提高模型泛化能力,第3 層Dropout 后連接Dense 全連接層實現(xiàn)分類訓練。使用深層LSTM 學習代碼缺陷特征,實現(xiàn)代碼缺陷檢測功能,深層LSTM相較于單層LSTM 可建立更加復雜的特征表示,從而對深層復雜特征有更好的提取效果。
為了解決傳統(tǒng)Seq2Seq 模型在回歸任務(wù)中信息壓縮損失問題與注意力(Attention)機制[21]在代碼評審項目中的感知域過于集中的問題,提出了一種基于大感知域注意力機制的Seq2Seq 模型,建立代碼缺陷特征與評審建議間的映射關(guān)系,以實現(xiàn)輸出評審建議功能。
Seq2Seq 模型是一種由編碼器(Encoder)和譯碼器(Decoder)組成,實現(xiàn)序列到序列轉(zhuǎn)換的深度網(wǎng)絡(luò)模型。
Encoder 對代碼詞向量特征進行提取、壓縮并輸出至隱藏層狀態(tài),作為上下文信息C。Decoder 讀入上下文信息C,進行解碼、映射并輸出評審詞向量特征,實現(xiàn)評審輸出功能。但Encoder 壓縮輸出過程是有損壓縮過程,當輸入序列長度過長時會導致上下文信息中部分特征信息損失。為了解決這一問題,向Seq2Seq模型引入Attention 機制減少由長序列到定長序列轉(zhuǎn)換時的信息損失。
在Decoder 對特征編碼進行解碼時,使用Attention機制根據(jù)解碼位置信息對Encoder 提取的字符級局部數(shù)據(jù)特征重新進行加權(quán),組成具有解碼位置權(quán)重信息的局部特征編碼。引入Attention 機制后,Seq2Seq 模型中Decoder 輸入量不再是單一的上下文信息,而是帶有序列轉(zhuǎn)換位置權(quán)重的上下文信息,進而解決Seq2Seq模型在長序列轉(zhuǎn)換時的信息壓縮損失問題。但Attention機制應(yīng)用于評審輸出任務(wù)時仍存在一定不匹配問題。由于字符級局部特征無法決定整段評審特征的變化趨勢,Decoder 解碼過程中注意力不應(yīng)聚焦于單個代碼詞單元的局部特征上,應(yīng)該更加聚焦于由多個代碼詞單元組成的代碼段特征之上。因此,向Seq2Seq 模型中引入代碼段長度系數(shù)L,在進行上下文信息的權(quán)重計算前,將長度系數(shù)為L 的字符級局部特征進行數(shù)據(jù)融合,輸出代碼段級局部融合特征。將其代碼段級局部特征作為Attention 機制權(quán)重計算對象,重新計算分配權(quán)重給上下文信息,以提高模型整體感知域,改進后的Seq2Seq 模型如圖2 所示。
圖2 大感知域Seq2Seq 結(jié)構(gòu)圖Fig.2 Seq2Seq structural model with large perception
首先對長度系數(shù)為L 的代碼段所包含的數(shù)據(jù)特征進行數(shù)據(jù)融合處理得到代碼段級局部特征
式中hk表示字符級局部特征。
其次,計算解碼器特征與每一個代碼段級局部特征間的相關(guān)度
式中sj表示解碼器第j 步預測出的詞向量。
eij通過Softmax 函數(shù)映射至0~1,并作為代碼段級局部特征影響解碼器解碼輸出的權(quán)重aij,局部特征與解碼器特征間的相關(guān)度越大,局部特征的影響權(quán)重越大,aij表示如下
經(jīng)過aij分配權(quán)重后,Decoder 得到代碼段級局部特征加權(quán)平均后的Encoder 隱藏層狀態(tài),并將其作為上下文信息,即
改進后的上下文信息Ci包含的注意力信息從字符級局部特征轉(zhuǎn)移至代碼段級局部特征中,進而提升了模型輸出評審效果。
SARD 標準數(shù)據(jù)集[22]是國內(nèi)外代碼自動評審領(lǐng)域廣泛應(yīng)用的公開數(shù)據(jù)庫。數(shù)據(jù)集覆蓋了13 660 個測試程序,40 031 個代碼評審樣本,105 類代碼缺陷漏洞。數(shù)據(jù)集中代碼缺陷漏洞通過“OMITBAD”進行標注,同時對漏洞進行修復后的正確代碼段使用“OMITGOOD”進行標注,錯誤代碼段中使用“POTENTIAL FLAW”對漏洞相關(guān)屬性進行標注,注釋對代碼缺陷漏洞可能產(chǎn)生的相關(guān)危害進行了說明,可作為代碼評審數(shù)據(jù)。為了增強模型的泛化能力,向數(shù)據(jù)集中引入實際工程代碼作為數(shù)據(jù)集的補充,對實際工程代碼樣本進行數(shù)據(jù)清洗及預分類,通過整理篩選最終得到28 936 份代碼缺陷及其評審文本數(shù)據(jù)。
對所有數(shù)據(jù)集進行標準化處理,文本統(tǒng)一為小寫數(shù)據(jù),并進行分詞處理。經(jīng)過數(shù)據(jù)清洗后的數(shù)據(jù)集相較于原始數(shù)據(jù),其噪聲數(shù)據(jù)大幅減少,缺陷特征更加清晰,對應(yīng)特征之間相關(guān)度顯著增加。
使用Word2Vec 進行詞嵌入工作為實驗做準備,使用代碼數(shù)據(jù)與評審數(shù)據(jù)訓練CBOW 模型?;瑒哟翱诖笮indow 設(shè)置為5,詞最小出現(xiàn)數(shù)min_count 設(shè)置為5,分4 個線程,workers 設(shè)置為4 開始訓練,訓練完成后得到兩組Word2Vec 轉(zhuǎn)換模型,以對代碼和評審文本進行重新編碼。
為了統(tǒng)一數(shù)據(jù)格式,重新編碼過程中固定代碼段中最大代碼單元個數(shù)為500。對所有樣本按照4 ∶1 的比例劃分為訓練數(shù)據(jù)集和測試數(shù)據(jù)集,通過reshape函數(shù)將數(shù)據(jù)集格式整理至與網(wǎng)絡(luò)結(jié)構(gòu)格式相同后,將其輸入至神經(jīng)網(wǎng)絡(luò)中進行訓練。
搭建模型實驗環(huán)境,軟件環(huán)境:windows10、CUDA 10.1+cudnn7.60、PyCharm2020.2 平臺、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ù)功能劃分將訓練過程分為深層LSTM 訓練與改進的LSTM-Seq2Seq 模型訓練。其中LSTM 隱藏層維度為256維,Dropout 設(shè)置為0.3,編譯模型使用Adma 優(yōu)化器,輸出層激活函數(shù)采用Softmax,損失函數(shù)使用交叉熵損失;Seq2Seq 模型中Encoder 與Decoder 使用雙層256 維LSTM 組成的循環(huán)神經(jīng)網(wǎng)絡(luò),使用Relu 作為激活函數(shù),編譯模型使用Adma 優(yōu)化器,使用均方差損失MSE 為損失函數(shù),完成配置,進行回歸訓練。
經(jīng)過樣本數(shù)據(jù)訓練,模型學習代碼缺陷特征與評審特征間的詞向量映射關(guān)系,可針對代碼缺陷特征進行評審輸出。
首先,對模型缺陷檢測效果進行質(zhì)量評價,檢測效果好壞決定整個缺陷檢測方法是否處于可用狀態(tài),需通過評判指標量化本方法的缺陷檢測效果。混淆矩陣是機器學習領(lǐng)域通用的性能指標,可以直觀反映模型預測性能。通過計算得到準確率Aaccuracy、召回率Rrecall和F1值等具體評估指標,對比模型在不同網(wǎng)絡(luò)參數(shù)下的訓練效果。評估指標計算方法如下
式中:真陽性(TP,true positive)表示錯誤代碼被判別為錯誤的樣本個數(shù);真陰性(TN,true negative)表示正確代碼被判別為正確的樣本個數(shù);假陽性(FP,false positive)表示正確代碼被判別為錯誤的樣本個數(shù);假陰性(FN,false negative)表示錯誤代碼被判別為正確的樣本個數(shù)。使用與訓練集無交集的數(shù)據(jù)集進行測試,檢測準確率和召回率高的網(wǎng)絡(luò)模型其泛化誤差較小,模型泛化能力較強,預測結(jié)果置信度高。
對模型評審輸出效果進行質(zhì)量評價。詞嵌入向量是文本數(shù)據(jù)映射到高維向量空間的表示,詞向量之間的余弦相似度越大,其所表示的詞性、詞義越接近。因此,為了量化模型輸出的評審質(zhì)量,使用Word2Vec 編碼計算模型輸出評審與人工評審文本間的余弦相似度,以余弦相似度模擬模型輸出評審與代碼缺陷特征之間的相關(guān)程度[23],并作為模型輸出質(zhì)量的評判標準。關(guān)于文本相似度計算方法,可定義模型輸出評審的詞向量矩陣為
專家經(jīng)驗評審文本的詞向量矩陣為
模型評審與人工評審詞向量單元之間的余弦相似度為
式中mu、nv為高維詞向量。模型輸出評審與人工評審之間的文本相似度為
式中Z 表示整數(shù)域。
使用與訓練集無交集的數(shù)據(jù)集對模型效果進行測試,記錄模型評審與人工評審的文本相似度。
為了驗證深層LSTM 網(wǎng)絡(luò)的有效性,使用SARD 標準數(shù)據(jù)集對模型性能進行測試,在相同軟硬件與實驗環(huán)境下與SySeVR[9]、TextCNN[14]、DCR[11]方法中使用到的網(wǎng)絡(luò)結(jié)構(gòu)進行對比。首先對不同網(wǎng)絡(luò)訓練過程進行對比分析,模型訓練過程中驗證集測試Loss 曲線如圖3所示。
圖3 Loss 曲線Fig.3 Loss curve
由圖3 可知,本文方法在訓練過程中,前期Loss曲線下降較慢,但經(jīng)過長時間訓練后,本文方法對數(shù)據(jù)集特征的學習效果較好,訓練Loss 下降最低,模型與真實數(shù)據(jù)擬合程度較好。
模型訓練過程中驗證準確率變化曲線如圖4 所示,DCR 方法在訓練過程中Loss 表現(xiàn)優(yōu)于SySeVR,但驗證精度表現(xiàn)始終差于SySeVR。本文方法模型驗證準確率上升趨勢表現(xiàn)與其Loss 下降趨勢表現(xiàn)一致,由于其訓練參數(shù)相對較多導致訓練過程緩慢,但本文方法模型可以學習到代碼數(shù)據(jù)中更深層次的數(shù)據(jù)特征,從而將代碼漏洞特征進行高維抽象表示并提取映射至輸出層,進而在驗證準確率方面表現(xiàn)最好。本文方法在訓練過程中,模型驗證準確率穩(wěn)步上升達到了93.60%,高于對比方法的代碼缺陷檢測模型。
圖4 驗證準確率Fig.4 Verification accuracy rate
本文方法在檢測到代碼缺陷后可對其輸出評審意見,需比較不同模型在評審輸出任務(wù)中的性能表現(xiàn),經(jīng)過SARD 標準測試集測試后不同方法性能表現(xiàn)如表2 所示。
表2 不同方法缺陷檢測效果對比Tab.2 Comparison of defect detection effect for different methods
SySeVR、TextCNN、DCR 在對代碼缺陷進行檢測的任務(wù)中取得了較好的效果,但未能對缺陷特征進一步分析并輸出評審建議。Seq2Seq 模型在代碼缺陷檢測任務(wù)中實現(xiàn)了輸出評審建議的功能,由于組成編碼器、解碼器的網(wǎng)絡(luò)結(jié)構(gòu)不同,模型運行效果存在差距。在實驗過程中基于傳統(tǒng)RNN(recurrent neural network)網(wǎng)絡(luò)的Seq2Seq 模型,訓練參數(shù)表現(xiàn)穩(wěn)定整體波動較小,基于GRU(gate recurrent unit)[24]網(wǎng)絡(luò)的Seq2Seq 模型訓練速度相對較快。但從實驗結(jié)果來看,基于LSTM 網(wǎng)絡(luò)的Seq2Seq 模型在評審文本相似度方面的表現(xiàn)明顯優(yōu)于基于傳統(tǒng)RNN 網(wǎng)絡(luò)和GRU 網(wǎng)絡(luò)的Seq2Seq 模型,LSTM 3 個門控單元在訓練過程中對數(shù)據(jù)特征的分篩、吸納更加靈活,LSTM 網(wǎng)絡(luò)相較于其他循環(huán)神經(jīng)網(wǎng)絡(luò)在本文方法中應(yīng)用優(yōu)勢更加明顯。因此,本文方法以LSTM-Seq2Seq 模型為基礎(chǔ),針對代碼數(shù)據(jù)特征對Seq2Seq 模型進行改進,改進后的模型對長序列代碼漏洞特征輸出評審時有更好的性能表現(xiàn)。
通過與現(xiàn)有代碼缺陷檢測方法比較,本文方法可對源代碼中隱含的代碼缺陷進行檢測分析并輸出評審建議,模型對安全性缺陷進行分析并輸出的評審結(jié)果與專家先驗知識相似度為76.37%。由于模型不確定性與數(shù)據(jù)不確定性的干擾增大了部分評審結(jié)果的不確定度,為了減小數(shù)據(jù)不確定度對模型測試性能的影響,最終在測試集中人工篩選了具有典型缺陷特征的評審樣本對模型評審輸出性能進行驗證,選取漏洞類型包括SQL 注入、CWE122、CWE-114 等。模型對人工篩選出的典型代碼缺陷樣本進行評審,其輸出評審文本與專家評審文本相似度達85.99%。
根據(jù)測試結(jié)果,本文方法可以有效地幫助評審人員確定缺陷類型,快速完成評審工作,與現(xiàn)有基于深度學習的代碼缺陷檢測方法相比,其在對評審結(jié)果進行分析驗證的過程中減少了對專家經(jīng)驗意見的依賴。
本文針對現(xiàn)有代碼缺陷檢測方法無法輸出評審建議的問題,提出了一種改進的代碼缺陷檢測方法。該方法基于大感知域注意力機制LSTM-Seq2Seq 模型建立代碼缺陷檢測模型,實現(xiàn)對未知代碼的缺陷檢測和輸出評審功能。該方法基于SARD 數(shù)據(jù)集與實際評審樣本進行訓練,基于SARD 標準測試集測試,模型對代碼安全性缺陷檢測準確率達92.50%,召回率達87.20%,F(xiàn)1評估參數(shù)達87.60%,達到了較高的水平。缺陷檢測模型對具有典型缺陷特征的代碼樣本進行測試,輸出的評審文本與專家評審的文本相似度達到85.99%。測試結(jié)果表明代碼缺陷特征與評審特征間具有顯著的相關(guān)關(guān)系,且深度網(wǎng)絡(luò)模型可以通過訓練建立其數(shù)據(jù)特征及映射關(guān)系,輸出評審建議。
本文方法在評審輸出方向改進了現(xiàn)有的代碼缺陷檢測方法,在實際應(yīng)用中能輔助評審人員提高評審效率。在訓練及測試驗證過程中發(fā)現(xiàn),訓練數(shù)據(jù)對代碼安全性缺陷數(shù)據(jù)特征的覆蓋不夠完整,實際評審樣本中存在噪聲數(shù)據(jù),導致模型結(jié)果產(chǎn)生了模型與數(shù)據(jù)的不確定性,且無法對不確定度進行準確評估。接下來,考慮將Seq2Seq 模型與貝葉斯神經(jīng)網(wǎng)絡(luò)相結(jié)合計算評審置信度,以更好地輔助評審人員展開代碼評審。