本發(fā)明涉及基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)方法,具體涉及一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)方法及設(shè)備。
背景技術(shù):
1、隨著軟件行業(yè)的快速發(fā)展,代碼的復(fù)雜性和數(shù)量不斷增加,代碼質(zhì)量影響軟件的可靠性和性能,尤其是在銀行業(yè),軟件的可靠性至關(guān)重要。傳統(tǒng)的代碼質(zhì)量檢測(cè)方法主要依賴于人工審查和靜態(tài)代碼分析工具,這些方法存在以下局限性:
2、1、人工審查的局限性:人工代碼審查耗時(shí)且易受審查人員經(jīng)驗(yàn)影響,難以保證一致性和全面性。此外,人工審查難以規(guī)?;瘧?yīng)對(duì)大型項(xiàng)目和復(fù)雜系統(tǒng)。
3、2、靜態(tài)代碼分析工具的不足:雖然靜態(tài)代碼分析工具可以自動(dòng)檢測(cè)代碼中的一些常見(jiàn)問(wèn)題,如語(yǔ)法錯(cuò)誤、潛在的空指針異常等,但它們通?;陬A(yù)設(shè)的規(guī)則,對(duì)于復(fù)雜的編程邏輯和上下文理解能力有限,且容易產(chǎn)生大量誤報(bào)。
4、3、缺乏智能化和自適應(yīng)性:現(xiàn)有工具往往缺乏自學(xué)習(xí)和自適應(yīng)的能力,難以隨著項(xiàng)目的發(fā)展和代碼庫(kù)的演變而進(jìn)化,也難以適應(yīng)新的編程范式和語(yǔ)言特性。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的是針對(duì)現(xiàn)有技術(shù)存在的不足,提供一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)方法及設(shè)備。
2、為實(shí)現(xiàn)上述目的,在第一方面,本發(fā)明提供了一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)方法,包括:
3、步驟1、采集源代碼數(shù)據(jù);
4、步驟2、對(duì)所述源代碼數(shù)據(jù)的代碼格式進(jìn)行預(yù)處理,并根據(jù)標(biāo)準(zhǔn)化處理后的代碼生成抽象語(yǔ)法樹(shù),每一節(jié)點(diǎn)vi表示一個(gè)語(yǔ)法元素,所述語(yǔ)法元素包括變量、操作符和語(yǔ)句塊,然后將所述抽象語(yǔ)法樹(shù)構(gòu)建為圖數(shù)據(jù),i=1,2,……n,n為節(jié)點(diǎn)總數(shù);
5、步驟3、將構(gòu)建的圖數(shù)據(jù)輸入至訓(xùn)練合格的圖卷積神經(jīng)網(wǎng)絡(luò)中,以對(duì)代碼進(jìn)行質(zhì)量檢測(cè),并輸出每個(gè)節(jié)點(diǎn)vi的檢測(cè)結(jié)果其中,k表示有k種質(zhì)量問(wèn)題,yij∈{0,1},表示節(jié)點(diǎn)vi在第j種質(zhì)量問(wèn)題上的標(biāo)簽,j=1,2,……k;
6、步驟4、根據(jù)每個(gè)節(jié)點(diǎn)vi的檢測(cè)結(jié)果生成代碼分析報(bào)告。
7、進(jìn)一步的,用于采集源代碼的接口包括開(kāi)發(fā)環(huán)境接口、版本控制系統(tǒng)接口、代碼倉(cāng)庫(kù)訪問(wèn)接口和代碼提取接口。
8、進(jìn)一步的,所述預(yù)處理包括格式化處理和移除代碼中的注釋內(nèi)容,所述格式化處理包括縮進(jìn)、換行、空格處理。
9、進(jìn)一步的,每個(gè)節(jié)點(diǎn)vi檢測(cè)結(jié)果的計(jì)算方式如下:
10、
11、其中,sigmoid(.)為圖卷積神經(jīng)網(wǎng)絡(luò)的第二隱藏層的激活函數(shù)、relu(.)為圖卷積神經(jīng)網(wǎng)絡(luò)的第一隱藏層的激活函數(shù),為度矩陣,為加上自連接的圖數(shù)據(jù)的鄰接矩陣,h(0)為輸入至圖卷積神經(jīng)網(wǎng)絡(luò)的節(jié)點(diǎn)vi的特征,w(0)、w(1)分別為第一隱藏層和第二隱藏層的權(quán)重矩陣。
12、進(jìn)一步的,所述步驟4具體包括:
13、從所述圖卷積神經(jīng)網(wǎng)絡(luò)的輸出中收集所有節(jié)點(diǎn)的檢測(cè)結(jié)果
14、
15、對(duì)所有節(jié)點(diǎn)的檢測(cè)結(jié)果進(jìn)行匯總,統(tǒng)計(jì)檢測(cè)結(jié)果中的每種質(zhì)量問(wèn)題在整個(gè)代碼中的分布情況,同時(shí)將節(jié)點(diǎn)的檢測(cè)結(jié)果映射回源代碼中,記錄每個(gè)問(wèn)題在源代碼中的具體發(fā)生位置;
16、根據(jù)檢測(cè)結(jié)果中的質(zhì)量問(wèn)題生成對(duì)應(yīng)的自然語(yǔ)言描述;
17、根據(jù)質(zhì)量問(wèn)題的嚴(yán)重性、對(duì)系統(tǒng)造成的影響、發(fā)生頻率對(duì)質(zhì)量問(wèn)題進(jìn)行排序,確定各個(gè)質(zhì)量問(wèn)題的優(yōu)先級(jí);
18、生成統(tǒng)計(jì)圖表,以展示不同類型質(zhì)量問(wèn)題的數(shù)量和分布情況;
19、根據(jù)每個(gè)問(wèn)題在源代碼中的具體發(fā)生位置、質(zhì)量問(wèn)題對(duì)應(yīng)的自然語(yǔ)言描述、質(zhì)量問(wèn)題的優(yōu)先級(jí)和統(tǒng)計(jì)圖表匯總生成代碼分析報(bào)告。
20、在第二方面,本發(fā)明提供了一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)設(shè)備,包括:
21、代碼采集模塊,用以采集源代碼數(shù)據(jù);
22、預(yù)處理模塊,用以對(duì)所述源代碼數(shù)據(jù)的代碼格式進(jìn)行預(yù)處理,并根據(jù)標(biāo)準(zhǔn)化處理后的代碼生成抽象語(yǔ)法樹(shù),每一節(jié)點(diǎn)vi表示一個(gè)語(yǔ)法元素,所述語(yǔ)法元素包括變量、操作符和語(yǔ)句塊,然后將所述抽象語(yǔ)法樹(shù)構(gòu)建為圖數(shù)據(jù),i=1,2,……n,n為節(jié)點(diǎn)總數(shù);
23、代碼分析模塊,用以采用訓(xùn)練合格的圖卷積神經(jīng)網(wǎng)絡(luò)接收所述圖數(shù)據(jù),以對(duì)代碼進(jìn)行質(zhì)量檢測(cè),并輸出每個(gè)節(jié)點(diǎn)vi的檢測(cè)結(jié)果其中,k表示有k種質(zhì)量問(wèn)題,yij∈{0,1},表示節(jié)點(diǎn)vi在第j種質(zhì)量問(wèn)題上的標(biāo)簽,j=1,2,……k;
24、分析包括生成模塊,用以根據(jù)每個(gè)節(jié)點(diǎn)vi的檢測(cè)結(jié)果生成代碼分析報(bào)告。
25、進(jìn)一步的,所述代碼采集模塊的接口包括開(kāi)發(fā)環(huán)境接口、版本控制系統(tǒng)接口、代碼倉(cāng)庫(kù)訪問(wèn)接口和代碼提取接口。
26、進(jìn)一步的,所述預(yù)處理包括格式化處理和移除代碼中的注釋內(nèi)容,所述格式化處理包括縮進(jìn)、換行、空格處理。
27、進(jìn)一步的,每個(gè)節(jié)點(diǎn)vi檢測(cè)結(jié)果的計(jì)算方式如下:
28、
29、其中,sigmoid(.)、relu(.)均為激活函數(shù),為度矩陣,為加上自連接的圖數(shù)據(jù)的鄰接矩陣,h(0)為輸入至圖卷積神經(jīng)網(wǎng)絡(luò)的節(jié)點(diǎn)vi的特征,w(0)、w(1)分別為圖卷積神經(jīng)網(wǎng)絡(luò)的第一隱藏層和第二隱藏層的權(quán)重矩陣。
30、進(jìn)一步的,所述分析包括生成模塊生成代碼分析報(bào)告的方式具體包括:
31、從所述圖卷積神經(jīng)網(wǎng)絡(luò)的輸出中收集所有節(jié)點(diǎn)的檢測(cè)結(jié)果
32、
33、對(duì)所有節(jié)點(diǎn)的檢測(cè)結(jié)果進(jìn)行匯總,統(tǒng)計(jì)檢測(cè)結(jié)果中的每種質(zhì)量問(wèn)題在整個(gè)代碼中的分布情況,同時(shí)將節(jié)點(diǎn)的檢測(cè)結(jié)果映射回源代碼中,記錄每個(gè)問(wèn)題在源代碼中的具體發(fā)生位置;
34、根據(jù)檢測(cè)結(jié)果中的質(zhì)量問(wèn)題生成對(duì)應(yīng)的自然語(yǔ)言描述;
35、根據(jù)質(zhì)量問(wèn)題的嚴(yán)重性、對(duì)系統(tǒng)造成的影響、發(fā)生頻率對(duì)質(zhì)量問(wèn)題進(jìn)行排序,確定各個(gè)質(zhì)量問(wèn)題的優(yōu)先級(jí);
36、生成統(tǒng)計(jì)圖表,以展示不同類型質(zhì)量問(wèn)題的數(shù)量和分布情況;
37、根據(jù)每個(gè)問(wèn)題在源代碼中的具體發(fā)生位置、質(zhì)量問(wèn)題對(duì)應(yīng)的自然語(yǔ)言描述、質(zhì)量問(wèn)題的優(yōu)先級(jí)和統(tǒng)計(jì)圖表匯總生成代碼分析報(bào)告。
38、有益效果:1、本發(fā)明通過(guò)將抽象語(yǔ)法樹(shù)ast建模為圖數(shù)據(jù),能夠精確表示代碼的語(yǔ)法結(jié)構(gòu),更好地理解代碼的邏輯和流向,捕捉代碼中的復(fù)雜結(jié)構(gòu)和語(yǔ)義關(guān)系;
39、2、本發(fā)明可通過(guò)模型的訓(xùn)練,持續(xù)學(xué)習(xí)新的代碼示例和質(zhì)量問(wèn)題,不斷提升模型自身的檢測(cè)能力,適應(yīng)不同項(xiàng)目和代碼庫(kù)的需求;
40、3、本發(fā)明采用圖卷積神經(jīng)網(wǎng)絡(luò)gcn能夠識(shí)別代碼中的質(zhì)量問(wèn)題,相比于傳統(tǒng)方法,能夠顯著降低誤報(bào)率;并且可以同時(shí)檢測(cè)多種類型的問(wèn)題,適用于大規(guī)模項(xiàng)目,更加高效。
1.一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,用于采集源代碼的接口包括開(kāi)發(fā)環(huán)境接口、版本控制系統(tǒng)接口、代碼倉(cāng)庫(kù)訪問(wèn)接口和代碼提取接口。
3.根據(jù)權(quán)利要求1所述的一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,所述預(yù)處理包括格式化處理和移除代碼中的注釋內(nèi)容,所述格式化處理包括縮進(jìn)、換行、空格處理。
4.根據(jù)權(quán)利要求1所述的一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,每個(gè)節(jié)點(diǎn)vi檢測(cè)結(jié)果的計(jì)算方式如下:
5.根據(jù)權(quán)利要求1所述的一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,所述步驟4具體包括:
6.一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)設(shè)備,其特征在于,包括:
7.根據(jù)權(quán)利要求6所述的一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)設(shè)備,其特征在于,所述代碼采集模塊的接口包括開(kāi)發(fā)環(huán)境接口、版本控制系統(tǒng)接口、代碼倉(cāng)庫(kù)訪問(wèn)接口和代碼提取接口。
8.根據(jù)權(quán)利要求6所述的一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)設(shè)備,其特征在于,所述預(yù)處理包括格式化處理和移除代碼中的注釋內(nèi)容,所述格式化處理包括縮進(jìn)、換行、空格處理。
9.根據(jù)權(quán)利要求6所述的一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)設(shè)備,其特征在于,每個(gè)節(jié)點(diǎn)vi檢測(cè)結(jié)果的計(jì)算方式如下:
10.根據(jù)權(quán)利要求6所述的一種基于人工智能的代碼質(zhì)量自動(dòng)檢測(cè)設(shè)備,其特征在于,所述分析包括生成模塊生成代碼分析報(bào)告的方式具體包括: