本發(fā)明屬于軟件缺陷預(yù)測領(lǐng)域,具體涉及一種基于代碼克隆分析的自動駕駛軟件缺陷預(yù)測方法及系統(tǒng)。
背景技術(shù):
1、近年來,隨著軟件系統(tǒng)復(fù)雜度的不斷增加,軟件缺陷預(yù)測技術(shù)已成為軟件工程研究的重點領(lǐng)域。傳統(tǒng)的軟件缺陷預(yù)測方法主要依賴于靜態(tài)代碼分析和軟件度量,如圈復(fù)雜度、代碼行數(shù)等,對軟件進(jìn)行多粒度(如模塊、方法、類)的缺陷預(yù)測分析。這些方法通常采用決策樹、支持向量機、邏輯回歸、樸素貝葉斯等機器學(xué)習(xí)算法。然而,這些傳統(tǒng)方法在處理大規(guī)模、高復(fù)雜度的軟件系統(tǒng)時往往顯得力不從心。
2、隨著人工智能技術(shù)的快速發(fā)展,自動駕駛成為科技領(lǐng)域的焦點。自動駕駛軟件作為一個典型的大規(guī)模、高復(fù)雜度、安全攸關(guān)的軟件系統(tǒng),其質(zhì)量直接關(guān)系到人身安全和財產(chǎn)安全。然而,自動駕駛軟件同樣面臨著軟件缺陷的挑戰(zhàn)。隨著其規(guī)模和復(fù)雜度的不斷增加,軟件維護(hù)的難度也隨之上升。在開發(fā)迭代過程中,軟件缺陷的產(chǎn)生似乎不可避免,而這些缺陷可能導(dǎo)致災(zāi)難性后果,且修復(fù)成本高昂。
3、在軟件開發(fā)中,復(fù)制現(xiàn)有的代碼片段并將它們粘貼到代碼的其他部分中是一種常見的行為,是代碼重用的一種體現(xiàn),復(fù)制的代碼稱為代碼克隆。已有研究表明,自動駕駛軟件中代碼克隆占比高達(dá)20%。雖然代碼克隆可以提高開發(fā)效率,但也會在一定程度上影響軟件質(zhì)量。然而,現(xiàn)有的缺陷預(yù)測方法很少考慮代碼克隆對軟件缺陷的影響。
4、此外,傳統(tǒng)的缺陷預(yù)測方法大多針對粗粒度的軟件單元,這在實際應(yīng)用中可能會耗費開發(fā)者大量的時間和精力進(jìn)行缺陷定位。而更細(xì)粒度的預(yù)測(如文件級別)雖然可以提高精確度,但如何在保證預(yù)測準(zhǔn)確性的同時提高效率仍是一個挑戰(zhàn)。
技術(shù)實現(xiàn)思路
1、本發(fā)明要解決的技術(shù)問題是:提供一種基于代碼克隆分析的自動駕駛軟件缺陷預(yù)測方法及系統(tǒng),能夠更精準(zhǔn)地定位缺陷,同時保證度量提取的便利性。
2、本發(fā)明為解決上述技術(shù)問題所采取的技術(shù)方案為:
3、作為本發(fā)明的第一方面,本發(fā)明提供一種基于代碼克隆分析的自動駕駛軟件缺陷預(yù)測方法,包括:
4、將缺陷預(yù)測對象克隆到本地;缺陷預(yù)測對象為自動駕駛軟件;
5、提取缺陷預(yù)測對象中的軟件度量特征;
6、設(shè)計和提取缺陷預(yù)測對象中各個文件的代碼克隆特征;
7、根據(jù)歷史提交記錄,對缺陷預(yù)測對象中的各個文件進(jìn)行缺陷標(biāo)記,標(biāo)記后的文件作為訓(xùn)練集;
8、將各個文件的代碼克隆特征和軟件度量特征作為特征集合,采用隨機森林算法構(gòu)建缺陷預(yù)測模型,利用訓(xùn)練集對缺陷預(yù)測模型進(jìn)行訓(xùn)練,直至達(dá)到訓(xùn)練要求;
9、將來自缺陷預(yù)測對象的新的文件,輸入到已訓(xùn)練好的缺陷預(yù)測模型進(jìn)行缺陷預(yù)測。
10、按上述方法,軟件度量特征利用靜態(tài)代碼分析軟件提?。?/p>
11、軟件度量特征包括代碼行數(shù)、總行數(shù)、圈復(fù)雜度、扇入、扇出與六項ck套件指標(biāo);其中,代碼行數(shù)不包含空白行和注釋行;代碼總行數(shù)包含空白行和注釋行。六項ck套件指標(biāo)包括wmc-類的加權(quán)方法數(shù)、dit-繼承樹的深度、noc-類的直接子類數(shù)、cbo-對象間的耦合度、rfc-類的響應(yīng)集的大小、lcom-方法內(nèi)聚性的缺失。
12、按上述方法,代碼克隆特征通過以下方式得到:
13、利用克隆代碼檢測軟件提取缺陷預(yù)測對象中的克隆代碼,然后進(jìn)行分析和計算,得到的代碼克隆特征包括克隆代碼行數(shù)、克隆代碼塊數(shù)、克隆代碼行數(shù)占比、克隆方法數(shù)、克隆方法數(shù)占比。
14、按上述方法,在計算克隆代碼行數(shù)時,對于存在于同一文件中的重復(fù)克隆代碼段,采用并集的方法來計算;
15、克隆代碼行數(shù)占比為文件中的克隆代碼行數(shù)占文件中的代碼總行數(shù)的百分比。
16、按上述方法,在計算克隆代碼塊時,將有交集的克隆代碼片段視為一個完整的克隆代碼塊。
17、按上述方法,在計算克隆方法數(shù)時,在本地配置tree-sitter庫及相關(guān)依賴,對文件進(jìn)行解析生成語法解析樹,統(tǒng)計各個文件包含的所有方法名、各方法的起始代碼行和終止代碼行;
18、判斷:克隆代碼段的起始行是否大于等于文件中某個方法的起始行,并且克隆代碼段的終止行是否小于等于該方法的終止行;若有方法尚未被統(tǒng)計,則認(rèn)為該方法涉及到代碼克隆;
19、在滿足以上條件的情況下,將該文件中的克隆方法數(shù)加一,并將該方法標(biāo)記為已統(tǒng)計。
20、按上述方法,在利用訓(xùn)練集對缺陷預(yù)測模型進(jìn)行訓(xùn)練之前,對訓(xùn)練集中的數(shù)據(jù)進(jìn)行預(yù)處理,預(yù)處理包括缺失值處理、異常值檢測和特征縮放;
21、利用resample方法,采用隨機抽樣并替換的策略來創(chuàng)建新樣本,得到缺陷文件和非缺陷文件比例范圍在一定誤差范圍內(nèi)的均衡訓(xùn)練集。
22、按上述方法,所述的缺陷預(yù)測模型采用隨機森林算法構(gòu)建。
23、按上述方法,在構(gòu)建缺陷預(yù)測模型時,采用主成分分析法對特征集合進(jìn)行數(shù)據(jù)降維處理,采用降維后的數(shù)據(jù)集合構(gòu)建缺陷預(yù)測模型。
24、作為本發(fā)明的第二方面,本發(fā)明提供一種基于代碼克隆分析的自動駕駛軟件缺陷預(yù)測系統(tǒng),包括:
25、克隆模塊,用于將缺陷預(yù)測對象克隆到本地;缺陷預(yù)測對象為自動駕駛軟件;
26、代碼克隆特征提取模塊,用于設(shè)計和提取缺陷預(yù)測對象中各個文件的代碼克隆特征;
27、軟件度量特征提取模塊,用于提取缺陷預(yù)測對象中的軟件度量特征;
28、訓(xùn)練集模塊,用于根據(jù)歷史提交記錄,對缺陷預(yù)測對象中的各個文件進(jìn)行缺陷標(biāo)記,標(biāo)記后的文件作為訓(xùn)練集;
29、缺陷預(yù)測模型構(gòu)建模塊,用于將各個文件的代碼克隆特征和軟件度量特征作為特征集合,采用隨機森林算法構(gòu)建缺陷預(yù)測模型,利用訓(xùn)練集對缺陷預(yù)測模型進(jìn)行訓(xùn)練,直至達(dá)到訓(xùn)練要求;
30、缺陷預(yù)測模塊,用于將來自缺陷預(yù)測對象的新的文件,輸入到已訓(xùn)練好的缺陷預(yù)測模型進(jìn)行缺陷預(yù)測。
31、本發(fā)明的有益效果為:
32、1、充分利用了自動駕駛軟件中普遍存在的代碼克隆現(xiàn)象,引入代碼克隆特征,與軟件度量特征一起作為缺陷預(yù)測模型的特征,同時融合歷史提交記錄中的缺陷結(jié)構(gòu),構(gòu)建更全面、更有代表性的特征集,提升自動駕駛軟件缺陷預(yù)測的精度;聚焦于文件級別的缺陷預(yù)測,比傳統(tǒng)的粗粒度預(yù)測更能精準(zhǔn)地定位缺陷,同時保證了度量提取的便利性,在精度和效率之間取得了平衡。
33、2、采用十折交叉驗證對缺陷預(yù)測模型進(jìn)行性能評估,選擇隨機森林算法構(gòu)建缺陷預(yù)測模型,進(jìn)一步提高缺陷預(yù)測的準(zhǔn)確度。
1.一種基于代碼克隆分析的自動駕駛軟件缺陷預(yù)測方法,其特征在于:包括:
2.根據(jù)權(quán)利要求1所述的基于代碼克隆分析的文件級缺陷預(yù)測方法,其特征在于:軟件度量特征利用靜態(tài)代碼分析軟件提取;
3.根據(jù)權(quán)利要求1所述的基于代碼克隆分析的文件級缺陷預(yù)測方法,其特征在于:代碼克隆特征通過以下方式得到:
4.根據(jù)權(quán)利要求3所述的基于代碼克隆分析的文件級缺陷預(yù)測方法,其特征在于:在計算克隆代碼行數(shù)時,對于存在于同一文件中的重復(fù)克隆代碼段,采用并集的方法來計算;
5.根據(jù)權(quán)利要求3所述的基于代碼克隆分析的文件級缺陷預(yù)測方法,其特征在于:在計算克隆代碼塊時,將有交集的克隆代碼片段視為一個完整的克隆代碼塊。
6.根據(jù)權(quán)利要求3所述的基于代碼克隆分析的文件級缺陷預(yù)測方法,其特征在于:在計算克隆方法數(shù)時,在本地配置tree-sitter庫及相關(guān)依賴,對文件進(jìn)行解析生成語法解析樹,統(tǒng)計各個文件包含的所有方法名、各方法的起始代碼行和終止代碼行;
7.根據(jù)權(quán)利要求1所述的基于代碼克隆分析的文件級缺陷預(yù)測方法,其特征在于:在利用訓(xùn)練集對缺陷預(yù)測模型進(jìn)行訓(xùn)練之前,對訓(xùn)練集中的數(shù)據(jù)進(jìn)行預(yù)處理,預(yù)處理包括缺失值處理、異常值檢測和特征縮放;
8.根據(jù)權(quán)利要求1所述的基于代碼克隆分析的文件級缺陷預(yù)測方法,其特征在于:所述的缺陷預(yù)測模型采用隨機森林算法構(gòu)建。
9.根據(jù)權(quán)利要求1所述的基于代碼克隆分析的文件級缺陷預(yù)測方法,其特征在于:在構(gòu)建缺陷預(yù)測模型時,采用主成分分析法對特征集合進(jìn)行數(shù)據(jù)降維處理,采用降維后的數(shù)據(jù)集合構(gòu)建缺陷預(yù)測模型。
10.一種基于代碼克隆分析的自動駕駛軟件缺陷預(yù)測系統(tǒng),其特征在于:包括: