欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于AST的代碼度量和代碼語義的代碼異味檢測方法及系統(tǒng)

文檔序號(hào):40589561發(fā)布日期:2025-01-07 20:29閱讀:4來源:國知局
基于AST的代碼度量和代碼語義的代碼異味檢測方法及系統(tǒng)

本發(fā)明屬于軟件工程領(lǐng)域,具體涉及一種基于ast的代碼度量和代碼語義的代碼異味檢測方法及系統(tǒng)。


背景技術(shù):

1、在軟件開發(fā)和維護(hù)的過程中,代碼異味的存在往往是導(dǎo)致軟件質(zhì)量下降、維護(hù)成本增加的主要原因。代碼異味是指在代碼中可能導(dǎo)致缺陷或降低代碼可讀性、可維護(hù)性的壞味道。常見的代碼異味包括上帝類、長方法、數(shù)據(jù)類和特性嫉妒等。這些異味通常是由于設(shè)計(jì)不當(dāng)或?qū)崿F(xiàn)不規(guī)范引起的,但并不一定會(huì)直接導(dǎo)致軟件錯(cuò)誤。

2、現(xiàn)有的代碼異味檢測技術(shù)主要可以分為三類:1)基于規(guī)則的靜態(tài)分析方法:這些方法依賴于預(yù)定義的規(guī)則集,通過解析代碼來檢測不符合這些規(guī)則的代碼片段。例如,基于checkstyle、pmd等工具的檢測規(guī)則。這些方法的優(yōu)點(diǎn)是簡單易行,但缺點(diǎn)是容易產(chǎn)生大量誤報(bào)和漏報(bào)。2)基于代碼度量的檢測方法:此類方法通過計(jì)算代碼的復(fù)雜度、注釋率、耦合度等代碼度量,并與預(yù)定義的閾值進(jìn)行比較,以檢測可能存在的代碼異味。這些方法較為依賴代碼度量的合理性,且難以處理代碼中的深層次語義信息。3)基于機(jī)器學(xué)習(xí)的檢測方法:此類方法通過對(duì)大量標(biāo)注數(shù)據(jù)的學(xué)習(xí),建立能夠自動(dòng)檢測代碼異味的模型。盡管這些方法能夠在一定程度上減少誤報(bào),但其對(duì)數(shù)據(jù)的依賴性較強(qiáng),并且在處理復(fù)雜代碼結(jié)構(gòu)和語義時(shí)往往效果不佳。

3、因此,現(xiàn)有技術(shù)在面對(duì)復(fù)雜代碼場景時(shí),仍然存在一些亟待解決的研究空白和局限性。一方面,軟件代碼度量難以提取且在不同粒度的代碼層次上差異較大:現(xiàn)有的代碼異味識(shí)別方法通常依賴于軟件代碼度量。然而,代碼度量的提取過程通常復(fù)雜且難以統(tǒng)一,尤其是在不同的代碼粒度層次上,度量的適用性和一致性較差。這導(dǎo)致了在識(shí)別代碼異味時(shí)準(zhǔn)確度的下降,尤其是在處理大規(guī)?;驈?fù)雜代碼庫時(shí)問題尤為突出。另一方面,高度抽象的代碼語義信息難以傳達(dá)代碼的結(jié)構(gòu)細(xì)節(jié):現(xiàn)有方法在利用代碼語義信息時(shí),往往關(guān)注的是高度抽象的語義特征,而忽略了代碼的結(jié)構(gòu)性細(xì)節(jié)。這種方法雖然在某些情況下能夠識(shí)別出代碼異味,但由于缺乏對(duì)代碼結(jié)構(gòu)的深層次理解,導(dǎo)致其在應(yīng)對(duì)復(fù)雜異味識(shí)別任務(wù)時(shí)表現(xiàn)不佳。

4、因此,如何將代碼的結(jié)構(gòu)特征與語義信息結(jié)合,以提升代碼異味檢測的精度,是目前亟待解決的技術(shù)問題。


技術(shù)實(shí)現(xiàn)思路

1、本發(fā)明的目的在于解決現(xiàn)有技術(shù)中面對(duì)復(fù)雜異味識(shí)別任務(wù)時(shí)檢測精度不高的缺陷,并提供一種基于ast的代碼度量和代碼語義的代碼異味檢測方法及系統(tǒng)。

2、本發(fā)明所采用的具體技術(shù)方案如下:

3、第一方面,本發(fā)明提供了一種基于ast的代碼度量和代碼語義的代碼異味檢測方法,其包括以下步驟:

4、s1、將待檢測代碼片段通過基于深度學(xué)習(xí)的代碼表示學(xué)習(xí)技術(shù)或代碼嵌入技術(shù)轉(zhuǎn)化為向量表示,作為待檢測代碼片段對(duì)應(yīng)的代碼語義;

5、s2、從待檢測代碼片段中提取結(jié)構(gòu)度量、句法度量和語義度量,共同作為待檢測代碼片段對(duì)應(yīng)的代碼度量;

6、s3、將所述代碼語義和所述代碼度量作為第一分類模型的輸入,由經(jīng)過訓(xùn)練后的第一分類模型得到待檢測代碼片段是否存在代碼異味的預(yù)測結(jié)果;

7、s4、將所述代碼語義和所述代碼度量作為第二分類模型的輸入,由經(jīng)過訓(xùn)練后的第二分類模型得到待檢測代碼片段的代碼異味程度的預(yù)測結(jié)果。

8、作為上述第一方面的優(yōu)選,所述s1中,待檢測代碼片段通過輸入code2vec代碼嵌入模型,解析代碼片段的抽象語法樹,從而轉(zhuǎn)化為其對(duì)應(yīng)的向量表示。

9、作為上述第一方面的優(yōu)選,所述s2中,從待檢測代碼片段中提取結(jié)構(gòu)度量、句法度量和語義度量的步驟如下:首先,獲取待檢測代碼片段的抽象語法樹ast,并在抽象語法樹ast中添加控制流和數(shù)據(jù)流對(duì)應(yīng)的邊,構(gòu)成流抽象語法樹fa-ast;然后通過遍歷流抽象語法樹fa-ast中的節(jié)點(diǎn)和邊來統(tǒng)計(jì)結(jié)構(gòu)度量、句法度量和語義度量,其中:所述結(jié)構(gòu)度量為10個(gè)結(jié)構(gòu)參數(shù),分別為:樹深度、樹寬度、節(jié)點(diǎn)數(shù)量、葉節(jié)點(diǎn)數(shù)量、最大參數(shù)列表長度、語句塊數(shù)量、代碼塊數(shù)量、分支因子、節(jié)點(diǎn)覆蓋率和節(jié)點(diǎn)重復(fù)率;所述句法度量為20種類型的節(jié)點(diǎn)數(shù)量,分別為:引用類型、變量聲明器、成員引用、字面量、方法聲明、代碼塊語句、返回語句、集合、字符串、字段聲明、形式參數(shù)、表達(dá)式語句、賦值、當(dāng)前對(duì)象引用、方法調(diào)用、局部變量聲明、基本類型、條件語句、二元操作和類創(chuàng)建器;所述語義度量為9種邊的數(shù)量,分別為:父子節(jié)點(diǎn)關(guān)系,兄弟節(jié)點(diǎn)關(guān)系,語句順序關(guān)系,標(biāo)識(shí)符連接關(guān)系,變量使用關(guān)系,if語句條件為真時(shí)的分支,if語句條件為假時(shí)的分支,循環(huán)執(zhí)行關(guān)系,循環(huán)控制關(guān)系。

10、作為上述第一方面的優(yōu)選,所述第一分類模型和第二分類模型采用機(jī)器學(xué)習(xí)模型或深度學(xué)習(xí)模型;優(yōu)選的,所述機(jī)器學(xué)習(xí)模型為xgb模型或rf模型,所述代碼語義和歸一化后的所述代碼度量直接拼接后作為分類模型的輸入;優(yōu)選的,所述深度學(xué)習(xí)模型為以cnn模型或dnn模型作為主干網(wǎng)絡(luò)構(gòu)建兩個(gè)分支網(wǎng)絡(luò),所述代碼語義和歸一化后的所述代碼度量各自通過不同的分支網(wǎng)絡(luò)提取特征后再拼接作為softmax分類器的輸入。

11、作為上述第一方面的優(yōu)選,所述第一分類模型預(yù)先在代碼異味的識(shí)別任務(wù)中,利用帶有二分類標(biāo)簽的標(biāo)注數(shù)據(jù)集進(jìn)行訓(xùn)練,所述二分類標(biāo)簽用于表示一個(gè)代碼片段是否存在代碼異味。

12、作為上述第一方面的優(yōu)選,所述第二分類模型預(yù)先在代碼異味的嚴(yán)重程度判定任務(wù)中,利用帶有多分類標(biāo)簽的標(biāo)注數(shù)據(jù)集進(jìn)行訓(xùn)練,所述多分類標(biāo)簽用于表示將一個(gè)代碼片段考慮為代碼異味時(shí)的嚴(yán)重程度。

