CN112905469B - 用于检测小程序能力特征的方法和装置 - Google Patents

用于检测小程序能力特征的方法和装置 Download PDF

Info

Publication number
CN112905469B
CN112905469B CN202110196387.2A CN202110196387A CN112905469B CN 112905469 B CN112905469 B CN 112905469B CN 202110196387 A CN202110196387 A CN 202110196387A CN 112905469 B CN112905469 B CN 112905469B
Authority
CN
China
Prior art keywords
applet
capability
static
list
feature
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110196387.2A
Other languages
English (en)
Other versions
CN112905469A (zh
Inventor
牛潞彪
苏璐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202110196387.2A priority Critical patent/CN112905469B/zh
Publication of CN112905469A publication Critical patent/CN112905469A/zh
Application granted granted Critical
Publication of CN112905469B publication Critical patent/CN112905469B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3628Software debugging of optimised code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开公开了用于检测小程序能力特征的方法、装置、存储介质、设备、软件产品,涉及移动终端设备领域,尤其涉及小程序领域。具体实现方案为:获取小程序包,其中,小程序包中包括代码;基于能力特征集合对应的关键词集合,对小程序包内的代码进行查找;根据查找到的关键词确定出静态能力特征列表;对静态能力特征列表中的每个静态能力特征进行分级;将级别高于预定阈值的静态能力特征确定为运行态能力特征,得到运行态能力特征列表。该实施方式能够快速、准确地提取小程序的能力特征。

Description

用于检测小程序能力特征的方法和装置
技术领域
本公开涉及移动终端设备技术领域,尤其涉及小程序技术领域。
背景技术
小程序宿主在接入小程序框架时,由于一些人为或底层技术原因,经常无法完整接入整个小程序框架,这会导致小程序宿主实际支持小程序底层能力不完整。而原先小程序下发依据,是基于完整的小程序框架支持能力基础上进行,对于底层能力支持不完整的宿主,原先的下发策略就会不准确,此时就需要了解各小程序实际使用的能力,即拿到小程序能力特征画像,从而判断小程序是否可以下发。
小程序开发者,在进行小程序业务的多次迭代后,业务会越来越复杂,通常有一些性能问题是由于小程序使用框架底层API造成的。当开发者需要知道小程序依赖底层能力时,需要人工查看所有的历史代码,比较耗费人力,此时需要一种扫描工具,可以快速分析出小程序使用的底层依赖能力,帮助开发者进行小程序性能优化。
发明内容
本公开提供了一种用于检测小程序能力特征的方法、装置、设备以及存储介质。
根据本公开的第一方面,提供了一种用于检测小程序能力特征的方法,包括:获取小程序包,其中,小程序包中包括代码;基于能力特征集合对应的关键词集合,对小程序包内的代码进行查找;根据查找到的关键词确定出静态能力特征列表;对静态能力特征列表中的每个静态能力特征进行分级;将级别高于预定阈值的静态能力特征确定为运行态能力特征,得到运行态能力特征列表。
根据本公开的第二方面,提供了一种用于检测小程序能力特征的装置,包括:获取单元,被配置成获取小程序包,其中,小程序包中包括代码;匹配单元,被配置成基于能力特征集合对应的关键词集合,对小程序包内的代码进行查找;第一确定单元,被配置成根据查找到的关键词确定出静态能力特征列表;分级单元,被配置成对静态能力特征列表中的每个静态能力特征进行分级;第二确定单元,被配置成将级别高于预定阈值的静态能力特征确定为运行态能力特征,得到运行态能力特征列表。
根据本公开的第三方面,提供了一种用于检测小程序能力特征的电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行第一方面中任一项的方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行根据第一方面中任一项的方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现根据第一方面中任一项的方法。
本申请的实施例,通过扫描代码的方法确定出小程序的静态能力特征,再对静态能力特征进行分级,确定出可以运行的静态能力特征作为运行态能力特征。从而可以快速分析出小程序使用的底层依赖能力,帮助开发者进行小程序性能优化,还可以帮助宿主控制小程序的下发,避免下发的小程序无法正常使用。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是本公开的一个实施例可以应用于其中的示例性系统架构图;
图2是根据本公开的用于检测小程序能力特征的方法的一个实施例的流程图;
图3a、3b是根据本公开的用于检测小程序能力特征的方法的一个应用场景的示意图;
图4是根据本公开的用于检测小程序能力特征的方法的又一个实施例的流程图;
图5a、5b是是根据本公开的用于检测小程序能力特征的方法的又一个应用场景的示意图;
图6是根据本公开的用于检测小程序能力特征的装置的一个实施例的结构示意图;
图7是用来实现本公开实施例的用于检测小程序能力特征的方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1示出了可以应用本公开的用于检测小程序能力特征的方法或用于检测小程序能力特征的装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括开发端101、服务器102、用户端103,网络平台104。开发端101、服务器102、用户端103,网络平台104之间可通过有线网络或无线网络通信,在此不做限定。
开发人员使用开发端开发小程序,需要从服务器获取小程序框架。小程序是一种不需要下载安装即可使用的应用,可以运行在不同的应用环境(即宿主)中,比如网页浏览器应用程序(App)、即时通信App等。开发端通过分析小程序的能力特征,可以对冗余的代码进行优化。
用户端103上可以安装有各种通讯客户端应用,例如小程序SDK、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。用户端的宿主可以分析小程序的能力特征,从而选择合适的小程序下发,避免下发的小程序无法运行。
服务器提供了小程序框架,也可以分析小程序的能力特征,对小程序框架进行优化。另外在小程序框架进行底层能力升级或历史问题修复时,小程序的能力特征也可以作为小程序影响面的参考依据。
需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。
需要说明的是,本公开的实施例所提供的用于检测小程序能力特征的方法一般由开发端101、服务器102、用户端103执行,相应地,用于检测小程序能力特征的装置一般设置于开发端101、服务器102、用户端103中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的开发端、服务器、用户端。
继续参考图2,示出了根据本公开的用于检测小程序能力特征的方法应用于开发端的一个实施例的流程200。该用于检测小程序能力特征的方法,包括以下步骤:
步骤201,获取小程序包。
在本实施例中,用于检测小程序能力特征的方法的执行主体(例如图1所示的开发端、服务器、用户端)可以通过有线连接方式或者无线连接方式从第三方服务器获取小程序包。小程序包中包括代码。这里的代码可以是编译后的代码也可以是编译前的代码。开发小程序使用的主要语言为前端语言,前端代码从源码到编译后的过程中,一些重要的代码特征并不会由于编译而消失,它会一直存在,因此可以从编译后的小程序包中扫描提取一些在小程序源码中就已经存在的特征,比如小程序实际使用到的框架能力有哪些。
步骤202,基于能力特征集合对应的关键词集合,对小程序包内的代码进行查找。
在本实施例中,能力特征指的是小程序底层支持的能力,例如,打电话、发送文件等。将能力特征集合对应的搜索关键词集合,对小程序包内的代码进行文本查找(例如关键词匹配查找),得出静态代码包包含哪些关键词,从而得出初版能力特征列表。例如针对小程序有没有使用swan.makePhoneCall能力,可搜索关键词makePhoneCall。关键词不区分大小写。可使用现有技术中常见的字符串匹配方法进行查找,例如,最大逆向匹配等。
可选地,能力特征集合为能力特征的全集,关键词集合为关键词全集。
步骤203,根据查找到的关键词确定出静态能力特征列表。
在本实施例中,将查找到的关键词对应的能力特征确定为静态能力特征,并添加到静态能力特征列表中。例如,如果代码中搜索到关键词makePhoneCall,则认为小程序具备swan.makePhoneCall能力,并将swan.makePhoneCall能力添加到静态能力特征列表中。
步骤204,对静态能力特征列表中的每个静态能力特征进行分级。
在本实施例中,虽然小程序中写了静态能力特征相关代码,但该代码未必实际运行,因此通过对静态能力特征列表中的每个静态能力特征进行分级来从概率学角度推算,静态代码中该能力实际是否运行。在小程序实际开发过程,开发者通常会封装一些工具库或者引用三方库,这些库经常会被整个引入,但实际业务功能中只需要其中的一小部分。另外小程序业务在逐渐迭代过程中,可能会出现一些历史逻辑代码虽然存在,但在小程序运行中实际不会被执行。这意味着小程序通过代码扫描得到的静态能力特征中,可能存在一些冗余项,这些冗余项在某种概率学定义下,是可以忽略的。因此本申请对扫描到的每个静态能力特征定义一个分级策略。可以人工凭借经验对静态能力特征列表中的每个静态能力特征进行分级。例如,检查出了弹出提示功能等不影响主流程使用的能力特征时,可设为低于预定阈值的级别。
步骤205,将级别高于预定阈值的静态能力特征确定为运行态能力特征,得到运行态能力特征列表。
在本实施例中,如果静态能力特征的级别高于预定阈值(例如五级),则说明该静态能力特征运行的可能性大,则认为该静态能力特征不是冗余,需要保留该静态能力特征。如果静态能力特征的级别小于等于预定阈值,则说明该静态能力特征运行的可能性小,则认为该静态能力特征是冗余,需要删除该静态能力特征。可以简单从功能或使用经验角度上分为两级,当能力特征为一级时,进行删除,当能力特征为二级时,则保留。
可选地,该阈值可由宿主控制。当宿主需要对小程序的下发控制严格时,可将阈值设置的较高。当宿主需要增大小程序的下发次数时,可将阈值设置的较低。
继续参见图3a-3b,图3a-3b是根据本实施例的用于检测小程序能力特征的方法的应用场景的示意图。在图3a的应用场景中,针对小程序有没有使用swan.makePhoneCall能力(打电话能力),可分两个步骤处理:1、检查开发者代码有没有写,2、检查小程序实际运行会不会使用到。为了检测小程序是否支持打电话能力,可在代码中搜索关键词makephonecall,如果搜索到makephonecall,则添加到静态能力特征列表中,再通过能力分级模型进一步确认是否为SwanApi。能力分级模型对打电话的能力进行分级,如果级别高于阈值,则确定出小程序的主流程会使用swan.makePhoneCall。以上流程,针对小程序包的能力特征提取,本申请设计了代码扫描和能力分级两个流程,前者从静态代码扫描提取能力特征,后者则从概率学角度推算,静态代码中该能力实际是否运行。
在图3b的应用场景中,详细说明了能力分级的过程。f(x1,x2,…xn)=y代表的是能力分级模型,可以是一个线性回归函数。x1,x2,…xn代表的是小程序的行业特征和该静态能力特征在所有小程序中使用次数占比。Y代表当前能力特征的级别。本实施例中将阈值设置为4,大于4,即5以上的能力特征保留。
在本实施例的一些可选的实现方式中,对所述静态能力特征列表中的每个静态能力特征进行分级,包括:将所述静态能力特征列表中的每个静态能力特征与预设的能力分级表进行匹配,确定出每个静态能力特征的级别。例如,可将弹窗能力特征的级别设为一级,打电话能力特征的级别设为五级,登录能力特征的级别设为十级。这种分级方式可以快速进行运行态能力特征的检测,从而提高小程序下发速度,提升用户体验。
在本实施例的一些可选的实现方式中,所述对所述静态能力特征列表中的每个静态能力特征进行分级,包括:获取预设的能力分级模型;对于所述静态能力特征列表中的每个静态能力特征,将所述小程序的行业特征和该静态能力特征在所有小程序中使用次数占比输入所述能力分级模型,得到该静态能力特征的级别。能力分级模型可以是一种神经网络模型,训练样本中小程序的行业特征和该静态能力特征在所有小程序中使用次数占比作为模型的输入,将标记好的静态能力特征的级别(级别与API被调用的概率成正比,可以划分为多个级别,例如10级)作为期望输出,训练神经网络模型。小程序的行业特征可以用一个向量表示,不同行业有各自的特征,例如,购物行业的特征可包括浏览、加购物车、付款等。因此模型的输入是行业特征(换成数字),当前能力在所有小程序的中使用次数占比(基于全量小程序值),它的输出是当前能力在当前小程序的离散值(当前小程序当前能力埋点数据,例如统计出的用户浏览次数、加购物车次数、付款次数等)。对于一个小程序,它的行业和该小程序在全局的表现是已知的,则直接可以算出这个能力在当前小程序的离散值,相当于变向预估出这个能力会不会运行(等价于会不会触发打点)。这种分级方式可以提升检测的准确率,减少小程序调用失败的次数,提升用户体验。
可选地,模型的输入的特征不限于小程序的行业特征和该静态能力特征在所有小程序中使用次数占比,还可以是其它特征。
在本实施例的一些可选的实现方式中,能力分级模型为通过小程序的行业特征、小程序的能力特征历史埋点数据分析得到的线性回归函数。可根据已知的小程序的行业特征、小程序的能力特征历史埋点数据拟合出线性回归函数。然后再将能力特征通过该函数转为离散值,对应到相应的级别。小程序根据宿主侧需求,保留相应级别以上的能力特征。这种方式简单易行,不需要复杂的模型训练过程,仍可得到准确性高的模型,从而缩短了小程序开发周期,节约成本。
在本实施例的一些可选的实现方式中,该方法还包括:若宿主支持的底层能力列表中不包括所述小程序的运行态能力特征列表,禁止在所述宿主上下发所述小程序。对于宿主侧来说,宿主侧可以更加精确了解各小程序的能力特征画像,从而更有针对性的对小程序框架进行升级或保留。例如一个汽车行业的宿主,它会重点考虑资讯类、电商类的一些小程序,通过分析这些小程序的能力特征画像,宿主会选择最合适的小程序框架SDK版本进行接入或升级,并且重点保证一些小程序API功能的稳定性。
在本实施例的一些可选的实现方式中,该方法还包括:根据所述静态能力特征列表和所述运行态能力特征列表分析所述小程序的冗余代码;删除所述冗余代码。对于小程序所有者来说,小程序在开发迭代过程中,会随着时间的推移,历史逻辑会越来越冗余,一些关键底层调用代码逻辑可能会因为人为的疏忽而不容易发现,开发者在设置选择小程序下发基础版本时可能会比较盲目。本技术对小程序进行扫描后得到的能力特征画像,可以帮助小程序开发和运营者快速定位底层能力依赖,相当于上线前的二次体验确认。同时也可以发现一些历史冗余逻辑,以便进行及时删除,实现小程序包体积瘦身,从而提升小程序的首次加载性能。
在本实施例的一些可选的实现方式中,该方法还包括:该方法还包括:获取多个小程序的运行态能力特征列表;基于多个运行态能力特征列表统计各运行态能力特征的使用频率;根据使用频率对各小程序的代码进行优化。对于小程序框架开发者来说,通过对大量的小程序进行扫描,得到小程序能力特征画像,有助于小程序框架开发者更加深层次地了解小程序在各行各业中,哪些底层能力使用最频繁,哪些底层能力使用可能比较冗余,有针对性地进行优化。对于冗余的底层能力对应的代码进行删除。对于使用频繁的底层能力对应的代码进行内存开销、计算速度等方面的优化。另外在小程序框架进行底层能力升级或历史问题修复时,也可以作为小程序影响面的参考依据。
进一步参考图4,其示出了用于检测小程序能力特征的方法的又一个实施例的流程400。该用于检测小程序能力特征的方法的流程400,包括以下步骤:
步骤401,获取小程序包。
步骤402,基于能力特征集合对应的关键词集合,对小程序包内的代码进行查找。
步骤403,根据查找到的关键词确定出静态能力特征列表。
步骤401-403与步骤201-203基本相同,因此不再赘述。
步骤404,基于查找到的关键词的关联词,对小程序包内的代码进行查找。
在本实施例中,确定静态能力特征分为两步:1关键词初筛:将能力特征集合对应的搜索关键词集合,对小程序包内的代码进行文本查找,得出静态代码包包含哪些关键词,从而得出初版能力特征列表。
2、二次扫描修正:虽然小程序源码编译会将部分业务逻辑代码混淆,但仍然有可能存在一些未被混淆化的用户自定义函数名与能力特征对应关键词相同。本逻辑会基于小程序具有某业务特征(例如行业、三方框架库使用等)修正该特征下大概率是用户自定义或者库声明了但未调用的的能力特征关键词,进行二次扫描修正,例如通过多关键词匹配,当能力特征的多个关联关键词同时或部分存在时,才认定其能力特征存在。
如图5a、5b所示,虽然关键词初筛时能搜索到makephonecall,但还要进一步确认它是否是真的能力特征而不是用户自定义的名称。因此使用关联词phonenumber进行二次扫描。
步骤405,若代码中不存在查找到的关键词的关联词,则从静态能力特征列表中删除相应的静态能力特征。
在本实施例中,如上例所示,如果代码中不能同时包括关键词(例如,makephonecall)和关联词(phonenumber),则说明该小程序实际不支持makephonecall的能力。如果同时包括关键词和关联词,则说明小程序可能支持makephonecall的能力。还需要进一步通能力分级来判断。
步骤406,对静态能力特征列表中的每个静态能力特征进行分级。
步骤407,将级别高于预定阈值的静态能力特征确定为运行态能力特征,得到运行态能力特征列表。
步骤406-407与步骤204-205基本相同,因此不再赘述。
从图4中可以看出,与图2对应的实施例相比,本实施例中的用于检测小程序能力特征的方法的流程400体现了对代码进行2次搜索匹配的步骤。由此,本实施例描述的方案可以规避用户自定义的名称与能力特征重名的情况,还可以规避库声明了但未调用能力特征关键词的情况。从而提高检测的准确率,减少能力分级步骤执行的次数,从而提高检测速度。
进一步参考图6,作为对上述各图所示方法的实现,本公开提供了一种用于检测小程序能力特征的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图6所示,本实施例的用于检测小程序能力特征的装置600包括:获取单元601、匹配单元602、第一确定单元603、分级单元604、第二确定单元605。其中,获取单元601,被配置成获取小程序包,其中,小程序包中包括代码;匹配单元602,被配置成基于能力特征集合对应的关键词集合,对小程序包内的代码进行查找;第一确定单元603,被配置成根据查找到的关键词确定出静态能力特征列表;分级单元604,被配置成对静态能力特征列表中的每个静态能力特征进行分级;第二确定单元605,被配置成将级别高于预定阈值的静态能力特征确定为运行态能力特征,得到运行态能力特征列表。
在本实施例中,用于检测小程序能力特征的装置600的获取单元601、匹配单元602、第一确定单元603、分级单元604、第二确定单元605的具体处理可以参考图2对应实施例中的步骤201、步骤202、步骤203、步骤204和步骤205。
在本实施例的一些可选的实现方式中,匹配单元602进一步被配置成:在根据查找到的关键词确定出静态能力特征列表之后,基于查找到的关键词的关联词,对小程序包内的代码进行查找;若代码中不存在查找到的关键词的关联词,则从静态能力特征列表中删除相应的静态能力特征。
在本实施例的一些可选的实现方式中,分级单元604进一步被配置成:将静态能力特征列表中的每个静态能力特征与预设的能力分级表进行匹配,确定出每个静态能力特征的级别。
在本实施例的一些可选的实现方式中,分级单元604进一步被配置成:获取预设的能力分级模型;对于静态能力特征列表中的每个静态能力特征,将小程序的行业特征和该静态能力特征在所有小程序中使用次数占比输入能力分级模型,得到该静态能力特征的级别。
在本实施例的一些可选的实现方式中,能力分级模型为通过小程序的行业特征、小程序的能力特征历史埋点数据分析得到的线性回归函数。
在本实施例的一些可选的实现方式中,装置600还包括限制单元(附图中未示出),被配置成:若宿主支持的底层能力列表中不包括小程序的运行态能力特征列表,禁止在宿主上下发小程序。
在本实施例的一些可选的实现方式中,装置600还包括删除单元(附图中未示出),被配置成:根据静态能力特征列表和运行态能力特征列表分析小程序的冗余代码;删除冗余代码。
在本实施例的一些可选的实现方式中,装置600还包括优化单元(附图中未示出),被配置成:获取多个小程序的运行态能力特征列表;基于多个运行态能力特征列表统计各运行态能力特征的使用频率;根据使用频率对各小程序的代码进行优化。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(ROM)702中的计算机程序或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如方法用于检测小程序能力特征。例如,在一些实施例中,方法用于检测小程序能力特征可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的方法用于检测小程序能力特征的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法用于检测小程序能力特征。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。服务器可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (16)

1.一种用于检测小程序能力特征的方法,包括:
获取小程序包,其中,所述小程序包中包括代码;
基于能力特征集合对应的关键词集合,对小程序包内的代码进行查找;
根据查找到的关键词确定出静态能力特征列表,其中,能力特征指的是小程序底层支持的能力;
对所述静态能力特征列表中的每个静态能力特征进行分级;
将级别高于预定阈值的静态能力特征确定为运行态能力特征,得到运行态能力特征列表;
其中,所述对所述静态能力特征列表中的每个静态能力特征进行分级,包括:
获取预设的能力分级模型;
对于所述静态能力特征列表中的每个静态能力特征,将所述小程序的行业特征和该静态能力特征在所有小程序中使用次数占比输入所述能力分级模型,得到该静态能力特征的级别。
2.根据权利要求1所述的方法,其中,在所述根据查找到的关键词确定出静态能力特征列表之后,所述方法还包括:
基于查找到的关键词的关联词,对小程序包内的代码进行查找;
若所述代码中不存在查找到的关键词的关联词,则从所述静态能力特征列表中删除相应的静态能力特征。
3.根据权利要求1所述的方法,其中,所述对所述静态能力特征列表中的每个静态能力特征进行分级,包括:
将所述静态能力特征列表中的每个静态能力特征与预设的能力分级表进行匹配,确定出每个静态能力特征的级别。
4.根据权利要求1所述的方法,其中,所述能力分级模型为通过小程序的行业特征、小程序的能力特征历史埋点数据分析得到的线性回归函数。
5.根据权利要求1-4中任一项所述的方法,其中,所述方法还包括:
若宿主支持的底层能力列表中不包括所述小程序的运行态能力特征列表,禁止在所述宿主上下发所述小程序。
6.根据权利要求1-4中任一项所述的方法,其中,所述方法还包括:
根据所述静态能力特征列表和所述运行态能力特征列表分析所述小程序的冗余代码;
删除所述冗余代码。
7.根据权利要求1-4中任一项所述的方法,其中,所述方法还包括:
获取多个小程序的运行态能力特征列表;
基于多个运行态能力特征列表统计各运行态能力特征的使用频率;
根据使用频率对各小程序的代码进行优化。
8.一种用于检测小程序能力特征的装置,包括:
获取单元,被配置成获取小程序包,其中,所述小程序包中包括代码;
匹配单元,被配置成基于能力特征集合对应的关键词集合,对小程序包内的代码进行查找;
第一确定单元,被配置成根据查找到的关键词确定出静态能力特征列表,其中,能力特征指的是小程序底层支持的能力;
分级单元,被配置成对所述静态能力特征列表中的每个静态能力特征进行分级;
第二确定单元,被配置成将级别高于预定阈值的静态能力特征确定为运行态能力特征,得到运行态能力特征列表;
其中,所述分级单元进一步被配置成:
获取预设的能力分级模型;
对于所述静态能力特征列表中的每个静态能力特征,将所述小程序的行业特征和该静态能力特征在所有小程序中使用次数占比输入所述能力分级模型,得到该静态能力特征的级别。
9.根据权利要求8所述的装置,其中,所述匹配单元进一步被配置成:
在所述根据查找到的关键词确定出静态能力特征列表之后,基于查找到的关键词的关联词,对小程序包内的代码进行查找;
若所述代码中不存在查找到的关键词的关联词,则从所述静态能力特征列表中删除相应的静态能力特征。
10.根据权利要求8所述的装置,其中,所述分级单元进一步被配置成:
将所述静态能力特征列表中的每个静态能力特征与预设的能力分级表进行匹配,确定出每个静态能力特征的级别。
11.根据权利要求8所述的装置,其中,所述能力分级模型为通过小程序的行业特征、小程序的能力特征历史埋点数据分析得到的线性回归函数。
12.根据权利要求8-11中任一项所述的装置,其中,所述装置还包括限制单元,被配置成:
若宿主支持的底层能力列表中不包括所述小程序的运行态能力特征列表,禁止在所述宿主上下发所述小程序。
13.根据权利要求8-11中任一项所述的装置,其中,所述装置还包括删除单元,被配置成:
根据所述静态能力特征列表和所述运行态能力特征列表分析所述小程序的冗余代码;
删除所述冗余代码。
14.根据权利要求8-11中任一项所述的装置,其中,所述装置还包括优化单元,被配置成:
获取多个小程序的运行态能力特征列表;
基于多个运行态能力特征列表统计各运行态能力特征的使用频率;
根据使用频率对各小程序的代码进行优化。
15. 一种用于检测小程序能力特征的电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-7中任一项所述的方法。
CN202110196387.2A 2021-02-22 2021-02-22 用于检测小程序能力特征的方法和装置 Active CN112905469B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110196387.2A CN112905469B (zh) 2021-02-22 2021-02-22 用于检测小程序能力特征的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110196387.2A CN112905469B (zh) 2021-02-22 2021-02-22 用于检测小程序能力特征的方法和装置

Publications (2)

Publication Number Publication Date
CN112905469A CN112905469A (zh) 2021-06-04
CN112905469B true CN112905469B (zh) 2023-08-04

Family

ID=76124220

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110196387.2A Active CN112905469B (zh) 2021-02-22 2021-02-22 用于检测小程序能力特征的方法和装置

Country Status (1)

Country Link
CN (1) CN112905469B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113961263B (zh) * 2021-07-02 2023-08-11 北京百度网讯科技有限公司 小程序分发方法、装置、设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1698992A2 (en) * 2005-03-04 2006-09-06 Microsoft Corporation Program authentication based on environment
CN112069071A (zh) * 2020-09-04 2020-12-11 北京百度网讯科技有限公司 用于确定程序适配性的方法、装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10223172B2 (en) * 2016-05-10 2019-03-05 International Business Machines Corporation Object storage workflow optimization leveraging storage area network value adds

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1698992A2 (en) * 2005-03-04 2006-09-06 Microsoft Corporation Program authentication based on environment
CN112069071A (zh) * 2020-09-04 2020-12-11 北京百度网讯科技有限公司 用于确定程序适配性的方法、装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Model Test of Pile Negative Friction for Different Pile-end Underlying Layers;XN Ma;Journal of Railway Engineering Society;全文 *

Also Published As

Publication number Publication date
CN112905469A (zh) 2021-06-04

Similar Documents

Publication Publication Date Title
CN108431768B (zh) 应用特征的受控部署
CN113760769A (zh) 测试用例处理方法、装置、电子设备以及存储介质
CN112905469B (zh) 用于检测小程序能力特征的方法和装置
US20230132033A1 (en) Automatically generating, revising, and/or executing troubleshooting guide(s)
KR102205686B1 (ko) 후보 문자 순위화 방법 및 장치와 문자 입력 방법 및 장치
CN111858366B (zh) 一种测试用例生成方法、装置、设备及存储介质
CN112860566A (zh) 小程序检测方法、装置、电子设备以及可读介质
CN104573127A (zh) 评估数据差异性的方法和系统
CN115587545B (zh) 一种用于光刻胶的参数优化方法、装置、设备及存储介质
CN116560661A (zh) 代码优化方法、装置、设备及存储介质
CN110716859A (zh) 自动为修改的代码推送测试用例的方法及相关装置
US8973020B2 (en) Generating a web service
CN114693116A (zh) 代码评审有效性的检测方法及装置、电子设备
CN114510334A (zh) 类实例的调用方法、装置、电子设备及自动驾驶车辆
US9864585B2 (en) Rapid prototyping of backend services
CN113127357A (zh) 单元测试方法、装置、设备、存储介质及程序产品
CN112597377A (zh) 信息提取模块生成方法、信息提取方法及装置
CN113362097B (zh) 一种用户确定方法和装置
US20240078107A1 (en) Performing quality-based action(s) regarding engineer-generated documentation associated with code and/or application programming interface
CN115904472A (zh) 资源文件的状态确定方法、装置、电子设备和介质
CN117171004A (zh) 一种测试方法和装置
CN117290242A (zh) 测试用例评审报告的生成方法、装置及电子设备
CN115374010A (zh) 功能测试方法、装置、设备及存储介质
CN117785205A (zh) 一种数据评估方法、装置、电子设备及计算机可读介质
CN115658130A (zh) 一种资源扫描方法、装置、计算机设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant