一种小程序代码扫描方法和装置与流程

文档序号:20700119发布日期:2020-05-12 15:34阅读:195来源:国知局
一种小程序代码扫描方法和装置与流程

本说明书涉及计算机技术领域,特别涉及一种小程序代码扫描方法和装置。



背景技术:

小程序管理方可以向第三方开发者开放小程序入口,第三方开发者(例如,可以是企业或者个人开发者)可以编写小程序,并在小程序管理方的应用程序中访问该编写的小程序。但是,由于第三方开发者水平参差不齐,导致这些第三方开发者开发的很多小程序存在由代码问题导致的白屏现象和闪退现象。因此,对小程序代码的质量进行管理才能使用户更好的使用小程序。



技术实现要素:

有鉴于此,本说明书提供一种小程序代码扫描方法和装置,以提高小程序代码的质量。

具体地,本说明书一个或多个实施例是通过如下技术方案实现的:

第一方面,提供一种小程序代码扫描方法,所述方法包括:

接收客户端发送的代码扫描请求,所述代码扫描请求携带待扫描的小程序代码;

对所述小程序代码进行解析,得到各个代码模块;

基于扫描规则对所述各个代码模块分别进行检测,得到所述小程序代码的扫描结果。

第二方面,提供一种小程序代码扫描方法,所述方法包括:

获取当前编辑文件对应的小程序代码;

向服务端发送代码扫描请求,所述代码扫描请求携带所述小程序代码;

接收所述服务端返回的对所述小程序代码的扫描结果。

第三方面,提供一种小程序代码扫描装置,所述装置包括:

请求接收模块,用于接收客户端发送的代码扫描请求,所述代码扫描请求携带待扫描的小程序代码;

代码解析模块,用于对所述小程序代码进行解析,得到各个代码模块;

扫描处理模块,用于基于扫描规则对所述各个代码模块分别进行检测,得到所述小程序代码的扫描结果。

第四方面,提供一种小程序代码扫描装置,所述装置包括:

代码获取模块,用于获取当前编辑文件对应的小程序代码;

请求发送模块,用于向服务端发送代码扫描请求,所述代码扫描请求携带所述小程序代码;

结果接收模块,用于接收所述服务端返回的对所述小程序代码的扫描结果。

第五方面,提供一种小程序代码扫描设备,所述设备包括存储器、处理器,以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行指令时实现本说明书任一实施例所述的小程序代码扫描方法,或者实现本说明书任一实施例所述的小程序代码扫描方法。

本说明书一个或多个实施例的小程序代码扫描方法和装置,通过由扫码插件将小程序代码发送到服务端进行扫描,可以及时检测到小程序代码中存在的代码编写缺陷,并及时将该缺陷展示给用户进行改进,从而避免出现由于小程序代码缺陷导致的白屏和闪退等各种类型的小程序应用问题,提高了小程序代码的质量。

附图说明

为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本说明书一个或多个实施例提供的一种对小程序代码进行扫描检测的流程;

图2为本说明书一个或多个实施例提供的一种小程序代码扫描装置的结构示意图;

图3为本说明书一个或多个实施例提供的一种小程序代码扫描装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。

本说明书实施例提供了一种小程序代码扫描方法,该方法可以对开发者开发的小程序代码进行缺陷检测,以避免出现由于小程序代码编写缺陷导致的白屏、闪退等问题。

例如,开发者可以通过ide(integrateddevelopmentenvironment,集成开发环境)开发小程序软件,并且,该小程序ide中可以安装扫描插件,该扫描插件可以用于向服务端发起对ide中编辑的小程序代码的代码扫描请求。服务端可以根据扫描插件发送的代码扫描请求,对小程序代码进行扫描检测。

请参见图1,图1示例了扫描插件和服务端之间交互执行的对小程序代码进行扫描检测的流程。该小程序代码扫描方法可以包括如下处理:

在步骤100中,扫描插件接收到扫描请求。

例如,小程序软件的开发者正在ide开发小程序,当开发者想要检测自己编写的小程序代码是否存在代码缺陷时,可以通过ide中的扫描插件发起对小程序代码的扫描请求。

