API兼容性扫描方法和API兼容性扫描装置制造方法及图纸

技术编号:9434664 阅读:107 留言:0更新日期:2013-12-12 00:41
提供了一种API兼容性扫描方法和API兼容性扫描装置。API兼容性扫描方法包括:获取操作系统的API的版本兼容性规则,并建立包括API的引入版本信息和废弃版本信息的系统API兼容性规则库;针对将被检查API兼容性的应用程序,获取应用程序的代码语法树;解析代码语法树以获取应用程序所使用的API;基于API兼容性规则库中与获取的API对应的废弃版本信息来确定应用程序的API的兼容性隐患。

【技术实现步骤摘要】
API兼容性扫描方法和API兼容性扫描装置
本专利技术涉及操作系统领域,更具体地,涉及一种针对操作系统中的应用程序的应用程序接口(API)兼容性扫描方法和API兼容性扫描装置。
技术介绍
随着诸如Google的Android操作系统、苹果公司的iOS操作系统的系统版本越来越多,操作系统的应用程序接口(API)的版本兼容性问题越来越突出。例如,当某API要求运行在iOS操作系统的5.0版本以上,而某个应用程序(APP)使用这个API运行在iOS操作系统的4.3版本时,如果不判断系统的版本则有可能导致APP崩溃或功能异常。又例如,如果某系统API在Android4.0以上版本已废弃,而开发者调用该API时忘记增加版本判断,则该APP对4.0以上版本的Android操作系统的适配就存在隐患。因此,需要提供一种能够自动扫描出APP的API的兼容性问题的方法和装置。
技术实现思路
本专利技术的一方面提供一种用于应用程序的API兼容性扫描方法,包括:获取操作系统的API的版本兼容性规则,并建立包括API的引入版本信息和废弃版本信息的系统API兼容性规则库;针对将被检查API兼容性的应用程序,获取应用程序的代码语法树;解析代码语法树以获取应用程序所使用的API;基于API兼容性规则库中与获取的API对应的废弃版本信息来确定应用程序的API的兼容性隐患。根据本专利技术的一方面,如果在应用程序的代码语法树中存在版本判断代码,则不执行确定API的兼容性隐患的步骤。根据本专利技术的一方面,自动从操作系统的官方网站获取最新的API的版本兼容性规则,或者手动设置API的版本兼容性规则。根据本专利技术的一方面,API兼容性扫描方法还包括:在解析代码语法树之前对代码语法树进行遍历以得到精简的代码语法树。根据本专利技术的一方面,API兼容性扫描方法还包括:基于API兼容性规则库中与获取的API对应的引入版本信息和应用程序的最低支持版本来确定应用程序的API的兼容性隐患。根据本专利技术的一方面,API兼容性扫描方法还包括:基于确定的API的兼容性隐患生成兼容性隐患报告,兼容性隐患报告包括关于存在兼容性隐患的API被调用的次数以及在代码中的位置的信息。本专利技术的另一方面提供一种用于扫描应用程序的API兼容性的API兼容性扫描装置,包括:API兼容性规则库单元,获取操作系统的API的版本兼容性规则,并建立包括API的引入版本信息和废弃版本信息的系统API兼容性规则库;代码语法树获取单元,用于针对将被检查API兼容性的应用程序,获取应用程序的代码语法树;API抓取单元,用于解析代码语法树以获取应用程序所使用的API;API兼容性确定单元,用于基于API兼容性规则库中与获取的API对应的废弃版本信息来确定应用程序的API的兼容性隐患。根据本专利技术的另一方面,如果API兼容性确定单元确定在应用程序的代码语法树中存在版本判断代码,则不执行确定API的兼容性隐患的操作。根据本专利技术的另一方面,API兼容性规则库单元自动从操作系统的官方网站获取最新的API的版本兼容性规则,或者根据用户的设置来手动地设置API的版本兼容性规则。根据本专利技术的另一方面,API兼容性扫描装置还包括:代码语法树遍历单元,用于在API抓取单元解析代码语法树之前对代码语法树进行遍历以得到精简的代码语法树。根据本专利技术的另一方面,API兼容性确定单元还基于API兼容性规则库中与获取的API对应的引入版本信息和应用程序的最低支持版本来确定应用程序的API的兼容性隐患。根据本专利技术的另一方面,API兼容性扫描装置还包括:兼容性报告生成单元,基于确定的API的兼容性隐患生成兼容性隐患报告,兼容性隐患报告包括关于存在兼容性隐患的API被调用的次数以及在代码中的位置的信息。附图说明通过下面结合附图进行的描述,本专利技术的上述和其他目的和特点将会变得更加清楚,其中:图1是示出根据本专利技术实施例的用于应用程序(APP)的应用程序接口(API)兼容性扫描方法的流程图;图2是示出根据本专利技术实施例的用于扫描应用程序(APP)的API兼容性的装置的示图。具体实施方式下面提供参照附图进行的描述以有助于全面理解如权利要求及其等同物所限定的本专利技术的示例性实施例。所述描述包括各种详细的细节以有助于理解,而这些描述将被认为仅为示例性的。因此,本领域的普通技术人员将意识到在不脱离本专利技术的范围和精神的情况下可做出在此描述的各种改变和变型。另外,为了清晰和简洁,可省略对公知功能和构造的描述。图1示出的是根据本专利技术实施例的用于应用程序(APP)的应用程序接口(API)兼容性扫描方法的流程图。如图1所示,首先,在步骤S101,获取操作系统的所有API的版本兼容性规则,并建立系统API兼容性规则库。具体地,以iOS操作系统或Android操作系统为例,可以从iOS操作系统的官方网站或Android操作系统的官方网站自动获取iOS操作系统的API或Android操作系统的API的版本兼容性规则。API的版本兼容性规则包含操作系统的API的软件开发工具包(SDK)的引入版本信息和废弃版本信息。例如,Android官网给出的某API“android.service/textservice”的引入系统版本信息为:AddedinAPIlevel14,这说明该API仅兼容Androidos14以上版本。通过获取所有的API的版本兼容性规则,可建立起API兼容性规则库,其基本结构如下:系统OS系统API引入版本废弃版本备注Androidandroid.service/textservice14NullNull...............如以上的表所示,API兼容性规则库包括系统OS字段、系统API字段、引入版本字段、废弃版本字段和备注字段。系统OS字段用于表示操作系统的名称、系统API字段用于表示API的名称,引入版本字段用于表示API被引入的版本,废弃版本字段表示API被废弃的版本。如果废弃版本字段的值为空(Null),则表示该API在最新的版本的操作系统中仍然被使用。如果废弃版本字段的值不为空而具有特定的值,则表示在该值所指定的版本中该API已经被放弃,也就是说,在最新的版本的操作系统中该API已经不再被使用。可按照预定周期自动地执行步骤S101以获取最新的API兼容性信息,或者可手动地设置S101的执行时间。接下来,在步骤S103,针对将被检查API兼容性的APP工程,获取APP工程的代码语法树。例如,对于iOS操作系统,可以基于clang编译器的libtooling库,以Vistor模式访问APP的源码文件语法树中的节点。对于Android操作系统,可基于JDT编译插件获取APP的代码语法树。然后,可选择地,在步骤S105,可对在步骤S103获取的APP工程的代码语法树进行遍历,以获得精简的代码语法树。通过步骤S105,可以去除原始的代码语法树中的重复和无用的信息,从而可以提高API抓取的效率。以iOS操作系统为例,LibTooling工具提供一个通用的访问语法树的方式:RecursiveASTVisitor。通过继承这个类并实现相应的Visit方法,即可访问需要的语法树节点。下面给出遍历代码语法树的伪代码的示例:1、创建一个工厂对象,注本文档来自技高网...
API兼容性扫描方法和API兼容性扫描装置

