一种小程序代码检测方法、装置及系统与流程

文档序号:29156813发布日期:2022-03-08 21:04阅读:225来源:国知局
一种小程序代码检测方法、装置及系统与流程

1.本发明实施例涉及计算机技术领域,尤其涉及一种小程序代码检测方法、装置及系统。


背景技术:

2.随着互联网的发展,各类小程序、微程序等应运而生。小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用,也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。
3.在小程序上线应用之前,需要对小程序代码进行检测,用以确定小程序的安全性,所以亟需一种针对小程序代码进行准确检测的方法。


技术实现要素:

4.本技术实施例提供了一种小程序代码检测方法、装置及系统,用以针对小程序代码进行准确检测。
5.一方面,本技术实施例提供一种小程序代码检测方法,方法包括:
6.获取针对目标小程序的小程序代码检测数据,小程序代码检测数据中包括目标小程序的代码包以及检测任务;
7.根据检测任务,运行代码包,得到代码运行结果;
8.在确定代码运行结果与检测任务预设的目标结果匹配时,则确定小程序代码检测任务的检测结果为检测通过。
9.一方面,本技术实施例提供一种小程序代码检测装置,包括:
10.获取单元,用于获取针对目标小程序的小程序代码检测数据,小程序代码检测数据中包括目标小程序的代码包以及检测任务;
11.代码运行单元,用于根据检测任务,运行代码包,得到代码运行结果;
12.检测结果确定单元,用于在确定代码运行结果与检测任务预设的目标结果匹配时,则确定小程序代码检测任务的检测结果为检测通过。
13.可选的,代码中包括逻辑层代码,检测任务包括确定是否包括预设数据信息;
14.代码运行单元具体用于:
15.调用脚本语言引擎,运行逻辑层代码,确定逻辑层代码在运行过程中产生的逻辑层运行数据,将逻辑层运行数据作为代码运行结果;
16.检测结果确定单元还用于:
17.确定逻辑层运行数据与预设数据信息之间的匹配关系。
18.可选的,代码中还包括视图层代码,检测任务还包括确定是否包括预设网页信息;
19.代码运行单元具体用于:
20.调用浏览器引擎,运行视图层代码,确定视图层代码在运行过程中产生的视图网页信息,将视图网页信息作为代码运行结果;
21.检测结果确定单元还用于:
22.确定所述视图网页信息与预设网页信息之间的匹配关系。
23.可选的,检测任务具体包括确定目标小程序各显示页面是否包括各显示页面对应的预设网页信息;
24.代码运行单元还用于:
25.调用浏览器引擎,运行目标小程序各显示页面对应的各视图层代码,确定目标小程序各显示页面信息,将所述各显示页面信息作为所述代码运行结果;
26.检测结果确定单元具体用于:
27.确定所述目标小程序各显示页面信息与各对应的所述预设网页信息的之间匹配关系,得到各第一匹配结果;
28.根据所述各第一匹配结果确定所述视图网页信息与所述预设网页信息之间的匹配关系。
29.可选的,检测结果确定单元还用于:
30.获取与检测任务对应的检测记录方法;
31.基于检测记录方法记录代码运行结果。
32.可选的,代码运行单元具体用于:
33.调用脚本语言引擎根据检测任务,解析代码包,得到逻辑层代码以及逻辑层代码。
34.可选的,代码运行单元具体用于:
35.在确定脚本语言引擎解析出任一目标小程序显示页面对应的视图层代码后,调用浏览器引擎运行视图层代码。
36.可选的,代码包中还包括配置信息代码;
37.代码运行单元还用于:
38.调用脚本语言引擎确定代码包中的配置信息代码;
39.调用浏览器引擎新建浏览界面;
40.基于配置信息代码,在浏览器中对新建浏览界面进行配置初始化,得到配置初始化界面;
41.在配置初始化界面中运行视图层代码。
42.可选的,浏览器引擎为无头浏览器引擎,脚本语言引擎为javascript引擎,无头浏览器引擎与javascript引擎之间通过进程间通信方式进行通信。
43.一方面,本技术实施例提供了一种小程序代码检测系统,系统包括:检测模块、浏览器引擎以及脚本语言引擎;
44.检测模块用于下发小程序代码检测任务,小程序代码检测任务至少包括针对目标小程序的小程序代码检测数据;
45.浏览器引擎用于获取针对目标小程序的小程序代码检测数据,小程序代码检测数据中包括目标小程序的代码包以及检测任务;
46.浏览器引擎以及脚本语言引擎用于运行目标小程序的代码包,得到代码运行结果;
47.检测模块还用于在确定代码运行结果与检测任务预设的目标结果匹配时,则确定小程序代码检测任务的检测结果为检测通过。
48.可选的,检测任务具体包括确定目标小程序各显示页面是否包括各显示页面对应的预设网页信息;
49.浏览器引擎具体用于:
50.运行目标小程序各显示页面对应的各视图层代码,确定目标小程序各显示页面信息,将所述各显示页面信息作为所述代码运行结果;
51.检测模块具体用于:
52.确定所述目标小程序各显示页面信息与各对应的所述预设网页信息的之间匹配关系,得到各第一匹配结果;
53.根据所述各第一匹配结果确定所述视图网页信息与所述预设网页信息之间的匹配关系。
54.可选的,检测模块还用于:
55.获取与检测任务对应的检测记录方法;
56.基于检测记录方法记录代码运行结果。
57.可选的,脚本语言引擎还用于:
58.调用脚本语言引擎根据检测任务,解析代码包,得到逻辑层代码以及逻辑层代码。
59.可选的,浏览器引擎具体用于:
60.在确定脚本语言引擎解析出任一目标小程序显示页面对应的视图层代码后,运行视图层代码。
61.可选的,代码包中还包括配置信息代码;
62.脚本语言引擎还用于:
63.确定代码包中的配置信息代码;
64.浏览器引擎具体用于:
65.新建浏览界面;
66.基于配置信息代码,对新建浏览界面进行配置初始化,得到配置初始化界面;
67.在配置初始化界面中运行视图层代码。
68.可选的,浏览器引擎为无头浏览器引擎,脚本语言引擎为javascript引擎,无头浏览器引擎与javascript引擎之间通过进程间通信方式进行通信。
69.一方面,本技术实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现小程序代码检测方法的步骤。
70.一方面,本技术实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当程序在计算机设备上运行时,使得计算机设备执行小程序代码检测方法。
71.一方面,本技术实施例提供了一种计算机程序产品,包括计算机程序或指令,当计算机程序或指令被执行时,实现至少一个处理器能够执行上述小程序代码检测方法。
72.本技术实施例中,能够获取到针对需要检测的目标小程序的检测数据,检测数据中包括目标小程序的代码包以及检测任务,检测数据中代码包就是目标小程序的代码,检
测任务是针对目标小程序设定的,不同的目标小程序对应的检测任务可以是相同的,也可以是不同的,可以实现对检测任务的动态灵活配置。
73.并且根据检测任务,来运行代码包,能够得到动态的代码运行结果,这些动态代码运行结果区别于静态的代码,能够获取动态信息,例如代码之间的调用关系等,所以本技术实施例中,能够更准确的确定动态代码运行结果与检测任务预设的目标结果是否匹配,也能够得到更准确的检测结果。
附图说明
74.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
75.图1为现有技术中对小程序代码进行静态分析的场景示意图;
76.图2为本技术实施例提供的一种小程序代码检测系统的结构示意图;
77.图3为本技术实施例提供的一种小程序代码检测系统的结构示意图;
78.图4为本技术实施例提供的一种小程序代码检测方法对应的应用场景示意图;
79.图5为本技术实施例提供的一种小程序代码检测方法的流程示意图;
80.图6为本技术实施例提供的一种小程序代码检测方法的流程示意图;
81.图7为本技术实施例提供的一种小程序代码检测的记录内容的示意图;
82.图8为本技术实施例提供的一种小程序代码检测的记录内容的示意图;
83.图9为本技术实施例提供的一种小程序代码检测方法的流程示意图;
84.图10为本技术实施例提供的一种小程序代码检测装置的结构示意图;
85.图11为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
86.为了使本技术的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
87.为了方便理解,下面对本技术实施例中涉及的名词进行解释。
88.小程序:是微信提供的一种全新的互联网应用形态,其着重于“用完即走”的用户体验,用户不用关心应用的安装问题,只需“扫一扫”或者“搜一搜”,即可启动小程序。
89.小程序开发:小程序提供了一个简单、高效的应用开发框架和丰富的组件及应用程序接口api,帮助开发者在微信中开发具有原生应用程序app体验的服务。在小程序开发过程中,开发者会使用代码进行编辑,所以在完成对小程序的开发后,会生成小程序代码包。小程序的运行环境分成视图层和逻辑层,所以小程序代码包中包括视图层代码以及逻辑层代码。
90.浏览器引擎:指的是基于浏览器核心工具,在本技术实施例中浏览器引擎为一种浏览器工具,浏览器引擎的种类包括普通浏览器以及无头浏览器,无头浏览器是没有图形用户界面(gui)的浏览器,通常是通过编程或命令行界面来控制的。可以直接运行在服务
端,向客户端提供服务接口。通过命令行界面或者网络通讯实施。能模拟真实的浏览器使用场景。不显示浏览器ui的情况下运行基于ui的浏览器测试。本技术不对浏览器引擎的浏览器内核做具体限定,例如,本技术的headless browser内核可以为gecko(火狐firefox浏览器开发的内核)、也可以为trident(ie浏览器开发的内核)、还可以为blink(谷歌google浏览器开发的内核)。在一种较佳的实施方式中,应用于本技术的生成视频的方法的headless browser内核可以为webkit(苹果apple浏览器开发的内核)。
91.它们能够以与浏览器相同的方式渲染和理解html,包括诸如页面布局,颜色,字体选择和javascript与ajax的执行等样式元素。
92.脚本语言引擎:指的是处理脚本语言的一种工具,针对不同的脚本语言,可以使用不同的脚本语言引擎,例如处理javascript脚本语音时,可以使用javascript脚本语言引擎。一种可选的javascript脚本语言引擎为v8引擎。
93.进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。可以通过调用进程,实现使用一个应用程序或者应用工具中的部分功能。
94.在具体实践过程中,本技术的发明人发现,随着小程序的激增,所以需要一种准确全面的检测方法,来对小程序代码包进行检测,以保证小程序运行时的规范性、安全性、可靠性等。
95.本技术的发明人首先构思了一种使用静态分析的方法检测小程序代码的检测方法,在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。可以通过静态分析的技术检测程序代码中符号执行、抽象解释、值依赖分析等情况。
96.如图1所示,现有技术中,在开发人员提交了审核后,在审核人员的客户端中会显示小程序代码,审核人员在不运行代码的前提下,对小程序代码进行审核。
97.但是进一步地,本技术的发明人发现,由于静态分析技术并没有运行小程序代码包,所以不能确定代码运行时得到的数据,例如代码运行时,向后台触发了请求,获取了请求数据,需要确定请求数据是否满足规范性、安全性、可靠性,所以现有技术中静态分析的检测方法,不能准确全面的对小程序代码包进行检测。
98.基于上述问题,本技术实施例中又提出一种小程序代码检测方法,通过动态运行小程序,得到跟准确的检测结果。具体的,在本技术实施例中,能够获取到针对需要检测的目标小程序的检测数据,检测数据中包括目标小程序的代码包以及检测任务,检测数据中代码包就是目标小程序的代码,检测任务是针对目标小程序设定的,不同的目标小程序对应的检测任务可以是相同的,也可以是不同的,可以实现对检测任务的动态灵活配置。
99.并且根据检测任务,来运行代码包,能够得到动态的代码运行结果,这些动态代码运行结果区别于静态的代码,能够获取动态信息,例如代码之间的调用关系等,所以本技术实施例中,能够更准确的确定动态代码运行结果与检测任务预设的目标结果是否匹配,也能够得到更准确的检测结果。
100.在介绍完本技术实施例的设计思想之后,下面对本技术实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本技术实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本技术实施例提供的技术方
案。
101.为进一步说明本技术实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本技术实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本技术实施例提供的执行顺序。
102.参考图2,其为本技术实施例适用的一种小程序代码检测系统,包括检测模块201以及代码运行模块202,具体的,在本技术实施例中,检测模块201用于下发检测数据,即确定有小程序代码需要进行检测,检测数据中包括目标小程序的代码包以及检测任务。
103.代码运行模块202根据检测任务,运行代码包,得到代码运行结果,检测模块201基于代码运行结果以及预设的目标结果,确定检测结果。
104.另一种可选的实施例中,由于小程序代码包中至少包括逻辑层代码以及视图层代码,所以在运行代码时,可以调用能够运行逻辑层代码以及视图层代码的工具。
105.如图3所示,在本技术实施例中,代码运行模块202包括浏览器引擎20201以及脚本语言引擎20202,浏览器引擎20201用于运行视图层代码,脚本语言引擎20202用于运行逻辑层代码。
106.在本技术实施例中,检测模块201将检测数据发送给浏览器引擎20201,浏览器引擎20201将检测数据发送给脚本语言引擎20202,脚本语言引擎20202进行代码解析,将解析的视图层代码发送给浏览器引擎20201,浏览器引擎20201运行视图层代码。
107.在本技术实施例中,当浏览器引擎20201以及脚本语言引擎20202运行代码包中的代码后,能够得到代码运行结果,通过代码运行结果与检测任务对应的目标结果之间的匹配关系,确定检测结果。
108.可选的,检测结果可以包括检测通过或者检测不通过两种结果。
109.在上述实施例中,浏览器引擎20201与脚本语言引擎20202之间可以通过进程间通信的方式进行通信,进程间通信可以是ipc。
110.检测模块201可以通过进程调用浏览器引擎20201,同样的,浏览器引擎20201可以通过进程调用脚本语言引擎20202。
111.在上述实施例中,浏览器引擎20201可以是具有显示界面的浏览器引擎,也可以是无头浏览器引擎,在此不做限定;脚本语言引擎20202可以是各种脚本语言的引擎,例如javascript引擎,具体可以使用v8引擎。
112.如图4所示,在本技术实施例中,还提供一种小程序代码检测方法对应的应用场景,该应用场景至少包括m个终端设备401以及后台服务器402,m个终端设备401即图4中所示的终端设备401~1至终端设备401~m,m为正整数,m的值本技术实施例并不进行限制。
113.终端设备401中安装有客户端,该客户端用于基于后台服务器402提供的数据向开发者提供开发界面,显示开发内容。开发人员基于客户端进行小程序开发。
114.终端设备401可以包括一个或多个处理器4011、存储器4012、与后台服务器402交互的i/o接口4013以及显示面板4014等。终端设备401可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。
115.后台服务器402能够接收终端设备401的数据请求,并返回数据。后台服务器402在
确定需要检测小程序代码包时,对代码包进行检测,并确定检测结果。后台服务器402可以包括一个或多个处理器4021、存储器4022以及与终端设备401交互的i/o接口4023等。此外,后台服务器402还可以配置数据库4024。后台服务器402可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备401与后台服务器402可以通过有线或无线通信方式进行直接或间接地连接,本技术在此不做限制。
116.开发者可以通过终端设备401内安装的客户端来访问后台服务器402,从而能够在客户端中进行小程序开发,当开发者开发完毕后,通过终端设备401向后台服务器402发送检测数据,后台服务器402基于检测数据进行检测,并确定检测结果。
117.当然,本技术实施例提供的方法并不限用于图2-图4所示的应用场景中,还可以用于其它可能的应用场景,本技术实施例并不进行限制。对于图2-图4所示的应用场景的各个设备所能实现的功能将在后续的方法实施例中一并进行描述,在此先不过多赘述。
118.下面结合上述应用场景,对本技术实施例提供的技术方案进行说明,如图5所示,具体包括:
119.步骤s501,获取针对目标小程序的小程序代码检测数据,小程序代码检测数据中包括目标小程序的代码包以及检测任务。
120.具体的,在本技术实施例中,小程序代码检测数据是开发者编辑保存的,小程序代码检测数据可以是开发者提交审核时生成的。
121.在本技术实施例中,将需要检测的小程序作为目标小程序,目标小程序的代码构成了代码包。
122.在进行检测时,可以配置检测任务,检测任务可以是确定代码包中的代码是否合规、是否符合安全性要求等,或者,确定代码包中的代码在运行过程中,交互的数据是否合规、是否符合安全性要求等,又或者检测任务是确定目标小程序的显示界面中是否符合安全性要求等。
123.上述只是示例性的几种检测任务的具体内容,检测任务还有其它具体内容,在此不做限定。
124.步骤s502,根据所述检测任务,运行所述代码包,得到代码运行结果。
125.在本技术实施例中,根据检测任务,运行代码包,不同的检测任务,运行代码包的方式可以不同,得到的代码运行结果也不同。
126.示例性的,在本技术实施例中,检测任务可以是针对代码层面的,则运行代码包时,可以运行全部代码;或者检测任务是针对某些设定段落的代码,则可以运行该设定段落的代码;另一种可选的实施例中,检测任务是针对小程序的各功能控件,则可以运行各功能控件对应的代码。
127.在本技术实施例中,代码运行结果可以包括代码在运行过程产生的多个数据,例如在代码运行过程中发送了请求,该请求是代码运行结果,并接收了反馈数据,则该反馈数据也是代码运行结果。
128.步骤s503,在确定所述代码运行结果与所述检测任务预设的目标结果匹配时,则
确定所述小程序代码检测任务的检测结果为检测通过。
129.具体的,在本技术实施例中,在获得了代码运行结果后,与检测任务预设的目标结果进行匹配,若匹配,则可以确定小程序代码检测任务的检测结果为检测通过,若不匹配,则可以确定小程序代码检测任务的检测结果为检测不通过。
130.检测任务预设的目标结果是根据不同的检测任务确定的,不同的检测任务可以具有不同的目标结果。示例性的,检测任务为检测目标小程序的各页面信息是否安全,则目标结果可以是小程序的各页面信息安全;另一种可选的实施例中,检测任务为检测目标小程序的代码是否违禁信息,则目标结果可以是小程序代码中没有违禁信息。
131.检测任务对应的目标结果,可以是预先进行保存的,并保存了目标结果和检测任务的对应关系,例如检测任务为第一种检测任务,则根据第一种检测任务确定了对应的目标结果为第一种目标结果。
132.另一种可选的,检测任务预设的目标结果是保存在检测数据中的,在获取到检测数据后,确定目标结果。
133.通过上述步骤,简要的描述了针对小程序代码包的检测方法,下面具体介绍检测过程。
134.在步骤s501中,由于小程序开发时是涉及到视图层的开发和逻辑层的开发两部分,所以在代码包中至少存在视图层代码以及逻辑层代码。
135.整个小程序的开发框架系统分为两部分:逻辑层(app service)和视图层(view)。小程序提供了自己的视图层描述语言wxml和wxss,以及基于javascript的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑。
136.其中,视图层由wxml与wxss编写,视图层的功能是将逻辑层的数据反应成视图,同时将视图层的事件发送给逻辑层。wxml用于描述页面的结构。wxs是小程序的一套脚本语言,结合wxml,可以构建出页面的结构。wxss用于描述页面的样式。组件(component)是视图的基本组成单元。
137.所以在代码包中至少包括目标小程序的wxml、wxss以及wxs的代码。
138.进一步地,小程序开发框架的逻辑层使用javascript引擎为小程序提供开发者javascript代码的运行环境以及微信小程序的特有功能。逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈,所以代码包中还包括逻辑层代码,即javascript代码。
139.可选的,上述实施例中,由于目标小程序通常是由多页面组成,所以视图层代码包括目标小程序中各页面对应的代码,同样的,逻辑层代码也包括各页面对应的代码。
140.也就是说,在本技术实施例中,代码包中至少包括目标小程序各页面的逻辑层代码以及视图层代码。
141.一种可选的实施例中,代码包是基于代码包路径获取的,即小程序代码检测数据中包括了目标小程序的代码包路径,可以通过代码包路径获取目标小程序的代码包。
142.在步骤s502中,在根据检测任务,运行代码包时,可以调用工具来运行代码。由于开发者在开发过程中是使用了小程序开发框架,且小程序开发框架是与浏览器属于同一内核,所以可以使用浏览器引擎来运行视图层代码,而逻辑层代码是基于javascript进行编写的,所以可以通过脚本语言引擎来运行逻辑层代码。
143.一种可选的实施例中,代码包需要进行解析,开发者通过将代码打包为javascript文件,所以代码包是通过脚本语言引擎进行解析的,得到逻辑层代码以及视图层代码。
144.在本技术实施例中,具体的,视图层代码中包括目标小程序中各页面对应的代码,所以使用浏览器引擎来运行目标小程序中各页面对应的代码,得到目标小程序中各页面信息。
145.可选的,在本技术实施例中,由于需要调用脚本语言引擎来解析代码包,所以在脚本语言引擎解析出任一所述目标小程序显示页面对应的视图层代码后,调用浏览器引擎运行所述视图层代码。
146.示例性的,目标小程序包括页面1、页面2以及页面3,脚本语言引擎解析代码包,得到了页面1的视图层代码以及对应的逻辑层代码,将页面1的代码发送给浏览器引擎,浏览器引擎运行页面1的代码,得到视图层运行结果,同时,脚本语言引擎运行逻辑层代码,得到逻辑层代码运行结果。
147.在本技术实施例中,由于检测任务不同,所以可以只得到视图层代码运行结果,或者只得到逻辑层代码运行结果,或者得到视图层代码运行结果以及逻辑层代码运行结果。
148.一种可选的实施例中,可以首先调用浏览器引擎,新建浏览器界面,该界面可以是一个新建tag界面,然后调用脚本语言引擎来解析代码包,解析得到视图层代码以及逻辑层代码,同时,由于在浏览器引擎运行时,需要页面配置信息,所以在代码包中,还包括配置信息代码,调用脚本语言引擎从代码包中解析得到配置信息代码,在浏览器引擎的新建tag界面中,根据配置信息代码,得到配置信息,对新建tag界面进行配置初始化,得到配置初始化界面,在配置初始化界面中运行视图层代码。
149.在本技术实施例中,可以在调用浏览器引擎新建tag界面后,通过进程间通信方式进行通信,所以可以经过浏览器引擎调用脚本语言引擎的进程,具体图6所示,在图6中,浏览器引擎与脚本语言引擎可以通过进程间通信方式进行通信。
150.在接收到小程序代码检测数据后,小程序代码检测数据中包括目标小程序的代码包路径以及检测任务,检测任务包括针对视图层代码的第一检测任务以及针对逻辑层代码的第二检测任务。
151.浏览器引擎首先新建tag界面,然后将目标小程序的代码包路径以及第二检测任务发送给脚本语言引擎,脚本语言引擎根据目标小程序的代码包路径获得目标小程序的代码包,然后解析配置信息代码、逻辑层代码以及与逻辑层代码相关的视图层代码。
152.可选的,也可以将第一检测任务发送给脚本语言引擎,脚本语言引擎基于第一检测任务解析逻辑层代码和/或视图层代码。
153.在本技术实施例中,目标小程序包括多个显示页面,脚本语言引擎解析逻辑层代码,执行逻辑层代码,确定逻辑层代码对应的显示页面,解析该显示页面对应的视图层代码,将配置信息代码以及视图层代码发送给浏览器引擎,浏览器引擎运行视图层代码。
154.在本技术实施例中,当使用脚本语言引擎解析了哪个显示页面的视图层代码后,则将该显示页面的视图层发送给浏览器引擎,浏览器引擎运行视图层代码。
155.在本技术实施例中,脚本语言引擎执行逻辑层代码时,会执行逻辑层代码中的所有处理过程,包括调用处理过程以及与网络的交互过程,例如,逻辑层代码中包括向第三方
后台服务器送给获取数据请求,并接收第三方后台服务器返回的数据。
156.一种可选的实施例中,脚本语言引擎在运行逻辑层代码时,运行的是与第二检测任务对应的逻辑层代码,例如,第二检测任务为确定逻辑层代码与第三方服务器的交互数据是否具有预设数据信息,脚本语言引擎可以在获取到第二检测任务后,解析逻辑层代码,并运行与第三方服务器进行交互部分的逻辑层代码,得到代码运行结果。
157.另一种可选的实施例中,浏览器引擎在运行视图层代码时,运行的是与第一检测任务对应的视图层代码,所以脚本语言引擎在解析视图层代码时,可以基于第一检测任务,将与第一检测任务对应的视图层代码发送给浏览器引擎,浏览器引擎运行与第一检测任务对应的视图层代码,得到代码运行结果。
158.示例性的,第一检测任务的检测内容为只检测小程序页面显示样式,则脚本语言引擎在解析视图层代码时,将页面显示样式对应的视图层代码发送给浏览器引擎,浏览器引擎运行代码,得到代码运行结果。
159.在本技术实施例中,第一检测任务还可以是针对小程序的某个页面的视图层代码进行检测,所以脚本语言引擎在解析代码时,将该页面的视图层代码发送给浏览器引擎,浏览器引擎运行该页面的视图层代码,得到代码运行结果。
160.同样的,在本技术实施例中,第二检测任务还可以是确定设定处理过程的逻辑层代码是否具有设定数据信息,所以脚本语言引擎在解析代码时,运行该设定处理过程,得到代码运行结果。
161.进一步地,在本技术实施例中,当浏览器引擎运行了视图层代码,得到视图层代码的运行结果且脚本语言引擎运行了逻辑层代码,得到逻辑层代码的运行结果后,还需要确定,针对小程序,是否还有其它页面的逻辑层代码,若有,则脚本语言引擎解析逻辑层代码,脚本语言引擎首先运行逻辑层代码,确定逻辑层代码执行结果指向的是哪个小程序页面,解析该小程序页面的视图层代码,并将解析得到的视图层代码发送给浏览器引擎,浏览器引擎运行视图层代码,得到视图层运行结果。
162.当确定没有其它页面的逻辑层代码后,则确定检测任务完成,确定检测结果。
163.在本技术实施例中,在得到代码运行结果后,还可以通过检测任务对应的检测记录方法记录代码运行结果。
164.示例性的,第一检测任务对应的记录方法为第一记录方法,第二检测任务对应的记录方法为第二记录方法,第一记录方法与第二记录方法可以相同,也可以不同。
165.在本技术实施例中,记录方法可以是截图方法,其中截图方法可以针对整个小程序页面进行截图,也可以针对部分页面进行截图,例如将存在预设页面信息的页面部分进行截图。
166.另一种可选的实施例中,记录方法可以是将逻辑层代码运行过程中产生的函数调用信息将函数调用信息写入存储空间,或者将逻辑层代码运行中产生的网络数据写入存储空间。
167.示例性的,在本技术实施例中,如图7所示,显示的是小程序设定页面的内容,在该显示页面中,包括了预设的页面信息,这些页面信息是不符合检测要求的,所以一种可选的实施例,将具有该页面信息的整个页面进行记录,即对整个;另一种可选的实施例中,将具有该页面信息的区域截图进行记录,如图8所示。
168.具体的,预设的页面信息为“祖传、抑制、秘制”,图7所示的页面中包括“祖传”信息,一种可选的实施例中,将该页面的整个页面信息进行截图进行记录;另一种可选的实施例中,将具有“祖传”信息的这一行内容进行截屏,得到了如图8所示的记录。
169.在步骤s503中,可以将记录方法记录的内容也作为检测结果,返回检测结果。在本技术实施例中,若目标结果是页面中不包括某些预设的信息时,且视图层运行的结果中不包括某些预设的信息,则确定检测结果为检测通过。
170.同样的,若视图层运行的结果中包括某些预设的信息,则确定检测结果为检测不通过。
171.当检测结果为检测不通过时,可以将记录方法记录的内容也作为检测结果,例如,检测结果为检测不通过,检测结果中还包括截图信息以及数据存储信息。
172.在介绍了上述浏览器引擎与脚本语言引擎的交互过程后,下面具体介绍一种小程序检测方法,在本技术实施例中,浏览器引擎为无头浏览器,具体为headless chromium,脚本语言引擎为v8,上游下发检测任务,具体的,上游可以是接收开发人员的检测任务的模块,所以在本技术实施例中,上游为检测模块。
173.在本技术实施例中,headless chromium与v8之间的通信过程可以看作是进程间的调用,具体可以通过ipc中的mojo来进行通信。
174.具体的执行步骤如图9所示,在图9中,检测模块、headless chromium与v8共同完成了针对小程序的检测任务。
175.具体过程如下:
176.步骤s901,当检测模块获取到开发人员提交了检测数据后,检测模块将检测数据下发到设定端口;
177.步骤s902,headless chromium监听该端口,得到了检测数据。在本技术实施例中,检测数据中至少包括待检测小程序代码包路径以及检测任务;
178.步骤s903,headless chromium接收检测任务,并开启一个新的tab页面,用来执行小程序的webview层代码,即逻辑层代码;
179.步骤s904,headless chromium创建v8进程,后续两个进程通过mojo来进行通信;
180.步骤s905,headless chromium把小程序代码包路径和需要执行的检测任务传给v8进程;
181.步骤s906,v8进程基于小程序代码包路径读取小程序代码;
182.步骤s907,v8进程解析小程序代码,得到webview层代码运行所需要的初始配置信息、公共库代码;
183.步骤s908,v8进程运行逻辑层代码,确定需要跳转到的小程序页面的视图层代码;
184.步骤s908,headless chromium执行对应小程序页面的公共库代码和webview层代码,跳转到对应指定的小程序页面;
185.步骤s909,v8进程把webview层代码运行所需要的初始配置信息、视图层代码(具体页面的)、公共库代码发送给headless chromium;
186.步骤s910,v8进程执行检测任务,检测任务为确定网络请求是否满足预设规定,并同时记录网络请求;
187.步骤s911,headless chromium执行检测任务,检测任务为确定页面信息是否包含
预设信息,并截取页面内容;
188.步骤s912,headless chromium在任务完成后,保存任务结果;
189.步骤s913,headless chromium通知v8进程任务完成;
190.步骤s914,v8进程保存任务结果。
191.上述步骤为执行一次小程序页面的逻辑层代码以及视图层代码的过程,若在步骤s914后,v8进程执行其它页面的逻辑层代码,则返回执行步骤s908的过程。
192.若在步骤s914后,v8进程确定没有其它页面的逻辑层代码,即已经针对小程序的各页面进行了检测任务,则执行步骤s915;
193.步骤s915,v8进程将任务结果发送给headless chromium;
194.步骤s916,headless chromium将v8进程任务结果与headless chromium进程任务结果发送给检测模块。
195.在上述实施例中,步骤s910与步骤s911可以同时进行,不存在先后顺序,同样的,步骤s913与步骤s914可以同时进行,不存在先后顺序。
196.基于同样的构思,本技术实施例还提供一种检测装置,如图10所示,包括:
197.获取单元1001,用于获取针对目标小程序的小程序代码检测数据,小程序代码检测数据中包括目标小程序的代码包以及检测任务;
198.代码运行单元1002,用于根据检测任务,运行代码包,得到代码运行结果;
199.检测结果确定单元1003,用于在确定代码运行结果与检测任务预设的目标结果匹配时,则确定小程序代码检测任务的检测结果为检测通过。
200.可选的,代码中包括逻辑层代码,检测任务包括确定是否包括预设数据信息;
201.代码运行单元1002具体用于:
202.调用脚本语言引擎,运行逻辑层代码,确定逻辑层代码在运行过程中产生的逻辑层运行数据,将逻辑层运行数据作为代码运行结果;
203.检测结果确定单元1003还用于:
204.确定逻辑层运行数据与预设数据信息之间的匹配关系。
205.可选的,代码中还包括视图层代码,检测任务还包括确定是否包括预设网页信息;
206.代码运行单元1002具体用于:
207.调用浏览器引擎,运行视图层代码,确定视图层代码在运行过程中产生的视图网页信息,将视图网页信息作为代码运行结果;
208.检测结果确定单元1003还用于:
209.确定视图网页信息与预设网页信息之间的匹配关系。
210.可选的,检测任务具体包括确定目标小程序各显示页面是否包括各显示页面对应的预设网页信息;
211.代码运行单元1002还用于:
212.调用浏览器引擎,运行目标小程序各显示页面对应的各视图层代码,确定目标小程序各显示页面信息,将各显示页面信息作为代码运行结果;
213.检测结果确定单元1003具体用于:
214.确定目标小程序各显示页面信息与各对应的预设网页信息的之间匹配关系,得到各第一匹配结果;
215.根据各第一匹配结果确定视图网页信息与预设网页信息之间的匹配关系。
216.可选的,检测结果确定单元1003还用于:
217.获取与检测任务对应的检测记录方法;
218.基于检测记录方法记录代码运行结果。
219.可选的,代码运行单元1002具体用于:
220.调用脚本语言引擎根据检测任务,解析代码包,得到逻辑层代码以及逻辑层代码。
221.可选的,代码运行单元1002具体用于:
222.在确定脚本语言引擎解析出任一目标小程序显示页面对应的视图层代码后,调用浏览器引擎运行视图层代码。
223.可选的,代码包中还包括配置信息代码;
224.代码运行单元1002还用于:
225.调用脚本语言引擎确定代码包中的配置信息代码;
226.调用浏览器引擎新建浏览界面;
227.基于配置信息代码,在浏览器中对新建浏览界面进行配置初始化,得到配置初始化界面;
228.在配置初始化界面中运行视图层代码。
229.可选的,浏览器引擎为无头浏览器引擎,脚本语言引擎为javascript引擎,无头浏览器引擎与javascript引擎之间通过进程间通信方式进行通信。
230.基于相同的技术构思,本技术实施例提供了一种计算机设备,如图11所示,包括至少一个处理器1101,以及与至少一个处理器连接的存储器1102,本技术实施例中不限定处理器1101与存储器1102之间的具体连接介质,图11中处理器1101和存储器1102之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
231.在本技术实施例中,存储器1102存储有可被至少一个处理器1101执行的指令,至少一个处理器1101通过执行存储器1102存储的指令,可以执行前述的虚拟机备份方法中所包括的步骤。
232.其中,处理器1101是计算机设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器1102内的指令以及调用存储在存储器1102内的数据,从而创建虚拟机。可选的,处理器1101可包括一个或多个处理单元,处理器1101可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1101中。在一些实施例中,处理器1101和存储器1102可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
233.处理器1101可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
234.存储器1102作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程
序、非易失性计算机可执行程序以及模块。存储器1102可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(random access memory,ram)、静态随机访问存储器(static random access memory,sram)、可编程只读存储器(programmable read only memory,prom)、只读存储器(read only memory,rom)、带电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁性存储器、磁盘、光盘等等。存储器1102是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本技术实施例中的存储器1102还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
235.基于同一发明构思,本技术实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当程序在计算机设备上运行时,使得计算机设备执行虚拟机备份方法的步骤。
236.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
237.本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
238.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
239.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
240.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1