Api兼容性掃描方法和api兼容性掃描裝置制造方法
【專利摘要】提供了一種API兼容性掃描方法和API兼容性掃描裝置。API兼容性掃描方法包括:獲取操作系統(tǒng)的API的版本兼容性規(guī)則,并建立包括API的引入版本信息和廢棄版本信息的系統(tǒng)API兼容性規(guī)則庫;針對將被檢查API兼容性的應(yīng)用程序,獲取應(yīng)用程序的代碼語法樹;解析代碼語法樹以獲取應(yīng)用程序所使用的API;基于API兼容性規(guī)則庫中與獲取的API對應(yīng)的廢棄版本信息來確定應(yīng)用程序的API的兼容性隱患。
【專利說明】API兼容性掃描方法和API兼容性掃描裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及操作系統(tǒng)領(lǐng)域,更具體地,涉及一種針對操作系統(tǒng)中的應(yīng)用程序的應(yīng)用程序接口(API)兼容性掃描方法和API兼容性掃描裝置。
【背景技術(shù)】
[0002]隨著諸如Google的Android操作系統(tǒng)、蘋果公司的iOS操作系統(tǒng)的系統(tǒng)版本越來越多,操作系統(tǒng)的應(yīng)用程序接口(API)的版本兼容性問題越來越突出。例如,當(dāng)某API要求運(yùn)行在iOS操作系統(tǒng)的5.0版本以上,而某個應(yīng)用程序(APP)使用這個API運(yùn)行在iOS操作系統(tǒng)的4.3版本時(shí),如果不判斷系統(tǒng)的版本則有可能導(dǎo)致APP崩潰或功能異常。又例如,如果某系統(tǒng)API在Android 4.0以上版本已廢棄,而開發(fā)者調(diào)用該API時(shí)忘記增加版本判斷,則該APP對4.0以上版本的Android操作系統(tǒng)的適配就存在隱患。
[0003]因此,需要提供一種能夠自動掃描出APP的API的兼容性問題的方法和裝置。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的一方面提供一種用于應(yīng)用程序的API兼容性掃描方法,包括:獲取操作系統(tǒng)的API的版本兼容性規(guī)則,并建立包括API的引入版本信息和廢棄版本信息的系統(tǒng)API兼容性規(guī)則庫;針對將被檢查API兼容性的應(yīng)用程序,獲取應(yīng)用程序的代碼語法樹;解析代碼語法樹以獲取應(yīng)用程序所使用的API ;基于API兼容性規(guī)則庫中與獲取的API對應(yīng)的廢棄版本信息來確定應(yīng)用程序的API的兼容性隱患。
[0005]根據(jù)本發(fā)明的一方面,如果在應(yīng)用程序的代碼語法樹中存在版本判斷代碼,則不執(zhí)行確定API的兼容性隱患的步驟。
[0006]根據(jù)本發(fā)明的一方面,自動從操作系統(tǒng)的官方網(wǎng)站獲取最新的API的版本兼容性規(guī)則,或者手動設(shè)置API的版本兼容性規(guī)則。
[0007]根據(jù)本發(fā)明的一方面,API兼容性掃描方法還包括:在解析代碼語法樹之前對代碼語法樹進(jìn)行遍歷以得到精簡的代碼語法樹。
[0008]根據(jù)本發(fā)明的一方面,API兼容性掃描方法還包括:基于API兼容性規(guī)則庫中與獲取的API對應(yīng)的引入版本信息和應(yīng)用程序的最低支持版本來確定應(yīng)用程序的API的兼容性隱患。
[0009]根據(jù)本發(fā)明的一方面,API兼容性掃描方法還包括:基于確定的API的兼容性隱患生成兼容性隱患報(bào)告,兼容性隱患報(bào)告包括關(guān)于存在兼容性隱患的API被調(diào)用的次數(shù)以及在代碼中的位置的信息。
[0010]本發(fā)明的另一方面提供一種用于掃描應(yīng)用程序的API兼容性的API兼容性掃描裝置,包括:API兼容性規(guī)則庫單元,獲取操作系統(tǒng)的API的版本兼容性規(guī)則,并建立包括API的引入版本信息和廢棄版本信息的系統(tǒng)API兼容性規(guī)則庫;代碼語法樹獲取單元,用于針對將被檢查API兼容性的應(yīng)用程序,獲取應(yīng)用程序的代碼語法樹;API抓取單元,用于解析代碼語法樹以獲取應(yīng)用程序所使用的API ;API兼容性確定單元,用于基于API兼容性規(guī)則庫中與獲取的API對應(yīng)的廢棄版本信息來確定應(yīng)用程序的API的兼容性隱患。
[0011]根據(jù)本發(fā)明的另一方面,如果API兼容性確定單元確定在應(yīng)用程序的代碼語法樹中存在版本判斷代碼,則不執(zhí)行確定API的兼容性隱患的操作。
[0012]根據(jù)本發(fā)明的另一方面,API兼容性規(guī)則庫單元自動從操作系統(tǒng)的官方網(wǎng)站獲取最新的API的版本兼容性規(guī)則,或者根據(jù)用戶的設(shè)置來手動地設(shè)置API的版本兼容性規(guī)則。
[0013]根據(jù)本發(fā)明的另一方面,API兼容性掃描裝置還包括:代碼語法樹遍歷單元,用于在API抓取單元解析代碼語法樹之前對代碼語法樹進(jìn)行遍歷以得到精簡的代碼語法樹。
[0014]根據(jù)本發(fā)明的另一方面,API兼容性確定單元還基于API兼容性規(guī)則庫中與獲取的API對應(yīng)的引入版本信息和應(yīng)用程序的最低支持版本來確定應(yīng)用程序的API的兼容性隱
串
[0015]根據(jù)本發(fā)明的另一方面,API兼容性掃描裝置還包括:兼容性報(bào)告生成單元,基于確定的API的兼容性隱患生成兼容性隱患報(bào)告,兼容性隱患報(bào)告包括關(guān)于存在兼容性隱患的API被調(diào)用的次數(shù)以及在代碼中的位置的信息。
【專利附圖】
【附圖說明】
[0016]通過下面結(jié)合附圖進(jìn)行的描述,本發(fā)明的上述和其他目的和特點(diǎn)將會變得更加清楚,其中:
[0017]圖1是示出根據(jù)本發(fā)明實(shí)施例的用于應(yīng)用程序(APP)的應(yīng)用程序接口(API)兼容性掃描方法的流程圖;
[0018]圖2是示出根據(jù)本發(fā)明實(shí)施例的用于掃描應(yīng)用程序(APP)的API兼容性的裝置的示圖。
【具體實(shí)施方式】
[0019]下面提供參照附圖進(jìn)行的描述以有助于全面理解如權(quán)利要求及其等同物所限定的本發(fā)明的示例性實(shí)施例。所述描述包括各種詳細(xì)的細(xì)節(jié)以有助于理解,而這些描述將被認(rèn)為僅為示例性的。因此,本領(lǐng)域的普通技術(shù)人員將意識到在不脫離本發(fā)明的范圍和精神的情況下可做出在此描述的各種改變和變型。另外,為了清晰和簡潔,可省略對公知功能和構(gòu)造的描述。
[0020]圖1示出的是根據(jù)本發(fā)明實(shí)施例的用于應(yīng)用程序(APP)的應(yīng)用程序接口(API)兼容性掃描方法的流程圖。
[0021]如圖1所示,首先,在步驟S101,獲取操作系統(tǒng)的所有API的版本兼容性規(guī)則,并建立系統(tǒng)API兼容性規(guī)則庫。具體地,以iOS操作系統(tǒng)或Android操作系統(tǒng)為例,可以從iOS操作系統(tǒng)的官方網(wǎng)站或Android操作系統(tǒng)的官方網(wǎng)站自動獲取iOS操作系統(tǒng)的API或Android操作系統(tǒng)的API的版本兼容性規(guī)則。API的版本兼容性規(guī)則包含操作系統(tǒng)的API的軟件開發(fā)工具包(SDK)的引入版本信息和廢棄版本信息。例如,Android官網(wǎng)給出的某API “android, service/textservice” 的引入系統(tǒng)版本信息為:Added in API level 14,這說明該API僅兼容Android osl4以上版本。
[0022]通過獲取所有的API的版本兼容性規(guī)則,可建立起API兼容性規(guī)則庫,其基本結(jié)構(gòu)如下:[0023]
【權(quán)利要求】
1.一種用于應(yīng)用程序的API兼容性掃描方法,包括: 獲取操作系統(tǒng)的API的版本兼容性規(guī)則,并建立包括API的引入版本信息和廢棄版本信息的系統(tǒng)API兼容性規(guī)則庫; 針對將被檢查API兼容性的應(yīng)用程序,獲取應(yīng)用程序的代碼語法樹; 解析代碼語法樹以獲取應(yīng)用程序所使用的API ; 基于API兼容性規(guī)則庫中與獲取的API對應(yīng)的廢棄版本信息來確定應(yīng)用程序的API的兼容性隱患。
2.如權(quán)利要求1所述的API兼容性掃描方法,其中,如果在應(yīng)用程序的代碼語法樹中存在版本判斷代碼,則不執(zhí)行確定API的兼容性隱患的步驟。
3.如權(quán)利要求1所述的API兼容性掃描方法,其中,自動從操作系統(tǒng)的官方網(wǎng)站獲取最新的API的版本兼容性規(guī)則,或者手動設(shè)置API的版本兼容性規(guī)則。
4.如權(quán)利要求1所述的API兼容性掃描方法,還包括:在解析代碼語法樹之前對代碼語法樹進(jìn)行遍歷以得到精簡的代碼語法樹。
5.如權(quán)利要求1所述的API兼容性掃描方法,還包括:基于API兼容性規(guī)則庫中與獲取的API對應(yīng)的引入版本信息和應(yīng)用程序的最低支持版本來確定應(yīng)用程序的API的兼容性隱患。
6.如權(quán)利要求1-5中的任意一個所述的API兼容性掃描方法,還包括:基于確定的API的兼容性隱患生成兼容性隱患報(bào)告,兼容性隱患報(bào)告包括關(guān)于存在兼容性隱患的API被調(diào)用的次數(shù)以及在代碼中的位置的信息。
7.一種用于掃描應(yīng) 用程序的API兼容性的API兼容性掃描裝置,包括: API兼容性規(guī)則庫單元,獲取操作系統(tǒng)的API的版本兼容性規(guī)則,并建立包括API的引入版本信息和廢棄版本信息的系統(tǒng)API兼容性規(guī)則庫; 代碼語法樹獲取單元,用于針對將被檢查API兼容性的應(yīng)用程序,獲取應(yīng)用程序的代碼語法樹; API抓取單元,用于解析代碼語法樹以獲取應(yīng)用程序所使用的API ; API兼容性確定單元,用于基于API兼容性規(guī)則庫中與獲取的API對應(yīng)的廢棄版本信息來確定應(yīng)用程序的API的兼容性隱患。
8.如權(quán)利要求7所述的API兼容性掃描裝置,其中,如果API兼容性確定單元確定在應(yīng)用程序的代碼語法樹中存在版本判斷代碼,則不執(zhí)行確定API的兼容性隱患的操作。
9.如權(quán)利要求7所述的API兼容性掃描裝置,其中,API兼容性規(guī)則庫單元自動從操作系統(tǒng)的官方網(wǎng)站獲取最新的API的版本兼容性規(guī)則,或者根據(jù)用戶的設(shè)置來手動地設(shè)置API的版本兼容性規(guī)則。
10.如權(quán)利要求7所述的API兼容性掃描裝置,還包括:代碼語法樹遍歷單元,用于在API抓取單元解析代碼語法樹之前對代碼語法樹進(jìn)行遍歷以得到精簡的代碼語法樹。
11.如權(quán)利要求7所述的API兼容性掃描裝置,API兼容性確定單元還基于API兼容性規(guī)則庫中與獲取的API對應(yīng)的引入版本信息和應(yīng)用程序的最低支持版本來確定應(yīng)用程序的API的兼容性隱患。
12.如權(quán)利要求7-11中的任意一個所述的API兼容性掃描裝置,還包括:兼容性報(bào)告生成單兀,基于確定的API的兼容性隱患生成兼容性隱患報(bào)告,兼容性隱患報(bào)告包括關(guān)于存在兼容性隱患的API被 調(diào)用的次數(shù)以及在代碼中的位置的信息。
【文檔編號】G06F17/30GK103440337SQ201310404766
【公開日】2013年12月11日 申請日期:2013年9月9日 優(yōu)先權(quán)日:2013年9月9日
【發(fā)明者】周建龍 申請人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司