示例性的,当ide中安装了扫描插件之后,用户可以看到用于选择是否发起代码扫描的选项,用户可以通过点击该选项触发发起对正在编辑的小程序代码的扫描请求。当用户点击扫描选项后,扫描插件就接收到该扫描请求。

在步骤102中,扫描插件将请求扫描的小程序代码进行加密处理。

例如,为了保证待扫描的小程序代码在向服务端传输过程中的安全性,可以在将小程序代码向扫描服务端发送之前,对小程序代码进行加密处理。加密方式包括但不限于对称加密、非对称加密、session验证等方式。

此外,当扫描插件接收到用户发起的扫描请求时,如果当前没有正在打开编辑的小程序代码文件,可以不进行响应,即不进行扫描。

在步骤104中,扫描插件向服务端发送代码扫描请求,该代码扫描请求中携带加密的小程序代码。

本步骤中,扫描插件可以将加密后的小程序代码向服务端发送,请求服务端对该小程序代码进行扫描检测,检测是否存在代码缺陷。

在步骤106中,服务端解密得到小程序代码。

本步骤中,服务端在接收到扫描插件发送的代码扫描请求后,可以对代码扫描请求中携带的加密后的小程序代码进行解密,获得待扫描的该小程序代码。此外,扫描插件安装在小程序ide,该ide相当于代码扫描的客户端,因此,也可以称为是代码扫描的服务端接收客户端发送的代码扫描请求。

在步骤108中,服务端对小程序代码进行解析得到各个代码模块。

具体的,服务端可以对待扫描的小程序代码进行拆解。

小程序代码在编写时,是按照小程序api(applicationprogramminginterface,应用程序接口)和规范进行编写的。例如,如下示例一些小程序的代码规范:小程序在开发过程中布局使用flex布局;js语句无需以分号结束;回调函数统一使用promise函数的方式进行编写,回调成功的参数统一为res,错误参数为err。可以通过api“selectorquery.exec”执行查询请求,等,以上仅是示例。

服务端可以根据小程序代码编写规范对小程序代码进行拆解,拆解得到各个代码模块,以使得拆解后的各个代码模块更便于进行扫描检测。

在一个例子中,可以对小程序代码进行逐层级的各个代码模块的拆解,得到树状层级结构的各个代码模块。示例如下:

例如,可以分析一个小程序代码中有哪些page。对于每个page,该page中包括哪些变量定义和函数定义。对于每个函数定义,包括哪些代码块。其中的每个代码块包括哪些条件分支逻辑块。每个逻辑分支块又包括哪些表达式,以及每个种类的表达式的具体构成。

如下的示例,一个小程序代码中可以包括page1和page2,以page2为例,该page2中包括对于变量1和变量2的定义、以及包括对于函数1和函数2的定义。继续以函数2为例,该函数2的定义中又包括代码块1和代码块2,其中的代码块2包括逻辑分支1和逻辑分支2。进一步的,逻辑分支2中包括表达式1和表达式2,表达式2中又包括变量定义型表达式、变量赋值型表达式和错误处理表达式。其中的变量定义型表达式包括赋值变量a和被赋值变量b。

page1

page2

变量1

变量2

函数1

函数2

代码块1

代码块2

逻辑分支1

逻辑分支2

表达式1

表达式2

变量定义型表达式

赋值变量(a)

被赋值变量(b)

变量赋值型表达式

错误处理表达式

..

如上的小程序代码解析就是一种逐层级拆解的解析方式,page相当于最高层级,page的下一层级即page中包括的各变量和函数的定义,继续下一层级例如是函数中包括的代码块,以此类推,直至拆解到小程序代码中较低层级的细粒度的代码块,比如某表达式中的变量。

这种逐层级拆解的方式,最终可以将小程序代码拆解得到树状层级结构的各个代码模块,其中,最高层级的相当于大树的树干,而较低层级的相当于大树的枝叶。不论是高层级还是低层级都可以称为各个代码模块,比如,函数定义可以是较高层级的代码模块,逻辑分支块可以是较低层级的代码模块。

在步骤110中,服务端基于扫描规则对各个代码模块分别进行检测,得到小程序代码的扫描结果。

