System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實現(xiàn)步驟摘要】
本申請涉及軟件開發(fā),尤其涉及一種基于go語言應(yīng)用的接口掃描方法、裝置、設(shè)備及介質(zhì)。
技術(shù)介紹
1、go語言是由google開發(fā)的一種靜態(tài)類型、編譯型的編程語言。go語言廣泛應(yīng)用于web服務(wù)、微服務(wù)架構(gòu)、云原生應(yīng)用和命令行工具等領(lǐng)域。
2、api(application?programming?interface,應(yīng)用程序編程接口)定義了軟件組件之間如何交互,使得不同的系統(tǒng)和服務(wù)能夠無縫集成。隨著微服務(wù)架構(gòu)的流行,api的數(shù)量和復雜性也在不斷增加。因此,有效地管理和維護這些api變得尤為重要。然而,手動維護api文檔是一個耗時且容易出錯的過程,因此需要對api進行自動化掃描。目前,對go語言應(yīng)用進行api掃描的方法包括在代碼中添加特定注釋,然后使用工具解析這些注釋以生成文檔,這些方法都需要額外的手動配置。
3、因此,如何提高go語言應(yīng)用中api接口收集的效率,是目前亟需解決的一個問題。
4、上述內(nèi)容僅用于輔助理解本申請的技術(shù)方案,并不代表承認上述內(nèi)容是現(xiàn)有技術(shù)。
技術(shù)實現(xiàn)思路
1、本申請的主要目的在于提供一種基于go語言應(yīng)用的接口掃描方法、裝置、設(shè)備及介質(zhì),旨在解決如何提高go語言應(yīng)用中api接口收集的效率的技術(shù)問題。
2、為實現(xiàn)上述目的,本申請?zhí)岢鲆环N基于go語言應(yīng)用的接口掃描方法,應(yīng)用于預(yù)設(shè)go語言工具,所述基于go語言應(yīng)用的接口掃描方法包括:
3、在目標go語言應(yīng)用的編譯過程中,若檢測到所述預(yù)設(shè)go語言工具的啟用指令被
4、遍歷所述抽象語法樹,從所述抽象語法樹的各節(jié)點中確定接口節(jié)點,提取所述接口節(jié)點對應(yīng)的路由路徑和函數(shù)定義,其中,所述函數(shù)定義為所述節(jié)點中具體的函數(shù)實現(xiàn);
5、基于各所述函數(shù)定義查找出所述接口節(jié)點中與所述函數(shù)定義對應(yīng)的傳入?yún)?shù)以及返回參數(shù);
6、根據(jù)各所述接口節(jié)點、所述路由路徑、所述函數(shù)定義、對應(yīng)的所述傳入?yún)?shù)和所述返回參數(shù)生成接口掃描文檔。
7、在一實施例中,其特征在于,所述生成所述目標代碼文件對應(yīng)的抽象語法樹的步驟,包括:
8、基于預(yù)設(shè)系統(tǒng)交互接口獲取文件操作模板,通過調(diào)用所述文件操作模板讀取所述目標代碼文件;
9、基于讀取后的目標代碼文件創(chuàng)建文件集,并在所述文件集中記錄所述目標代碼文件中各源代碼的位置信息;
10、根據(jù)各所述源代碼的位置信息對所述目標代碼文件進行解析,得到第一解析結(jié)果,根據(jù)所述第一解析結(jié)果確定所述目標代碼文件對應(yīng)的抽象語法樹。
11、在一實施例中,所述遍歷所述抽象語法樹,從所述抽象語法樹的各節(jié)點中確定接口節(jié)點,提取所述接口節(jié)點對應(yīng)的路由路徑和函數(shù)定義的步驟,包括:
12、遍歷所述抽象語法樹中的所有節(jié)點,確定所述抽象語法樹中的函數(shù)調(diào)用節(jié)點,其中,所述抽象語法樹中的節(jié)點包括函數(shù)調(diào)用節(jié)點、函數(shù)聲明節(jié)點、變量聲明節(jié)點、導入聲明節(jié)點、表達式節(jié)點和語句節(jié)點,所述函數(shù)調(diào)用節(jié)點用于調(diào)用已經(jīng)定義好的函數(shù),并執(zhí)行函數(shù)定義相應(yīng)的操作;
13、對于每一個所述函數(shù)調(diào)用節(jié)點,判斷各所述函數(shù)調(diào)用節(jié)點的調(diào)用函數(shù)是否為接口調(diào)用函數(shù),其中,所述接口調(diào)用函數(shù)用于調(diào)用外部接口實現(xiàn)目標go語言應(yīng)用中的功能;
14、若確定所述函數(shù)調(diào)用節(jié)點的調(diào)用函數(shù)為接口調(diào)用函數(shù),則確定所述函數(shù)調(diào)用節(jié)點為接口節(jié)點,從各所述接口節(jié)點中提取路由路徑和函數(shù)定義。
15、在一實施例中,所述對于每一個所述函數(shù)調(diào)用節(jié)點,判斷各所述函數(shù)調(diào)用節(jié)點的調(diào)用函數(shù)是否為接口調(diào)用函數(shù)的步驟,包括:
16、對于每一個所述函數(shù)調(diào)用節(jié)點,獲取各所述函數(shù)調(diào)用節(jié)點的函數(shù)名;
17、將各所述函數(shù)調(diào)用節(jié)點的所述函數(shù)名與預(yù)設(shè)路由注冊函數(shù)的函數(shù)名進行匹配,確定匹配成功的函數(shù)調(diào)用節(jié)點為路由注冊函數(shù)節(jié)點;
18、獲取各所述路由注冊函數(shù)節(jié)點的調(diào)用函數(shù),并確定各所述調(diào)用函數(shù)是否與http(hypertext?transfer?protocol,超文本傳輸協(xié)議)方法匹配;
19、若確定所述路由注冊函數(shù)節(jié)點的調(diào)用函數(shù)與http函數(shù)匹配,則確定匹配成功的所述路由注冊函數(shù)節(jié)點的調(diào)用函數(shù)為接口調(diào)用函數(shù)。
20、在一實施例中,所述確定各所述調(diào)用函數(shù)是否與http函數(shù)匹配的步驟,包括:
21、獲取各所述調(diào)用函數(shù)的參數(shù)列表;
22、檢測各所述參數(shù)列表中是否存在預(yù)設(shè)接口標識符;
23、若所述參數(shù)列表中存在所述預(yù)設(shè)接口標識符,則確定存在所述預(yù)設(shè)接口標識符的參數(shù)列表對應(yīng)的調(diào)用函數(shù)與http函數(shù)匹配。
24、在一實施例中,所述提取所述接口節(jié)點對應(yīng)的路由路徑和函數(shù)定義的步驟,包括:
25、從各所述接口節(jié)點對應(yīng)接口調(diào)用函數(shù)的參數(shù)列表中獲取路徑字符串,并從所述路徑字符串中提取路由路徑;
26、從各所述接口節(jié)點對應(yīng)的接口調(diào)用函數(shù)的參數(shù)列表中獲取處理函數(shù),通過反射獲取所述處理函數(shù)的參數(shù)類型和返回值類型,并根據(jù)所述參數(shù)類型和返回值類型確定函數(shù)定義,所述處理函數(shù)為用于處理特定http請求的函數(shù)。
27、在一實施例中,所述根據(jù)各所述接口節(jié)點、所述路由路徑、所述函數(shù)定義、對應(yīng)的所述傳入?yún)?shù)和所述返回參數(shù)生成接口掃描文檔的步驟,包括:
28、將每個所述接口節(jié)點的路由路徑、所述函數(shù)定義,對應(yīng)的所述傳入?yún)?shù)和所述返回參數(shù)按照預(yù)設(shè)結(jié)構(gòu)化數(shù)據(jù)格式存儲為相應(yīng)所述接口節(jié)點的接口信息;
29、根據(jù)各所述接口節(jié)點的所述接口信息生成接口掃描文檔。
30、此外,為實現(xiàn)上述目的,本申請還提出一種基于go語言應(yīng)用的接口掃描裝置,所述基于go語言應(yīng)用的接口掃描裝置包括:
31、生成模塊,用于在目標go語言應(yīng)用的編譯過程中,若檢測到預(yù)設(shè)go語言工具的啟用指令被觸發(fā),則獲取所述目標go語言應(yīng)用中的目標代碼文件,生成所述目標代碼文件對應(yīng)的抽象語法樹;
32、提取模塊,用于遍歷所述抽象語法樹,從所述抽象語法樹的各節(jié)點中確定接口節(jié)點,提取所述接口節(jié)點對應(yīng)的路由路徑和函數(shù)定義,其中,所述函數(shù)定義為所述節(jié)點中具體的函數(shù)實現(xiàn);
33、查找模塊,用于基于各所述函數(shù)定義查找出所述接口節(jié)點中與所述函數(shù)定義對應(yīng)的傳入?yún)?shù)以及返回參數(shù);
34、掃描模塊,用于根據(jù)各所述接口節(jié)點、所述路由路徑、所述函數(shù)定義、對應(yīng)的所述傳入?yún)?shù)和所述返回參數(shù)生成接口掃描文檔。
35、此外,為實現(xiàn)上述目的,本申請還提出一種基于go語言應(yīng)用的接口掃描設(shè)備,所述設(shè)備包括:存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,所述計算機程序配置為實現(xiàn)如上文所述的基于go語言應(yīng)用的接口掃描方法的步驟。
36、此外,為實現(xiàn)上述目的,本申請還提出一種存儲介質(zhì),所述存儲介質(zhì)為計算機可讀存儲介質(zhì),所述存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上文本文檔來自技高網(wǎng)...
【技術(shù)保護點】
1.一種基于GO語言應(yīng)用的接口掃描方法,其特征在于,應(yīng)用于預(yù)設(shè)GO語言工具,所述基于GO語言應(yīng)用的接口掃描方法包括:
2.如權(quán)利要求1所述的基于GO語言應(yīng)用的接口掃描方法,其特征在于,所述生成所述目標代碼文件對應(yīng)的抽象語法樹的步驟,包括:
3.如權(quán)利要求1所述的基于GO語言應(yīng)用的接口掃描方法,其特征在于,所述遍歷所述抽象語法樹,從所述抽象語法樹的各節(jié)點中確定接口節(jié)點,提取所述接口節(jié)點對應(yīng)的路由路徑和函數(shù)定義的步驟,包括:
4.如權(quán)利要求3所述的基于GO語言應(yīng)用的接口掃描方法,其特征在于,所述對于每一個所述函數(shù)調(diào)用節(jié)點,判斷各所述函數(shù)調(diào)用節(jié)點的調(diào)用函數(shù)是否為接口調(diào)用函數(shù)的步驟,包括:
5.如權(quán)利要求4所述的基于GO語言應(yīng)用的接口掃描方法,其特征在于,所述確定各所述調(diào)用函數(shù)是否與HTTP函數(shù)匹配的步驟,包括:
6.如權(quán)利要求1所述的基于GO語言應(yīng)用的接口掃描方法,其特征在于,所述提取所述接口節(jié)點對應(yīng)的路由路徑和函數(shù)定義的步驟,包括:
7.如權(quán)利要求1所述的基于GO語言應(yīng)用的接口掃描方法,其特征在于,所述根據(jù)各所述
8.一種基于GO語言應(yīng)用的接口掃描裝置,其特征在于,應(yīng)用于預(yù)設(shè)GO語言工具,所述基于GO語言應(yīng)用的接口掃描裝置包括:
9.一種基于GO語言應(yīng)用的接口掃描設(shè)備,其特征在于,所述設(shè)備包括:存儲器、處理函數(shù)及存儲在所述存儲器上并可在所述處理函數(shù)上運行的計算機程序,所述計算機程序配置為實現(xiàn)如權(quán)利要求1至7中任一項所述的基于GO語言應(yīng)用的接口掃描方法的步驟。
10.一種存儲介質(zhì),其特征在于,所述存儲介質(zhì)為計算機可讀存儲介質(zhì),所述介質(zhì)上存儲有計算機程序,所述計算機程序被處理函數(shù)執(zhí)行時實現(xiàn)如權(quán)利要求1至7中任一項所述的基于GO語言應(yīng)用的接口掃描方法的步驟。
...【技術(shù)特征摘要】
1.一種基于go語言應(yīng)用的接口掃描方法,其特征在于,應(yīng)用于預(yù)設(shè)go語言工具,所述基于go語言應(yīng)用的接口掃描方法包括:
2.如權(quán)利要求1所述的基于go語言應(yīng)用的接口掃描方法,其特征在于,所述生成所述目標代碼文件對應(yīng)的抽象語法樹的步驟,包括:
3.如權(quán)利要求1所述的基于go語言應(yīng)用的接口掃描方法,其特征在于,所述遍歷所述抽象語法樹,從所述抽象語法樹的各節(jié)點中確定接口節(jié)點,提取所述接口節(jié)點對應(yīng)的路由路徑和函數(shù)定義的步驟,包括:
4.如權(quán)利要求3所述的基于go語言應(yīng)用的接口掃描方法,其特征在于,所述對于每一個所述函數(shù)調(diào)用節(jié)點,判斷各所述函數(shù)調(diào)用節(jié)點的調(diào)用函數(shù)是否為接口調(diào)用函數(shù)的步驟,包括:
5.如權(quán)利要求4所述的基于go語言應(yīng)用的接口掃描方法,其特征在于,所述確定各所述調(diào)用函數(shù)是否與http函數(shù)匹配的步驟,包括:
6.如權(quán)利要求1所述的基于go語言應(yīng)用的接口掃描方法,其特征在于...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:陸志鵬,韓光,李嘉寧,鄭曦,郭祎萍,范國浩,劉彬彬,馬博原,屈鵬琦,歐冰鵬,
申請(專利權(quán))人:中電數(shù)據(jù)產(chǎn)業(yè)集團有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。