本技術(shù)涉及神經(jīng)網(wǎng)絡(luò),尤其涉及一種代碼審核方法及裝置。
背景技術(shù):
1、在軟件開發(fā)過(guò)程中,代碼審查是一種旨在提高代碼質(zhì)量和減少軟件缺陷的重要活動(dòng)。隨著軟件項(xiàng)目的規(guī)模和復(fù)雜性的增加,手動(dòng)代碼審查變得越來(lái)越耗時(shí)且容易出錯(cuò)。因此,自動(dòng)化代碼審查技術(shù)應(yīng)運(yùn)而生,在自動(dòng)化代碼審查的背景下,最接近的背景技術(shù)是基于深度學(xué)習(xí)的模型,特別是那些利用卷積神經(jīng)網(wǎng)絡(luò)(cnn)或循環(huán)神經(jīng)網(wǎng)絡(luò)(rnn)來(lái)分析代碼的模型。這些模型能夠處理代碼的序列特性,并在一定程度上理解代碼的結(jié)構(gòu)和語(yǔ)義。然而,這些模型在處理長(zhǎng)距離依賴關(guān)系和復(fù)雜代碼結(jié)構(gòu)時(shí)仍面臨挑戰(zhàn),因?yàn)樗鼈兛赡茈y以捕捉代碼中的全局上下文信息。
2、因此,目前亟需一種方案,用以在代碼審核過(guò)程中,充分考慮上下文的依賴關(guān)系,進(jìn)而提高代碼審核的準(zhǔn)確性。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供一種代碼審核方法及裝置,用以在代碼審核過(guò)程中,充分考慮上下文的依賴關(guān)系,進(jìn)而提高代碼審核的準(zhǔn)確性。
2、第一方面,本技術(shù)提供一種代碼審核方法,該方法包括:將待審核代碼生成對(duì)應(yīng)的抽象語(yǔ)法樹;所述抽象語(yǔ)法樹的每個(gè)節(jié)點(diǎn)表示所述待審核代碼的語(yǔ)法結(jié)構(gòu)中的一個(gè)基本語(yǔ)法單元;計(jì)算所述待審核代碼的抽象語(yǔ)法樹各節(jié)點(diǎn)的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重;根據(jù)所述待審核代碼的抽象語(yǔ)法樹各節(jié)點(diǎn)的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重,得到所述待審核代碼的各代碼片段的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重;將所述待審核代碼的每個(gè)第一代碼片段輸入到編碼器-解碼器模型中的編碼器,以所述第一代碼片段的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重作為所述編碼器的多頭注意力權(quán)重,得到所述第一代碼片段的編碼;將所述第一代碼片段的編碼輸入到所述編碼器-解碼器模型中的解碼器,得到對(duì)所述第一代碼片段進(jìn)行修改后的第二代碼片段;將所述待審核代碼的各第一代碼片段對(duì)應(yīng)的第二代碼片段,作為所述待審核代碼的審核結(jié)果。
3、上述技術(shù)方案中,使用神經(jīng)網(wǎng)絡(luò)模型來(lái)學(xué)習(xí)代碼的表示和語(yǔ)義,并根據(jù)輸入的待審核代碼生成相應(yīng)的修改建議。其中,編碼器部分通過(guò)各代碼片段的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重,增加了對(duì)編程語(yǔ)言語(yǔ)法和結(jié)構(gòu)的深度理解能力,而解碼器部分則專注于生成語(yǔ)法正確、邏輯一致的代碼和修改建議?;诖司幋a器-解碼器可以更全面地理解代碼,而不僅僅局限于語(yǔ)法和規(guī)則檢查??梢蕴峁└鼈€(gè)性化、精準(zhǔn)的修改建議,幫助開發(fā)者更有效地改進(jìn)代碼質(zhì)量和性能。
4、在一種可能的設(shè)計(jì)中,將待審核代碼生成對(duì)應(yīng)的抽象語(yǔ)法樹之后,還包括:將所述待審核代碼運(yùn)行時(shí)的動(dòng)態(tài)代碼數(shù)據(jù)添加到所述抽象語(yǔ)法樹中,得到增強(qiáng)語(yǔ)法樹;所述動(dòng)態(tài)代碼數(shù)據(jù)包括所述待審核代碼運(yùn)行時(shí)變量的實(shí)際值和狀態(tài);計(jì)算所述待審核代碼的抽象語(yǔ)法樹各節(jié)點(diǎn)的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重,包括:計(jì)算所述待審核代碼的增強(qiáng)語(yǔ)法樹各節(jié)點(diǎn)的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重。
5、上述技術(shù)方案中,通過(guò)動(dòng)態(tài)代碼數(shù)據(jù)和語(yǔ)義分析,能夠捕捉代碼在運(yùn)行時(shí)的動(dòng)態(tài)行為和語(yǔ)義信息,使得特征提取更為全面和精準(zhǔn)。
6、在一種可能的設(shè)計(jì)中,根據(jù)所述待審核代碼的抽象語(yǔ)法樹各節(jié)點(diǎn)的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重,得到所述待審核代碼的各代碼片段的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重,包括:對(duì)于每一代碼片段,確定代碼片段中包括的抽象語(yǔ)法樹各節(jié)點(diǎn)對(duì)所述代碼片段的貢獻(xiàn)度;基于所述貢獻(xiàn)度確定所述代碼片段中包括的抽象語(yǔ)法樹各節(jié)點(diǎn)對(duì)應(yīng)的權(quán)重;根據(jù)所述待審核代碼的抽象語(yǔ)法樹各節(jié)點(diǎn)的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重及各節(jié)點(diǎn)對(duì)應(yīng)的權(quán)重,得到所述待審核代碼的各代碼片段的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重。
7、上述技術(shù)方案中,在編碼器-解碼器模型中融入多種注意力機(jī)制,包括語(yǔ)法樹注意力、類型注意力和語(yǔ)義角色注意力,使得模型能夠細(xì)致捕捉代碼的語(yǔ)法結(jié)構(gòu)、數(shù)據(jù)類型、語(yǔ)義角色以及代碼的上下文環(huán)境,使模型在代碼編輯、修復(fù)和生成任務(wù)中實(shí)現(xiàn)更高的準(zhǔn)確性和效率。
8、在一種可能的設(shè)計(jì)中,通過(guò)以下方式對(duì)編碼器-解碼器模型進(jìn)行訓(xùn)練:隨機(jī)對(duì)原始代碼的至少一個(gè)語(yǔ)句進(jìn)行遮擋,得到遮擋代碼;對(duì)所述遮擋代碼中每個(gè)遮擋語(yǔ)句的內(nèi)容進(jìn)行預(yù)測(cè),得到每個(gè)遮擋語(yǔ)句的填充建議及對(duì)應(yīng)的概率;根據(jù)所述每個(gè)遮擋語(yǔ)句的填充建議及對(duì)應(yīng)的概率,對(duì)所述遮擋代碼中的遮擋語(yǔ)句進(jìn)行填充,得到填充代碼;將所述填充代碼中的至少一個(gè)第三代碼片段輸入到所述編碼器-解碼器模型中,得到對(duì)所述第三代碼片段進(jìn)行修改后的第四代碼片段;計(jì)算所述第四代碼片段和對(duì)應(yīng)原始代碼片段的相似度;根據(jù)所述第四代碼片段和對(duì)應(yīng)原始代碼片段的相似度,對(duì)所述編碼器的多頭注意力權(quán)重中的各項(xiàng)注意力權(quán)重的參數(shù)進(jìn)行調(diào)整;所述多頭注意力權(quán)重包括語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重;所述參數(shù)包括權(quán)重矩陣參數(shù)、偏置參數(shù)和嵌入維度參數(shù)。
9、上述技術(shù)方案中,在對(duì)編碼器-解碼器模型進(jìn)行訓(xùn)練時(shí),通過(guò)對(duì)原始代碼進(jìn)行遮擋并對(duì)遮擋位置的代碼進(jìn)行填充,以產(chǎn)生更多的訓(xùn)練數(shù)據(jù),使模型學(xué)習(xí)更豐富的、符合現(xiàn)實(shí)開發(fā)過(guò)程的代碼修改建議,從而提高編碼器-解碼器模型的泛化能力。通過(guò)計(jì)算模型輸出的代碼和原始代碼的相似度,以識(shí)別潛在的問(wèn)題或改進(jìn)點(diǎn),是生成修改建議的基礎(chǔ),確保了生成修改建議的相關(guān)性和準(zhǔn)確性。
10、在一種可能的設(shè)計(jì)中,計(jì)算所述第四代碼片段和對(duì)應(yīng)原始代碼片段的相似度,包括:基于所述第四代碼片段和對(duì)應(yīng)原始代碼片段的靜態(tài)特征得到靜態(tài)相似度;所述靜態(tài)特征包括代碼本身的文本特征;基于所述第四代碼片段和對(duì)應(yīng)原始代碼片段的動(dòng)態(tài)特征得到動(dòng)態(tài)相似度;所述動(dòng)態(tài)特征包括代碼運(yùn)行時(shí)變量的實(shí)際值和狀態(tài);根據(jù)所述靜態(tài)相似度、靜態(tài)相似度權(quán)重、所述動(dòng)態(tài)相似度和動(dòng)態(tài)相似度權(quán)重,得到所述第四代碼片段和對(duì)應(yīng)原始代碼片段的相似度;所述靜態(tài)相似度權(quán)重和所述動(dòng)態(tài)相似度權(quán)重根據(jù)代碼審查需求確定。
11、上述技術(shù)方案中,在計(jì)算相似度時(shí),通過(guò)結(jié)合代碼的靜態(tài)和動(dòng)態(tài)特征,提高了相似度計(jì)算的準(zhǔn)確性,使得模型能夠在識(shí)別潛在問(wèn)題和生成修改建議時(shí),更加注重代碼的實(shí)際功能和執(zhí)行效果,而不僅僅是表面的文本相似度。
12、在一種可能的設(shè)計(jì)中,根據(jù)所述第四代碼片段和對(duì)應(yīng)原始代碼片段的相似度,對(duì)所述編碼器的多頭注意力權(quán)重中的各項(xiàng)注意力權(quán)重的參數(shù)進(jìn)行調(diào)整,包括:根據(jù)所述第四代碼片段和對(duì)應(yīng)原始代碼片段的相似度得到相似度損失;根據(jù)所述第四代碼片段修改的準(zhǔn)確性得到準(zhǔn)確性損失;基于所述相似度損失、所述準(zhǔn)確性損失、正則化損失及分別對(duì)應(yīng)的權(quán)重,得到總損失;根據(jù)所述總損失對(duì)所述編碼器的多頭注意力權(quán)重中的各項(xiàng)注意力權(quán)重的參數(shù)進(jìn)行調(diào)整。
13、上述技術(shù)方案中,在計(jì)算模型損失時(shí)通過(guò)將多種損失(包括相似度損失、準(zhǔn)確性損失、正則化損失)相結(jié)合,以提高模型訓(xùn)練的準(zhǔn)確性。
14、在一種可能的設(shè)計(jì)中,通過(guò)以下公式計(jì)算所述語(yǔ)法樹注意力權(quán)重:
15、
16、其中,為節(jié)點(diǎn)vi和vj之間的語(yǔ)法樹注意力權(quán)重;σ為激活函數(shù);ei為節(jié)點(diǎn)vi的嵌入表示;ej為節(jié)點(diǎn)vj的嵌入表示;[ei;ej]表示對(duì)ei和ej進(jìn)行向量拼接;wsyn為權(quán)重矩陣參數(shù);bsyn為偏置參數(shù)。
17、上述技術(shù)方案中,通過(guò)計(jì)算語(yǔ)法樹注意力權(quán)重,可以強(qiáng)化模型對(duì)語(yǔ)法結(jié)構(gòu)的理解:通過(guò)顯式地利用代碼的抽象語(yǔ)法樹ast,使得模型能夠理解各個(gè)代碼片段(如變量聲明、函數(shù)調(diào)用、循環(huán)結(jié)構(gòu)等)之間的語(yǔ)法關(guān)系和層次結(jié)構(gòu)。例如,模型可以區(qū)分一個(gè)變量是在循環(huán)內(nèi)被聲明還是在循環(huán)外被聲明,這對(duì)于識(shí)別潛在的作用域相關(guān)錯(cuò)誤非常有幫助。提高模型的關(guān)注度:通過(guò)計(jì)算節(jié)點(diǎn)之間的注意力權(quán)重,語(yǔ)法樹注意力機(jī)制能夠指導(dǎo)模型更加關(guān)注于語(yǔ)法樹中重要節(jié)點(diǎn)的特征表示。在代碼審查的場(chǎng)景中,這意味著模型可以更加專注于那些對(duì)于理解代碼邏輯和功能更為關(guān)鍵的部分,如函數(shù)定義、關(guān)鍵變量等,而不是被模板代碼或較為次要的細(xì)節(jié)分散注意力。捕捉長(zhǎng)距離依賴:代碼中的某些邏輯錯(cuò)誤或潛在問(wèn)題可能涉及到在語(yǔ)法樹上位置相距較遠(yuǎn)的節(jié)點(diǎn)之間的關(guān)系。傳統(tǒng)的基于序列的模型可能難以捕捉這類長(zhǎng)距離依賴關(guān)系。語(yǔ)法樹注意力通過(guò)在象語(yǔ)法樹ast上直接計(jì)算注意力權(quán)重,可以有效地捕捉和利用這些跨越大范圍的語(yǔ)法結(jié)構(gòu)之間的依賴,從而提升識(shí)別和預(yù)測(cè)代碼中潛在問(wèn)題的能力。
18、在一種可能的設(shè)計(jì)中,通過(guò)以下公式計(jì)算所述類型注意力權(quán)重:
19、
20、其中,為節(jié)點(diǎn)vi和vj之間的類型注意力權(quán)重;σ為激活函數(shù);
21、t(vi)為節(jié)點(diǎn)vi的類型表示;t(vj)為節(jié)點(diǎn)vj的類型表示;wtype為權(quán)重矩陣參數(shù);btype為偏置參數(shù)。
22、上述技術(shù)方案中,通過(guò)計(jì)算類型注意力權(quán)重,可以提升類型錯(cuò)誤檢測(cè):類型錯(cuò)誤是常見的編程錯(cuò)誤之一,可能導(dǎo)致運(yùn)行時(shí)異?;蜻壿嬪e(cuò)誤。類型注意力通過(guò)顯式考慮變量和表達(dá)式的類型信息,能夠幫助模型識(shí)別潛在的類型不匹配問(wèn)題。例如,如果一個(gè)整型變量被錯(cuò)誤地賦予了一個(gè)字符串值,模型可以通過(guò)分析類型信息來(lái)標(biāo)識(shí)這種不一致,并生成相關(guān)的警告或建議。理解代碼語(yǔ)義:在許多情況下,代碼的語(yǔ)義是由變量和函數(shù)的類型決定的。類型注意力使得模型能夠根據(jù)類型信息理解變量和函數(shù)調(diào)用的語(yǔ)義,從而更準(zhǔn)確地分析代碼行為。例如,模型可以區(qū)分重載函數(shù)調(diào)用的不同含義,或者理解泛型代碼的行為。支持安全和優(yōu)化的代碼修改建議:在生成代碼修改建議時(shí),考慮類型信息可以幫助模型提出更安全和優(yōu)化的方案。例如,在重構(gòu)代碼或引入新的代碼片段時(shí),模型可以確保新代碼與現(xiàn)有代碼在類型層面上的兼容性,從而避免引入新的類型錯(cuò)誤。
23、在一種可能的設(shè)計(jì)中,通過(guò)以下公式計(jì)算所述語(yǔ)義角色注意力權(quán)重:
24、
25、其中,為節(jié)點(diǎn)ei和ej之間的注意力權(quán)重;wsem為權(quán)重矩陣參數(shù);dsem為嵌入維度參數(shù)。
26、上述技術(shù)方案中,在計(jì)算語(yǔ)義角色注意力權(quán)重時(shí),可以增強(qiáng)對(duì)函數(shù)調(diào)用的理解:在代碼審查過(guò)程中,深入理解函數(shù)調(diào)用的語(yǔ)義是發(fā)現(xiàn)潛在問(wèn)題和優(yōu)化代碼質(zhì)量的關(guān)鍵。語(yǔ)義角色注意力通過(guò)專注于函數(shù)調(diào)用中各個(gè)實(shí)體的語(yǔ)義角色,使模型能夠更準(zhǔn)確地理解函數(shù)調(diào)用的目的和行為,比如哪些參數(shù)是必須的,哪些是可選的,函數(shù)的返回值應(yīng)該如何處理等。改善參數(shù)和返回值的分析:錯(cuò)誤地使用參數(shù)或忽視函數(shù)返回值是常見的編程錯(cuò)誤。語(yǔ)義角色注意力機(jī)制有助于模型識(shí)別函數(shù)調(diào)用中參數(shù)和返回值的正確語(yǔ)義角色,從而檢測(cè)出如類型不匹配、錯(cuò)誤的參數(shù)順序、未使用的返回值等問(wèn)題,這些都是代碼審查中需要重點(diǎn)關(guān)注的問(wèn)題。促進(jìn)代碼邏輯的驗(yàn)證:函數(shù)調(diào)用是代碼邏輯和功能實(shí)現(xiàn)的基礎(chǔ)。通過(guò)計(jì)算注意力權(quán)重來(lái)反映函數(shù)調(diào)用中各個(gè)實(shí)體的語(yǔ)義重要性,模型可以更好地驗(yàn)證代碼邏輯的正確性,識(shí)別潛在的邏輯錯(cuò)誤或設(shè)計(jì)上的缺陷,比如錯(cuò)誤的函數(shù)調(diào)用順序、缺失的功能實(shí)現(xiàn)、不恰當(dāng)?shù)腻e(cuò)誤處理等。
27、第二方面,本技術(shù)實(shí)施例提供一種代碼審核裝置,該裝置包括:
28、處理模塊,用于將待審核代碼生成對(duì)應(yīng)的抽象語(yǔ)法樹;所述抽象語(yǔ)法樹的每個(gè)節(jié)點(diǎn)表示所述待審核代碼的語(yǔ)法結(jié)構(gòu)中的一個(gè)基本語(yǔ)法單元;
29、所述處理模塊,還用于計(jì)算所述待審核代碼的抽象語(yǔ)法樹各節(jié)點(diǎn)的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重;
30、所述處理模塊,還用于根據(jù)所述待審核代碼的抽象語(yǔ)法樹各節(jié)點(diǎn)的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重,得到所述待審核代碼的各代碼片段的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重;
31、編碼模塊,用于將所述待審核代碼的每個(gè)第一代碼片段輸入到編碼器-解碼器模型中的編碼器,以所述第一代碼片段的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重作為所述編碼器的多頭注意力權(quán)重,得到所述第一代碼片段的編碼;
32、解碼模塊,用于將所述第一代碼片段的編碼輸入到編碼器-解碼器模型中的解碼器,得到對(duì)所述第一代碼片段進(jìn)行修改后的第二代碼片段;
33、所述處理模塊,還用于將所述待審核代碼的各第一代碼片段對(duì)應(yīng)的第二代碼片段,作為所述待審核代碼的審核結(jié)果。
34、在一種可能的設(shè)計(jì)中,將待審核代碼生成對(duì)應(yīng)的抽象語(yǔ)法樹之后,所述處理模塊,還用于將所述待審核代碼運(yùn)行時(shí)的動(dòng)態(tài)代碼數(shù)據(jù)添加到所述抽象語(yǔ)法樹中,得到增強(qiáng)語(yǔ)法樹;所述動(dòng)態(tài)代碼數(shù)據(jù)包括所述待審核代碼運(yùn)行時(shí)變量的實(shí)際值和狀態(tài);所述處理模塊,在計(jì)算所述待審核代碼的抽象語(yǔ)法樹各節(jié)點(diǎn)的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重時(shí),具體用于計(jì)算所述待審核代碼的增強(qiáng)語(yǔ)法樹各節(jié)點(diǎn)的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重。
35、在一種可能的設(shè)計(jì)中,所述處理模塊,在根據(jù)所述待審核代碼的抽象語(yǔ)法樹各節(jié)點(diǎn)的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重,得到所述待審核代碼的各代碼片段的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重時(shí),具體用于,包括對(duì)于每一代碼片段,確定代碼片段中包括的抽象語(yǔ)法樹各節(jié)點(diǎn)對(duì)所述代碼片段的貢獻(xiàn)度;基于所述貢獻(xiàn)度確定所述代碼片段中包括的抽象語(yǔ)法樹各節(jié)點(diǎn)對(duì)應(yīng)的權(quán)重;根據(jù)所述待審核代碼的抽象語(yǔ)法樹各節(jié)點(diǎn)的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重及各節(jié)點(diǎn)對(duì)應(yīng)的權(quán)重,得到所述待審核代碼的各代碼片段的語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重。
36、在一種可能的設(shè)計(jì)中,所述裝置還包括訓(xùn)練模塊,用于通過(guò)以下方式對(duì)編碼器-解碼器模型進(jìn)行訓(xùn)練:隨機(jī)對(duì)原始代碼的至少一個(gè)語(yǔ)句進(jìn)行遮擋,得到遮擋代碼;對(duì)所述遮擋代碼中每個(gè)遮擋語(yǔ)句的內(nèi)容進(jìn)行預(yù)測(cè),得到每個(gè)遮擋語(yǔ)句的填充建議及對(duì)應(yīng)的概率;根據(jù)所述每個(gè)遮擋語(yǔ)句的填充建議及對(duì)應(yīng)的概率,對(duì)所述遮擋代碼中的遮擋語(yǔ)句進(jìn)行填充,得到填充代碼;將所述填充代碼中的至少一個(gè)第三代碼片段輸入到所述編碼器-解碼器模型中,得到對(duì)所述第三代碼片段進(jìn)行修改后的第四代碼片段;計(jì)算所述第四代碼片段和對(duì)應(yīng)原始代碼片段的相似度;根據(jù)所述第四代碼片段和對(duì)應(yīng)原始代碼片段的相似度,對(duì)所述編碼器的多頭注意力權(quán)重中的各項(xiàng)注意力權(quán)重的參數(shù)進(jìn)行調(diào)整;所述多頭注意力權(quán)重包括語(yǔ)法樹注意力權(quán)重、類型注意力權(quán)重和語(yǔ)義角色注意力權(quán)重;所述參數(shù)包括權(quán)重矩陣參數(shù)、偏置參數(shù)和嵌入維度參數(shù)。
37、在一種可能的設(shè)計(jì)中,所述訓(xùn)練模塊,在計(jì)算所述第四代碼片段和對(duì)應(yīng)原始代碼片段的相似度時(shí),還用于基于所述第四代碼片段和對(duì)應(yīng)原始代碼片段的靜態(tài)特征得到靜態(tài)相似度;所述靜態(tài)特征包括代碼本身的文本特征;基于所述第四代碼片段和對(duì)應(yīng)原始代碼片段的動(dòng)態(tài)特征得到動(dòng)態(tài)相似度;所述動(dòng)態(tài)特征包括代碼運(yùn)行時(shí)變量的實(shí)際值和狀態(tài);根據(jù)所述靜態(tài)相似度、靜態(tài)相似度權(quán)重、所述動(dòng)態(tài)相似度和動(dòng)態(tài)相似度權(quán)重,得到所述第四代碼片段和對(duì)應(yīng)原始代碼片段的相似度;所述靜態(tài)相似度權(quán)重和所述動(dòng)態(tài)相似度權(quán)重根據(jù)代碼審查需求確定。
38、在一種可能的設(shè)計(jì)中,所述訓(xùn)模塊在根據(jù)所述第四代碼片段和對(duì)應(yīng)原始代碼片段的相似度,對(duì)所述編碼器的多頭注意力權(quán)重中的各項(xiàng)注意力權(quán)重的參數(shù)進(jìn)行調(diào)整時(shí),具體用于根據(jù)所述第四代碼片段和對(duì)應(yīng)原始代碼片段的相似度得到相似度損失;根據(jù)所述第四代碼片段修改的準(zhǔn)確性得到準(zhǔn)確性損失;基于所述相似度損失、所述準(zhǔn)確性損失、正則化損失及分別對(duì)應(yīng)的權(quán)重,得到總損失;根據(jù)所述總損失對(duì)所述編碼器的多頭注意力權(quán)重中的各項(xiàng)注意力權(quán)重的參數(shù)進(jìn)行調(diào)整。
39、在一種可能的設(shè)計(jì)中,通過(guò)以下公式計(jì)算所述語(yǔ)法樹注意力權(quán)重:
40、
41、其中,為節(jié)點(diǎn)vi和vj之間的語(yǔ)法樹注意力權(quán)重;σ為激活函數(shù);ei為節(jié)點(diǎn)vi的嵌入表示;ej為節(jié)點(diǎn)vj的嵌入表示;[ei;ej]表示對(duì)ei和ej進(jìn)行向量拼接;wsyn為權(quán)重矩陣參數(shù);bsyn為偏置參數(shù)。
42、在一種可能的設(shè)計(jì)中,通過(guò)以下公式計(jì)算所述類型注意力權(quán)重:
43、
44、其中,為節(jié)點(diǎn)vi和vj之間的類型注意力權(quán)重;σ為激活函數(shù);
45、t(vi)為節(jié)點(diǎn)vi的類型表示;t(vj)為節(jié)點(diǎn)vj的類型表示;wtype為權(quán)重矩陣參數(shù);btype為偏置參數(shù)。
46、在一種可能的設(shè)計(jì)中,通過(guò)以下公式計(jì)算所述語(yǔ)義角色注意力權(quán)重:
47、
48、其中,為節(jié)點(diǎn)ei和ej之間的注意力權(quán)重;wsem為權(quán)重矩陣參數(shù);dsem為嵌入維度參數(shù)。
49、第三方面,本技術(shù)實(shí)施例還提供一種計(jì)算設(shè)備,包括:
50、存儲(chǔ)器,用于存儲(chǔ)程序指令;
51、處理器,用于調(diào)用所述存儲(chǔ)器中存儲(chǔ)的程序指令,按照獲得的程序指令執(zhí)行如第一方面或第二方面的任一種可能的設(shè)計(jì)中所述的方法。
52、第四方面,本技術(shù)實(shí)施例還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中存儲(chǔ)有計(jì)算機(jī)可讀指令,當(dāng)計(jì)算機(jī)讀取并執(zhí)行所述計(jì)算機(jī)可讀指令時(shí),使得上述第一方面或第二方面的任一種可能的設(shè)計(jì)中所述的方法實(shí)現(xiàn)。