本申請(qǐng)涉及計(jì)算機(jī)軟件開(kāi)發(fā),特別是涉及一種代碼補(bǔ)全方法及相關(guān)裝置、設(shè)備和存儲(chǔ)介質(zhì)。
背景技術(shù):
1、在軟件實(shí)際開(kāi)發(fā)場(chǎng)景中,項(xiàng)目中的代碼文件之間通常是相互關(guān)聯(lián)的,包括共享的工具、配置和由模塊化導(dǎo)致的跨api調(diào)用等,這些依賴(lài)關(guān)系構(gòu)成代碼補(bǔ)全任務(wù)的重要信息來(lái)源。
2、然而,在常規(guī)的代碼補(bǔ)全任務(wù)中,通常根據(jù)同一文件中的上下文信息進(jìn)行代碼補(bǔ)全,而很難充分利用項(xiàng)目中分散在不同文件中的有用的信息以及依賴(lài)關(guān)系,代碼補(bǔ)全的效率和準(zhǔn)確率較低。
3、因此,如何提升代碼補(bǔ)全的效率和準(zhǔn)確率,成為亟待解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)主要解決的技術(shù)問(wèn)題是提供一種代碼補(bǔ)全方法及相關(guān)裝置、設(shè)備和存儲(chǔ)介質(zhì),能夠提升代碼補(bǔ)全的效率和準(zhǔn)確率。
2、為了解決上述技術(shù)問(wèn)題,本申請(qǐng)第一方面提供了一種代碼補(bǔ)全方法,代碼補(bǔ)全方法包括:獲取待補(bǔ)全項(xiàng)目的項(xiàng)目結(jié)構(gòu)信息,其中,項(xiàng)目結(jié)構(gòu)信息包括待補(bǔ)全項(xiàng)目中各文件的代碼單元以及各代碼單元之間的關(guān)系,待補(bǔ)全項(xiàng)目設(shè)有需補(bǔ)全代碼的待補(bǔ)全位置;基于項(xiàng)目結(jié)構(gòu)信息,確定待補(bǔ)全位置的代碼語(yǔ)義信息和代碼結(jié)構(gòu)信息,其中,代碼語(yǔ)義信息包括與待補(bǔ)全位置語(yǔ)義匹配的至少一個(gè)代碼單元的代碼,代碼結(jié)構(gòu)信息包括與待補(bǔ)全位置存在目標(biāo)關(guān)系的至少一個(gè)代碼單元的目標(biāo)信息;利用待補(bǔ)全位置的代碼語(yǔ)義信息和代碼結(jié)構(gòu)信息,生成待補(bǔ)全位置的待補(bǔ)全代碼。
3、為了解決上述技術(shù)問(wèn)題,本申請(qǐng)第二方面提供了一種代碼補(bǔ)全裝置,代碼補(bǔ)全裝置包括獲取模塊、確定模塊和生成模塊;獲取模塊用于獲取待補(bǔ)全項(xiàng)目的項(xiàng)目結(jié)構(gòu)信息,其中,項(xiàng)目結(jié)構(gòu)信息包括待補(bǔ)全項(xiàng)目中各文件的代碼單元以及各代碼單元之間的關(guān)系,待補(bǔ)全項(xiàng)目設(shè)有需補(bǔ)全代碼的待補(bǔ)全位置;確定模塊用于基于項(xiàng)目結(jié)構(gòu)信息,確定待補(bǔ)全位置的代碼語(yǔ)義信息和代碼結(jié)構(gòu)信息,其中,代碼語(yǔ)義信息包括與待補(bǔ)全位置語(yǔ)義匹配的至少一個(gè)代碼單元的代碼,代碼結(jié)構(gòu)信息包括與待補(bǔ)全位置存在目標(biāo)關(guān)系的至少一個(gè)代碼單元的目標(biāo)信息;生成模塊用于利用待補(bǔ)全位置的代碼語(yǔ)義信息和代碼結(jié)構(gòu)信息,生成待補(bǔ)全位置的待補(bǔ)全代碼。
4、為了解決上述技術(shù)問(wèn)題,本申請(qǐng)第三方面提供了一種電子設(shè)備,電子設(shè)備包括相互耦接的存儲(chǔ)器和處理器,處理器用于執(zhí)行存儲(chǔ)器中存儲(chǔ)的程序指令,以實(shí)現(xiàn)上述第一方面中的代碼補(bǔ)全方法。
5、為了解決上述技術(shù)問(wèn)題,本申請(qǐng)第四方面提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有程序指令,程序指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述第一方面中的代碼補(bǔ)全方法。
6、上述方案,通過(guò)獲取待補(bǔ)全項(xiàng)目的項(xiàng)目結(jié)構(gòu)信息,并基于項(xiàng)目結(jié)構(gòu)信息,確定待補(bǔ)全位置的代碼語(yǔ)義信息和代碼結(jié)構(gòu)信息,進(jìn)而利用待補(bǔ)全位置的代碼語(yǔ)義信息和代碼結(jié)構(gòu)信息,生成待補(bǔ)全位置的待補(bǔ)全代碼,其中,項(xiàng)目結(jié)構(gòu)信息包括待補(bǔ)全項(xiàng)目中各文件的代碼單元以及各代碼單元之間的關(guān)系,待補(bǔ)全項(xiàng)目設(shè)有需補(bǔ)全代碼的待補(bǔ)全位置,代碼語(yǔ)義信息包括與待補(bǔ)全位置語(yǔ)義匹配的至少一個(gè)代碼單元的代碼,代碼結(jié)構(gòu)信息包括與待補(bǔ)全位置存在目標(biāo)關(guān)系的至少一個(gè)代碼單元的目標(biāo)信息。一方面,通過(guò)獲取項(xiàng)目結(jié)構(gòu)信息,能夠結(jié)合與待補(bǔ)全位置處于同一文件以及不同文件之間的信息,以通過(guò)豐富的數(shù)據(jù)來(lái)源進(jìn)行代碼補(bǔ)全,有助于提升代碼補(bǔ)全的準(zhǔn)確率;另一方面,項(xiàng)目結(jié)構(gòu)信息以結(jié)構(gòu)化的方式展示各文件的代碼單元以及各代碼單元之間的關(guān)系,能夠?qū)Υa(bǔ)全位置位于的代碼單元進(jìn)行快速定位,進(jìn)而獲取待補(bǔ)全位置的代碼語(yǔ)義信息和代碼結(jié)構(gòu)信息,有助于提升代碼補(bǔ)全的效率。故此,能夠提升代碼補(bǔ)全的效率和準(zhǔn)確率。
1.一種代碼補(bǔ)全方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,基于所述項(xiàng)目結(jié)構(gòu)信息,確定所述待補(bǔ)全位置的代碼語(yǔ)義信息,包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述文本相似度滿足第一相似度要求的至少一個(gè)所述目標(biāo)代碼單元為:所述文本相似度從高到底排序中的前第一數(shù)量個(gè)文本相似度對(duì)應(yīng)的所述目標(biāo)代碼單元;
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,基于所述項(xiàng)目結(jié)構(gòu)信息,確定所述待補(bǔ)全位置的代碼結(jié)構(gòu)信息,包括:
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述參考代碼單元為能夠?qū)崿F(xiàn)特定功能的第一代碼單元;
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述第一代碼單元包括函數(shù)和類(lèi)兩種類(lèi)型;
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述參考代碼單元為第二代碼單元;所述待補(bǔ)全項(xiàng)目中的代碼單元包括能夠?qū)崿F(xiàn)特定功能的第一代碼單元、以及所述第二代碼單元,每個(gè)所述文件對(duì)應(yīng)一個(gè)第二代碼單元,每個(gè)所述文件中的第二代碼單元包括所述文件中除所述第一代碼單元以外的代碼;
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取待補(bǔ)全項(xiàng)目的項(xiàng)目結(jié)構(gòu)信息,包括:
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述建立表征所述待補(bǔ)全項(xiàng)目中各文件的所述代碼單元之間的關(guān)系的項(xiàng)目結(jié)構(gòu)圖,包括:
10.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述利用所述待補(bǔ)全位置的代碼語(yǔ)義信息和代碼結(jié)構(gòu)信息,生成所述待補(bǔ)全位置的待補(bǔ)全代碼,包括:
11.根據(jù)權(quán)利要求1所述的方法,其特征在于,各所述文件的代碼單元包括至少一個(gè)能夠?qū)崿F(xiàn)特定功能的第一代碼單元、以及第二代碼單元,所述第二代碼單元包括所述文件中除所述第一代碼單元以外的剩余代碼,所述第一代碼單元包括函數(shù)和類(lèi)中的至少一者,所述第二代碼單元包括導(dǎo)入語(yǔ)句;
12.一種代碼補(bǔ)全裝置,其特征在于,包括:
13.一種電子設(shè)備,其特征在于,包括相互耦接的存儲(chǔ)器和處理器,所述處理器用于執(zhí)行所述存儲(chǔ)器中存儲(chǔ)的程序指令,以實(shí)現(xiàn)權(quán)利要求1至11任一項(xiàng)所述的代碼補(bǔ)全方法。
14.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有程序指令,其特征在于,所述程序指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1至11任一項(xiàng)所述的代碼補(bǔ)全方法。