本步骤中,服务端可以存储有用于对小程序代码进行扫描的一些扫描规则。例如,“已使用的变量应在上下文中进行了定义”可以作为一种扫描规则,如果小程序代码中使用了上下文中未定义的变量,这种用法,不会阻止小程序的运行,但是存在潜在的白屏风险,代码扫描可以提示用户“存在未定义的变量”。

例如,服务端可以遍历存储的小程序代码的各个扫描规则,每种扫描规则可以对应于一种对小程序代码的编写要求,通过根据扫描规则对小程序代码进行扫描,可以检测得到小程序代码是否存在代码编写上的缺陷。

例如,服务端对各个代码模块进行扫描检测得到的扫描结果,可以是是否符合各个扫描规则的规定,比如,上述例子中的扫描结果可以是“存在未定义的变量”,或者也可以是其他不符合小程序代码编写规范的情况。

在步骤112中,服务端将扫描结果返回给扫描插件。

在步骤114中,扫描插件通过小程序ide展示扫描结果。

本步骤中,扫描插件可以在小程序ide上展示扫描结果,例如,在上面的例子中,扫描插件可以在小程序ide上显示“存在未定义的变量”,以提示小程序的开发者对扫描结果对应的代码缺陷进行改进。

本实施例的小程序代码扫描方法,通过由扫码插件将小程序代码发送到服务端进行扫描,可以及时检测到小程序代码中存在的代码编写缺陷,并及时将该缺陷展示给用户进行改进,从而避免出现由于小程序代码缺陷导致的白屏和闪退等各种类型的小程序应用问题,提高了小程序代码的质量。

此外,由于是在服务端对小程序代码进行扫描,当出现新的扫描规则时,可以及时在服务端对扫描规则进行更新,从而也使得服务端能够根据最新的扫描规则进行扫描,得到最新的扫描结果。

本说明书实施例的服务端不仅可以对小程序进行扫描,也可以对其他类型的程序代码进行缺陷扫描,例如可以解析扫描传统的js(javascript)语言编写的程序代码。

图2为本说明书一个或多个实施例提供的一种小程序代码扫描装置的结构示意图,该装置可以应用于代码扫描的服务端。如图2所示,该装置可以包括:请求接收模块21、代码解析模块22和扫描处理模块23。

请求接收模块21,用于接收客户端发送的代码扫描请求,所述代码扫描请求携带待扫描的小程序代码。

代码解析模块22,用于对所述小程序代码进行解析,得到各个代码模块。

扫描处理模块23,用于基于扫描规则对所述各个代码模块分别进行检测,得到所述小程序代码的扫描结果。

在一个例子中,请求接收模块21,具体用于:接收客户端发送的所述代码扫描请求,所述代码扫描请求携带加密的小程序代码;并对所述加密的小程序代码进行解密,获得所述待扫描的小程序代码。

在一个例子中,代码解析模块22,具体用于:根据小程序代码规范,对所述小程序代码进行逐层级的各个代码模块的拆解,得到树状层级结构的各个代码模块。

图3为本说明书一个或多个实施例提供的一种小程序代码扫描装置的结构示意图,该装置可以应用于代码扫描的客户端,例如具体可以应用于客户端的扫描插件。如图3所示,该装置可以包括:代码获取模块31、请求发送模块32和结果接收模块33。

代码获取模块31,用于获取当前编辑文件对应的小程序代码;

请求发送模块32,用于向服务端发送代码扫描请求,所述代码扫描请求携带所述小程序代码;

结果接收模块33,用于接收所述服务端返回的对小程序代码的扫描结果。

上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。

上述套现识别方法中所示流程中的各个步骤,其执行顺序不限制于流程图中的顺序。此外,各个步骤的描述,可以实现为软件、硬件或者其结合的形式,例如,本领域技术人员可以将其实现为软件代码的形式,可以为能够实现所述步骤对应的逻辑功能的计算机可执行指令。当其以软件的方式实现时,所述的可执行指令可以存储在存储器中,并被设备中的处理器执行。

例如,对应于上述方法,本说明书一个或多个实施例同时提供一种小程序代码扫描设备,该设备可以包括处理器、存储器、以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器通过执行所述指令,用于实现本说明书任一实施例所述的小程序代码扫描方法。

本领域内的技术人员应明白,本说明书一个或多个实施例可提供为方法、系统、或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于服务端设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1