静态代码的扫描方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:20025393 阅读:23 留言:0更新日期:2019-01-06 04:22
本发明专利技术实施例公开了一种静态代码的扫描方法、装置、计算机设备及存储介质。所述方法包括:采用与至少一个崩溃类型对应的崩溃扫描规则,对目标静态代码进行扫描;其中,所述崩溃扫描规则根据与崩溃类型对应的典型场景崩溃代码确定;如果在所述目标静态代码中扫描到与崩溃扫描规则匹配的隐患代码,则将所述隐患代码的关联信息写入扫描报告中;在扫描结束后,输出所述扫描报告。本发明专利技术实施例可以准确检查崩溃问题,提高崩溃扫描工具的可靠性。

【技术实现步骤摘要】
静态代码的扫描方法、装置、计算机设备及存储介质
本专利技术实施例涉及计算机领域,尤其涉及一种静态代码的扫描方法、装置、计算机设备及存储介质。
技术介绍
随着计算机技术的不断发展,智能设备层出不穷,尤其是智能手机。用户通过使用技术人员针对不同类型操作系统开发的应用程序,实现智能手机的各种功能。目前,较常用的智能手机大多使用安卓(Android)系统,为了能够更好的满足用户的需要,技术人员需要不断对安卓系统进行开发维护,并在安卓系统在线运行过程中,针对其出现的各种运行错误,进行及时有效的修正。其中,崩溃(crash)问题是安卓系统中一个非常重要的运行错误,崩溃是指出现宕机或主机、程序停止工作等情况,当遇到崩溃(crash)问题时,程序无法正常工作,甚至影响后续执行,而且可能会导致手机无法正常使用。因此,如何能在程序运行前(静态代码阶段)尽早检查出代码中存在的crash隐患并及时修复,是目前有待解决的重要问题。专利技术人在实现本专利技术的过程中,发现现有技术存在如下缺陷:现有的基于静态代码的扫描工具中没有明确针对崩溃(crash)隐患进行扫描的工具,或者即使能够扫描出几类崩溃(crash)隐患,但是扫描结果误报率较高,准确度差。
技术实现思路
本专利技术实施例提供一种静态代码的扫描方法、装置、计算机设备及存储介质,可以在静态代码中准确检查出crash隐患代码,提高崩溃扫描工具的有效性以及可靠性。第一方面,本专利技术实施例提供了一种静态代码的扫描方法,包括:采用与至少一个崩溃类型对应的崩溃扫描规则,对目标静态代码进行扫描;其中,所述崩溃扫描规则根据与崩溃类型对应的典型场景崩溃代码确定;如果在所述目标静态代码中扫描到与崩溃扫描规则匹配的隐患代码,则将所述隐患代码的关联信息写入扫描报告中;在扫描结束后,输出所述扫描报告。第二方面,本专利技术实施例还提供了一种静态代码的扫描装置,包括:目标静态代码扫描模块,用于采用与至少一个崩溃类型对应的崩溃扫描规则,对目标静态代码进行扫描;其中,所述崩溃扫描规则根据与崩溃类型对应的典型场景崩溃代码确定;隐患代码写入模块,用于如果在所述目标静态代码中扫描到与崩溃扫描规则匹配的隐患代码,则将所述隐患代码的关联信息写入扫描报告中;扫描报告输出模块,用于在扫描结束后,输出所述扫描报告。第三方面,本专利技术实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本专利技术实施例中任一所述的静态代码的扫描方法。第四方面,本专利技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本专利技术实施例中任一所述的静态代码的扫描方法。本专利技术实施例通过在开发阶段根据针对性的崩溃扫描规则对静态代码进行扫描,并根据扫描到的隐患代码生成扫描报告,解决了现有技术中没有针对崩溃问题的扫描工具的问题,可以覆盖现有扫描工具的扫描盲区,在系统上线前及早准确检查出存在崩溃问题的隐患代码,同时崩溃扫描规则是根据与崩溃类型对应的典型场景崩溃代码确定,可以减少误报情况,提高崩溃扫描工具的可靠性,而且可以节省复查代码的人力成本,从而可以指示用户对隐患代码进行修改,提高了代码的质量以及降低了产品的崩溃率。附图说明图1为本专利技术实施例一提供的一种静态代码的扫描方法的流程图;图2a为本专利技术实施例二提供的一种静态代码的扫描方法的流程图;图2b为本专利技术实施例二提供的另一种静态代码的扫描方法的流程图;图3为本专利技术实施例三提供的一种静态代码的扫描装置的结构示意图;图4为本专利技术实施例四提供的一种计算机设备的结构示意图。具体实施方式下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。实施例一图1为本专利技术实施例一提供的一种静态代码的扫描方法的流程图,本实施例可适用于在开发过程中对设定应用程序(例如安卓程序或者java程序)的静态代码进行崩溃隐患扫描的情形,该方法可以由静态代码的扫描装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成于具有安卓系统开发功能的设备中,例如PC机。本实施例的方法具体包括如下步骤:S110,采用与至少一个崩溃类型对应的崩溃扫描规则,对目标静态代码进行扫描,其中,所述崩溃扫描规则根据与崩溃类型对应的典型场景崩溃代码确定。在本实施例中,崩溃类型可以是指存在崩溃隐患的代码类型,可以从造成的问题的角度进行区分,例如可以包括程序无响应(ApplicationNotResponding,ANR)问题、强制关闭(ForseClose)问题、立碑(tombstone)问题、系统服务关闭(SystemServerCrash)问题等;或者还可以是从存在崩溃隐患的代码指向的对象的角度进行区分,对此本专利技术实施例不作具体限制。示例性的,本实施例中的扫描方法具体可以支持扫描检查下述崩溃类型:系统API兼容性隐患、ArrayList对象使用未判空隐患、主动抛出异常未捕获处理隐患、数据库操作异常未捕获处理隐患、销毁Dialog前是否isShowing未判断隐患、通过HashMap获取对象使用未判空隐患、格式化数字异常未捕获的隐患、dismiss()方法调用前isShowing未判断的隐患、方法中存在returnnull返回对象直接进行方法调用隐患、使用动态载入界面的元素未判断是否属于此界面的隐患、ArrayList使用get方法获取元素未判断下标有效性的隐患、使用String.split结果未判断长度隐患、大图片解析导致OOM的隐患、查询数据库没有关闭游标导致OOM的隐患、使用String.substring前未判断String长度隐患、使用IO流后没有关闭导致OOM隐患、复写生命周期函数没有调用super函数隐患、使用除法或求余没有判断分母长度隐患、添加Fragment前未判断是否IsAdded隐患、数组下标越界隐患、使用在intent中获取的数据前未判空隐患、Activity未在AndroidManifest.xml中注册隐患、使用Bundle与使用从Bundle获取到的数据未判空隐患、在FragmentActivity中startActivityForResult的requestCode过大隐患、ListView在调用setAdapter()方法后再调用addHeader()方法隐患、Context强制转换为其它类型未判断其实例类型隐患、使用StatFs未捕捉异常隐患以及使用SD卡未检查mount隐患等。崩溃扫描规则是与崩溃类型对应的,用于检查出存在崩溃隐患的代码的模板、方法等。崩溃扫描规则可以是根据存在崩溃隐患的代码提炼出来的规律,并进行抽象所形成的扫描规则。可以理解的是,不同的崩溃类型对应不同的崩溃扫描规则。具体的,根据崩溃扫描规则进行扫描可以是指将崩溃扫描规则中的代表崩溃问题的代码与目标静态代码中的代码一一进行比对,当存在代码与代表崩溃问题的代码之间的相似度大于设定阈值时,确定目标静态代码中存在崩溃隐患;或者,可以基于与所述崩溃扫描规则对应的至少一项判定条件,对所述目标静态代码中的各行代码或者所述目标静态代码中包本文档来自技高网...

【技术保护点】
1.一种静态代码的扫描方法,其特征在于,包括:采用与至少一个崩溃类型对应的崩溃扫描规则,对目标静态代码进行扫描;其中,所述崩溃扫描规则根据与崩溃类型对应的典型场景崩溃代码确定;如果在所述目标静态代码中扫描到与崩溃扫描规则匹配的隐患代码,则将所述隐患代码的关联信息写入扫描报告中;在扫描结束后,输出所述扫描报告。

【技术特征摘要】
1.一种静态代码的扫描方法,其特征在于,包括:采用与至少一个崩溃类型对应的崩溃扫描规则,对目标静态代码进行扫描;其中,所述崩溃扫描规则根据与崩溃类型对应的典型场景崩溃代码确定;如果在所述目标静态代码中扫描到与崩溃扫描规则匹配的隐患代码,则将所述隐患代码的关联信息写入扫描报告中;在扫描结束后,输出所述扫描报告。2.根据权利要求1所述的方法,其特征在于,所述将所述隐患代码的关联信息写入扫描报告中,包括:将所述隐患代码在所述目标静态代码中的定位信息,以及与所述隐患代码匹配的崩溃扫描规则对应的标准代码模板,写入所述扫描报告中;所述标准代码模板用于指导用户对所述隐患代码的修改。3.根据权利要求1所述的方法,其特征在于,在采用与至少一个崩溃类型对应的崩溃扫描规则,对目标静态代码进行扫描之前,还包括:收集崩溃案例,所述崩溃案例包括:崩溃类型,以及与所述崩溃类型对应的异常代码;根据所述崩溃案例,统计与各所述崩溃类型分别对应的异常代码集合;筛选出各所述异常代码集合中满足相似度条件的多个异常代码作为与崩溃类型对应的典型场景崩溃代码;根据与崩溃类型对应的典型场景崩溃代码,确定与崩溃类型对应的崩溃扫描规则。4.根据权利要求3所述的方法,其特征在于,所述收集崩溃案例,包括:获取设定业务平台中上报的运行日志;如果在所述运行日志中识别出崩溃错误,则在与所述运行日志匹配的源代码中定位与所述崩溃错误对应的代码;根据所述崩溃错误以及定位的所述代码构成所述崩溃案例;和/或在互联网中搜索包括设定崩溃关键词的页面,如果在搜索到的页面中与所述崩溃关键词的定位位置关联的搜索位置处识别出代码,则根据所述崩溃关键词以及识别出的所...

【专利技术属性】
技术研发人员:陈夏辉袁辉吴彬杰
申请(专利权)人:百度在线网络技术北京有限公司
类型:发明
国别省市:北京,11

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

1