本申請涉及面向對象編程,尤其涉及代碼動態(tài)綁定分析方法、裝置、設備以及存儲介質。
背景技術:
1、在面向對象的語言中,當子類重寫了父類的方法,并且這些重寫的方法在代碼中通過父類的類型引用被調用,靜態(tài)代碼分析在嘗試查找特定子類重寫方法的直接調用時,可能無法直接識別出調用時實際會綁定到哪個子類的具體實現(xiàn),因為這一決定是在運行時通過動態(tài)綁定過程做出的。
2、因此,在嘗試通過靜態(tài)分析來查找特定子類重寫方法的直接調用時,若這些方法調用是通過父類類型的引用來進行的,靜態(tài)分析工具往往無法直接定位到與具體子類實現(xiàn)相關聯(lián)的調用點。這是因為靜態(tài)分析只能揭示出方法調用時使用的引用類型,而無法預測或確定在運行時實際會執(zhí)行哪個子類的重寫版本。只有當直接使用子類類型的引用來調用方法時,靜態(tài)分析才可能更直接地關聯(lián)到具體的子類實現(xiàn),但這并不總是可能的,特別是當存在復雜的多態(tài)和繼承關系時。
技術實現(xiàn)思路
1、本申請的主要目的在于提供一種代碼動態(tài)綁定分析方法、裝置、設備以及存儲介質,旨在解決如何提高識別面向對象動態(tài)綁定調用的準確性的技術問題。
2、為實現(xiàn)上述目的,本申請?zhí)岢鲆环N代碼動態(tài)綁定分析方法,所述方法包括:
3、提取預設格式的代碼對應的父類方法,并遞歸查詢所述父類方法的調用點;
4、識別并分析所述父類方法的調用點相關的子類方法的調用點;
5、結合所述子類方法的調用點與初始查詢的直接調用點,獲取完整的調用信息。
6、在一實施例中,所述提取預設格式的代碼對應的父類方法,并遞歸查詢所述父類方法的調用點的步驟之前,包括:
7、通過掃描引擎識別源代碼,并啟動相應的解析器或編譯器;
8、通過所述解析器或所述編譯器將所述源代碼轉換為預設格式的代碼。
9、在一實施例中,所述提取預設格式的代碼對應的父類方法,并遞歸查詢所述父類方法的調用點的步驟之前,還包括:
10、查詢預設格式的代碼的直接調用位置,獲取初始查詢的直接調用點。
11、在一實施例中,所述提取預設格式的代碼語言對應的父類方法,并通過遞歸查詢所述父類方法的調用點步驟包括:
12、分析預設格式的代碼語中特定方法所在類的聲明,以識別特定方法對應的接口信息;
13、基于所接口信息,遞歸查詢特定方法相匹配的父類方法,并獲取所述父類方法的調用點。
14、在一實施例中,所述識別并分析所述父類方法的調用點相關的子類方法的調用點的步驟包括:
15、對父類方法的調用點進行過濾,得到與所述父類方法的調用點相關的子類方法的調用點;
16、對所述子類方法的調用點進行分析,確定所述子類方法的調用點中賦值語句中的對象類型。
17、在一實施例中,所述對所述子類方法的調用點進行分析,確定所述子類方法的調用點中賦值語句和初始化語句中的對象類型的步驟之后,還包括:
18、基于所述子類方法的調用點中賦值語句中的對象類型,確認子類方法的間接調用點;
19、驗證所述子類方法的間接調用點是否指向子類方法重寫或實現(xiàn)的具體方法;
20、若是,則將所述子類方法的間接調用點作為所述子類方法的有效間接作用點。
21、在一實施例中,所述結合所述子類方法的調用點與初始查詢的直接調用點,獲取完整的調用信息的步驟包括:
22、將所述子類方法的有效間接作用點與初始查詢的直接調用點進行合并,形成完整的調用信息。
23、此外,為實現(xiàn)上述目的,本申請還提出一種代碼動態(tài)綁定分析裝置,所述代碼動態(tài)綁定分析裝置包括:
24、查詢模塊,用于提取預設格式的代碼對應的父類方法,并遞歸查詢所述父類方法的調用點;
25、分析模塊,用于識別并分析所述父類方法的調用點相關的子類方法的調用點;
26、獲取模塊,用于結合所述子類方法的調用點與初始查詢的直接調用點,獲取完整的調用信息。
27、此外,為實現(xiàn)上述目的,本申請還提出一種代碼動態(tài)綁定分析設備,所述設備包括:存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,所述計算機程序配置為實現(xiàn)如上文所述的代碼動態(tài)綁定分析方法的步驟。
28、此外,為實現(xiàn)上述目的,本申請還提出一種存儲介質,所述存儲介質為計算機可讀存儲介質,所述存儲介質上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上文所述的代碼動態(tài)綁定分析方法的步驟。
29、此外,為實現(xiàn)上述目的,本申請還提供一種計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上文所述的代碼動態(tài)綁定分析方法的步驟。
30、本申請實施例提供一種代碼動態(tài)綁定分析方法、裝置、設備以及存儲介質,該方法包括:提取預設格式的代碼對應的父類方法,并遞歸查詢所述父類方法的調用點;識別并分析所述父類方法的調用點相關的子類方法的調用點;結合所述子類方法的調用點與初始查詢的直接調用點,獲取完整的調用信息。該方法通過遞歸查詢機制確保了所有相關的動態(tài)綁定調用都被準確捕獲,并且結合數(shù)據(jù)流分析和類型驗證技術,在一定程度上減少了誤報和漏報的可能性,從而顯著提高了對動態(tài)綁定方法調用的識別準確性。
1.一種代碼動態(tài)綁定分析方法,其特征在于,所述方法包括:
2.如權利要求1所述的方法,其特征在于,所述提取預設格式的代碼對應的父類方法,并遞歸查詢所述父類方法的調用點的步驟之前,包括:
3.如權利要求1所述的方法,其特征在于,所述提取預設格式的代碼對應的父類方法,并遞歸查詢所述父類方法的調用點的步驟之前,還包括:
4.如權利要求1所述的方法,其特征在于,所述提取預設格式的代碼語言對應的父類方法,并通過遞歸查詢所述父類方法的調用點步驟包括:
5.如權利要求1所述的方法,其特征在于,所述識別并分析所述父類方法的調用點相關的子類方法的調用點的步驟包括:
6.如權利要求5所述的方法,其特征在于,所述基于所述對象類型,識別并驗證子類方法的間接調用點,以確認子類方法的間接調用點的有效性的步驟包括:
7.如權利要求3至6中任一項所述的方法,其特征在于,所述結合所述子類方法的調用點與初始查詢的直接調用點,獲取完整的調用信息的步驟包括:
8.一種代碼動態(tài)綁定分析裝置,其特征在于,所述裝置包括:
9.一種代碼動態(tài)綁定分析設備,其特征在于,所述設備包括:存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,所述計算機程序配置為實現(xiàn)如權利要求1至7中任一項所述的代碼動態(tài)綁定分析方法的步驟。
10.一種存儲介質,其特征在于,所述存儲介質為計算機可讀存儲介質,所述存儲介質上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權利要求1至7中任一項所述的代碼動態(tài)綁定分析方法的步驟。