13、第二方面,本發(fā)明提供了一種基于ast的代碼度量和代碼語義的代碼異味檢測系統(tǒng),其包括:

14、代碼語義獲取模塊,用于將待檢測代碼片段通過基于深度學(xué)習(xí)的代碼表示學(xué)習(xí)技術(shù)或代碼嵌入技術(shù)轉(zhuǎn)化為向量表示,作為待檢測代碼片段對(duì)應(yīng)的代碼語義;

15、代碼度量獲取模塊,用于從待檢測代碼片段中提取結(jié)構(gòu)度量、句法度量和語義度量,共同作為待檢測代碼片段對(duì)應(yīng)的代碼度量;

16、第一檢測模塊,用于將所述代碼語義和所述代碼度量作為第一分類模型的輸入,由經(jīng)過訓(xùn)練后的第一分類模型得到待檢測代碼片段是否存在代碼異味的預(yù)測結(jié)果;

17、第二檢測模塊,用于將所述代碼語義和所述代碼度量作為第二分類模型的輸入,由經(jīng)過訓(xùn)練后的第二分類模型得到待檢測代碼片段的代碼異味程度的預(yù)測結(jié)果。

18、第三方面,本發(fā)明提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序/指令,其特征在于,該計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí),能實(shí)現(xiàn)如上述第一方面任一項(xiàng)所述的基于ast的代碼度量和代碼語義的代碼異味檢測方法。

19、第四方面,本發(fā)明提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,當(dāng)所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí),實(shí)現(xiàn)如上述第一方面任一項(xiàng)所述的基于ast的代碼度量和代碼語義的代碼異味檢測方法。

20、第五方面,本發(fā)明提供了一種計(jì)算機(jī)電子設(shè)備,其特征在于,包括存儲(chǔ)器和處理器;

21、所述存儲(chǔ)器,用于存儲(chǔ)計(jì)算機(jī)程序;

22、所述處理器,用于當(dāng)執(zhí)行所述計(jì)算機(jī)程序時(shí),實(shí)現(xiàn)如上述第一方面任一項(xiàng)所述的基于ast的代碼度量和代碼語義的代碼異味檢測方法。

23、本發(fā)明結(jié)合基于抽象語法樹(ast)的代碼度量和代碼語義,提出了一種用于代碼異味識(shí)別的框架。具體來說,本發(fā)明提出了三種基于ast的代碼度量,旨在替代傳統(tǒng)的軟件代碼度量,這些代碼度量不僅易于提取,并且能夠在不同代碼粒度下統(tǒng)一處理,精準(zhǔn)描述代碼的結(jié)構(gòu)細(xì)節(jié)。此外,本發(fā)明提出的融合學(xué)習(xí)框架通過結(jié)合基于ast的代碼度量和代碼語義,不僅能夠識(shí)別代碼異味,還可以對(duì)其嚴(yán)重程度進(jìn)行評(píng)估。

24、本發(fā)明相對(duì)于現(xiàn)有技術(shù)而言,具有以下有益效果:

25、1、本發(fā)明提供了一種基于ast的結(jié)構(gòu)度量、句法度量和語義度量的替代方案,有效解決了傳統(tǒng)軟件代碼度量在提取難度和適用性上的局限性。

26、2、本發(fā)明的檢測框架結(jié)合了基于ast的代碼度量與代碼語義特征,顯著提高了代碼異味識(shí)別方法的準(zhǔn)確性和通用性。

27、3、本發(fā)明通過多種實(shí)驗(yàn)驗(yàn)證了基于ast的代碼度量和融合學(xué)習(xí)框架在代碼異味及其重要性識(shí)別任務(wù)中的有效性,并在相同數(shù)據(jù)集上表現(xiàn)優(yōu)于現(xiàn)有的最先進(jìn)方法。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
土默特左旗| 桐乡市| 左权县| 武义县| 胶州市| 女性| 金乡县| 富阳市| 玛曲县| 海原县| 西峡县| 岳阳市| 韩城市| 连山| 安顺市| 南昌市| 昭通市| 大庆市| 蓬安县| 南乐县| 攀枝花市| 丽水市| 昌吉市| 福建省| 谷城县| 梧州市| 申扎县| 孟州市| 四会市| 武邑县| 河东区| 平山县| 宽城| 六枝特区| 昌乐县| 昌乐县| 浮山县| 朝阳县| 交口县| 城步| 南城县|