本技術(shù)涉及軟件維護(hù),尤其涉及代碼修復(fù)方法、裝置、電子設(shè)備及可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
1、在軟件開(kāi)發(fā)與維護(hù)過(guò)程中,保障代碼的質(zhì)量是確保軟件正常運(yùn)行的關(guān)鍵。目前主要靠手動(dòng)修改或者全局查找替換,去修復(fù)代碼質(zhì)量掃描過(guò)程中發(fā)現(xiàn)的各種代碼質(zhì)量問(wèn)題,但人工修復(fù)的工作量大、且容易出現(xiàn)遺漏的情況,從而導(dǎo)致存在代碼修復(fù)效率低下的問(wèn)題。
2、上述內(nèi)容僅用于輔助理解本技術(shù)的技術(shù)方案,并不代表承認(rèn)上述內(nèi)容為現(xiàn)有技術(shù)。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)的主要目的在于提供一種代碼修復(fù)方法、裝置、電子設(shè)備及可讀存儲(chǔ)介質(zhì),旨在解決代碼修復(fù)效率低下的技術(shù)問(wèn)題。
2、為實(shí)現(xiàn)上述目的,本技術(shù)提供一種代碼修復(fù)方法,方法包括:
3、獲取待修復(fù)代碼的代碼語(yǔ)法樹(shù),遍歷所述代碼語(yǔ)法樹(shù),從所述代碼語(yǔ)法樹(shù)中查找不符合預(yù)設(shè)代碼質(zhì)量規(guī)則的問(wèn)題代碼;
4、根據(jù)所述問(wèn)題代碼的問(wèn)題類(lèi)型,調(diào)用所述問(wèn)題類(lèi)型的預(yù)設(shè)修復(fù)組件,修復(fù)所述問(wèn)題代碼,其中,所述問(wèn)題類(lèi)型包括至少以下一種:簡(jiǎn)單類(lèi)型、注釋缺陷類(lèi)型、變量命名類(lèi)型以及復(fù)雜類(lèi)型,所述預(yù)設(shè)修復(fù)組件包括預(yù)設(shè)代碼解析組件和預(yù)設(shè)大語(yǔ)言模型中的至少一種。
5、在一實(shí)施例中,預(yù)設(shè)修復(fù)組件包括預(yù)設(shè)代碼解析組件;所述根據(jù)所述問(wèn)題代碼的問(wèn)題類(lèi)型,調(diào)用所述問(wèn)題類(lèi)型的預(yù)設(shè)修復(fù)組件,修復(fù)所述問(wèn)題代碼的步驟包括:
6、在所述問(wèn)題代碼的問(wèn)題類(lèi)型為簡(jiǎn)單類(lèi)型的情況下,調(diào)用所述預(yù)設(shè)代碼解析組件,查找所述問(wèn)題代碼在所述代碼語(yǔ)法樹(shù)中的代碼位置,其中,所述簡(jiǎn)單類(lèi)型包括無(wú)用子類(lèi)型和位置異常子類(lèi)型;
7、若所述問(wèn)題代碼屬于所述無(wú)用子類(lèi)型,則調(diào)用所述預(yù)設(shè)代碼解析組件,在所述代碼位置刪除所述問(wèn)題代碼;
8、若所述問(wèn)題代碼屬于位置異常子類(lèi)型,則在預(yù)設(shè)代碼邏輯順序規(guī)則中查找所述問(wèn)題代碼的標(biāo)準(zhǔn)位置,調(diào)用所述代碼解析組件,將所述問(wèn)題代碼的代碼位置調(diào)整至標(biāo)準(zhǔn)位置,以修復(fù)所述問(wèn)題代碼。
9、在一實(shí)施例中,所述根據(jù)所述問(wèn)題代碼的問(wèn)題類(lèi)型,調(diào)用所述問(wèn)題類(lèi)型的預(yù)設(shè)修復(fù)組件,修復(fù)所述問(wèn)題代碼的步驟包括:
10、在所述問(wèn)題代碼的問(wèn)題類(lèi)型為注釋缺陷類(lèi)型的情況下,根據(jù)所述問(wèn)題代碼和預(yù)設(shè)注釋提示語(yǔ),生成注釋修復(fù)語(yǔ)句;
11、將所述注釋修復(fù)語(yǔ)句輸入所述預(yù)設(shè)大語(yǔ)言模型,生成所述問(wèn)題代碼的注釋補(bǔ)充信息;
12、根據(jù)所述預(yù)設(shè)代碼解析組件,查找所述問(wèn)題代碼在所述代碼語(yǔ)法樹(shù)中的代碼位置;
13、在所述代碼位置添加所述注釋補(bǔ)充信息,以修復(fù)所述問(wèn)題代碼。
14、在一實(shí)施例中,所述根據(jù)所述問(wèn)題代碼的問(wèn)題類(lèi)型,調(diào)用所述問(wèn)題類(lèi)型的預(yù)設(shè)修復(fù)組件,修復(fù)所述問(wèn)題代碼的步驟包括:
15、在所述問(wèn)題代碼的問(wèn)題類(lèi)型為變量命名類(lèi)型的情況下,根據(jù)預(yù)設(shè)變量提示語(yǔ)和所述問(wèn)題代碼,生成變量修復(fù)語(yǔ)句;
16、將所述變量修復(fù)語(yǔ)句輸入至所述預(yù)設(shè)大語(yǔ)言模型,生成所述問(wèn)題代碼的標(biāo)準(zhǔn)修復(fù)變量;
17、根據(jù)所述預(yù)設(shè)代碼解析組件,查找所述問(wèn)題代碼在所述代碼語(yǔ)法樹(shù)中的代碼位置;
18、根據(jù)所述代碼位置,將所述問(wèn)題代碼替換為所述標(biāo)準(zhǔn)修復(fù)變量,以修復(fù)所述問(wèn)題代碼。
19、在一實(shí)施例中,所述問(wèn)題代碼包括目標(biāo)修復(fù)代碼;所述根據(jù)所述問(wèn)題代碼的問(wèn)題類(lèi)型,調(diào)用所述問(wèn)題類(lèi)型的預(yù)設(shè)修復(fù)組件,修復(fù)所述問(wèn)題代碼的步驟包括:
20、在所述問(wèn)題代碼的問(wèn)題類(lèi)型為復(fù)雜類(lèi)型的情況下,獲取所述待修復(fù)代碼的代碼調(diào)用關(guān)系圖;
21、接收外部基于所述問(wèn)題代碼輸入的問(wèn)題修復(fù)指示,在預(yù)設(shè)代碼向量數(shù)據(jù)庫(kù)中查找與所述問(wèn)題修復(fù)指示對(duì)應(yīng)的目標(biāo)修復(fù)代碼;
22、調(diào)用所述預(yù)設(shè)大語(yǔ)言模型,根據(jù)所述目標(biāo)修復(fù)代碼、所述代碼調(diào)用關(guān)系圖和所述問(wèn)題修復(fù)指示,對(duì)所述待修復(fù)代碼進(jìn)行修復(fù),得到第一待測(cè)試代碼;
23、對(duì)所述第一待測(cè)試代碼進(jìn)行測(cè)試,得到第一測(cè)試結(jié)果;
24、若所述第一測(cè)試結(jié)果表示為測(cè)試通過(guò),則確定完成對(duì)所述待修復(fù)代碼的修復(fù)。
25、在一實(shí)施例中,所述調(diào)用所述預(yù)設(shè)大語(yǔ)言模型,根據(jù)所述目標(biāo)修復(fù)代碼、所述代碼調(diào)用關(guān)系和所述問(wèn)題修復(fù)指示,對(duì)所述待修復(fù)代碼進(jìn)行修復(fù),得到第一待測(cè)試代碼的步驟還包括:
26、調(diào)用所述預(yù)設(shè)大語(yǔ)言模型,在所述代碼調(diào)用關(guān)系圖中查找所述目標(biāo)修復(fù)代碼存在調(diào)用關(guān)系的關(guān)聯(lián)代碼;
27、調(diào)用所述預(yù)設(shè)大語(yǔ)言模型,在所述問(wèn)題修復(fù)指示中確定對(duì)所述目標(biāo)修復(fù)代碼的第一修復(fù)操作,并根據(jù)所述關(guān)聯(lián)代碼與所述目標(biāo)修復(fù)代碼之間的調(diào)用關(guān)系,確定對(duì)所述關(guān)聯(lián)代碼的第二修復(fù)操作;
28、對(duì)所述目標(biāo)修復(fù)代碼進(jìn)行所述第一修復(fù)操作,對(duì)所述關(guān)聯(lián)代碼進(jìn)行第二修復(fù)操作,以對(duì)所述待修復(fù)代碼進(jìn)行修復(fù)得到第一待測(cè)試代碼。
29、在一實(shí)施例中,在所述對(duì)所述第一待測(cè)試代碼進(jìn)行測(cè)試,得到第一測(cè)試結(jié)果的步驟之后,還包括:
30、若所述第一測(cè)試結(jié)果表示為測(cè)試不通過(guò),則調(diào)用預(yù)設(shè)測(cè)試分析模型,從所述第一測(cè)試結(jié)果中確定出異常代碼和對(duì)應(yīng)的異常原因;
31、將所述異常代碼和所述異常原因輸入至預(yù)設(shè)大語(yǔ)言模型,根據(jù)所述異常代碼和所述異常原因?qū)λ龃迯?fù)代碼進(jìn)行修復(fù),得到第二待測(cè)試代碼;
32、對(duì)所述第二待測(cè)試代碼進(jìn)行測(cè)試,得到第二測(cè)試結(jié)果;
33、若所述第二測(cè)試結(jié)果滿足預(yù)設(shè)異常條件,則將所述第一測(cè)試結(jié)果更新為所述第二測(cè)試結(jié)果,并返回所述調(diào)用預(yù)設(shè)測(cè)試分析模型,從所述第一測(cè)試結(jié)果中確定出異常代碼和對(duì)應(yīng)的異常原因的步驟,直至所述第二測(cè)試結(jié)果不滿足所述預(yù)設(shè)異常條件。
34、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提供一種代碼修復(fù)裝置,所述的裝置包括:
35、獲取模塊,用于獲取待修復(fù)代碼的代碼語(yǔ)法樹(shù),遍歷所述代碼語(yǔ)法樹(shù),從所述代碼語(yǔ)法樹(shù)中查找不符合預(yù)設(shè)代碼質(zhì)量規(guī)則的問(wèn)題代碼;
36、自動(dòng)修復(fù)模塊,用于根據(jù)所述問(wèn)題代碼的問(wèn)題類(lèi)型,調(diào)用所述問(wèn)題類(lèi)型的預(yù)設(shè)修復(fù)組件,修復(fù)所述問(wèn)題代碼,其中,所述問(wèn)題類(lèi)型包括至少以下一種:簡(jiǎn)單類(lèi)型、注釋缺陷類(lèi)型、變量命名類(lèi)型以及復(fù)雜類(lèi)型,所述預(yù)設(shè)修復(fù)組件包括預(yù)設(shè)代碼解析組件和預(yù)設(shè)大語(yǔ)言模型中的至少一種。
37、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提供一種電子設(shè)備,所述電子設(shè)備包括:存儲(chǔ)器、處理器以及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的所述代碼修復(fù)方法的程序,所述代碼修復(fù)方法的程序被處理器執(zhí)行時(shí)可實(shí)現(xiàn)如上述的代碼修復(fù)方法的步驟。
38、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有實(shí)現(xiàn)代碼修復(fù)方法的程序,所述代碼修復(fù)方法的程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述的代碼修復(fù)方法的步驟。
39、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提供一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述的代碼修復(fù)方法的步驟。
40、本技術(shù)提出的一個(gè)或多個(gè)技術(shù)方案,至少具有以下技術(shù)效果:由于本技術(shù)可以獲取待修復(fù)代碼的代碼語(yǔ)法樹(shù),遍歷所述代碼語(yǔ)法樹(shù),從所述代碼語(yǔ)法樹(shù)中查找不符合預(yù)設(shè)代碼質(zhì)量規(guī)則的問(wèn)題代碼,進(jìn)而可以針對(duì)問(wèn)題代碼的問(wèn)題類(lèi)型,調(diào)用問(wèn)題類(lèi)型對(duì)應(yīng)的預(yù)設(shè)修復(fù)組件,例如,利用預(yù)設(shè)代碼解析組件和/或預(yù)設(shè)大語(yǔ)言模型,針對(duì)性的對(duì)問(wèn)題代碼進(jìn)行修復(fù),從而實(shí)現(xiàn)了對(duì)問(wèn)題代碼的自動(dòng)修復(fù),由于問(wèn)題類(lèi)型至少包括簡(jiǎn)單類(lèi)型、復(fù)雜類(lèi)型、注釋缺陷類(lèi)型、變量命名類(lèi)型,進(jìn)而便于實(shí)現(xiàn)全面自動(dòng)的對(duì)不同問(wèn)題類(lèi)型的問(wèn)題代碼進(jìn)行自動(dòng)修復(fù),無(wú)需人工手動(dòng)對(duì)每個(gè)問(wèn)題代碼進(jìn)行修復(fù),減少了人工修復(fù)的工作量,且減少了遺漏的情況出現(xiàn),從而提高了代碼的修復(fù)效率。