【技术保护点】
一种用于应用程序的API兼容性扫描方法,包括:获取操作系统的API的版本兼容性规则,并建立包括API的引入版本信息和废弃版本信息的系统API兼容性规则库;针对将被检查API兼容性的应用程序,获取应用程序的代码语法树;解析代码语法树以获取应用程序所使用的API;基于API兼容性规则库中与获取的API对应的废弃版本信息来确定应用程序的API的兼容性隐患。

【技术特征摘要】
1.一种用于应用程序的API兼容性扫描方法,包括:从操作系统的官方网站获取操作系统的API的版本兼容性规则,并建立包括API的引入版本信息和废弃版本信息的系统API兼容性规则库;针对将被检查API兼容性的应用程序,获取应用程序的代码语法树;解析代码语法树以获取应用程序所使用的API;基于API兼容性规则库中与获取的API对应的废弃版本信息来确定应用程序的API的兼容性隐患。2.如权利要求1所述的API兼容性扫描方法,其中,如果在应用程序的代码语法树中存在版本判断代码,则不执行确定API的兼容性隐患的步骤。3.如权利要求1所述的API兼容性扫描方法,其中,自动从操作系统的官方网站获取最新的API的版本兼容性规则,或者手动获取API的版本兼容性规则。4.如权利要求1所述的API兼容性扫描方法,还包括:在解析代码语法树之前对代码语法树进行遍历以得到精简的代码语法树。5.如权利要求1所述的API兼容性扫描方法,还包括:基于API兼容性规则库中与获取的API对应的引入版本信息和应用程序的最低支持版本来确定应用程序的API的兼容性隐患。6.如权利要求1-5中的任意一个所述的API兼容性扫描方法,还包括:基于确定的API的兼容性隐患生成兼容性隐患报告,兼容性隐患报告包括关于存在兼容性隐患的API被调用的次数以及在代码中的位置的信息。7.一种用于扫描应用程序的API兼容性的API兼容性扫描装置,包括:API兼容性规则库单元,从操作系统的官方网站获取操作系统的A...

【专利技术属性】
技术研发人员:周建龙
申请(专利权)人:百度在线网络技术北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1