定位方法及系统、介质和计算机系统技术方案

技术编号:24352303 阅读:43 留言:0更新日期:2020-06-03 01:50
本公开提供了一种定位方法,包括:获取第一JS文本和第二JS文本,其中,第一JS文本是通过打包第二JS文本得到的且存在异常的JS文本;获取第一JS文本中的第一异常信息的行值和列值;以及根据行值和列值,以及第一JS文本与第二JS文本的映射关系,确定第二JS文本中与第一异常信息对应的第二异常信息,并定位第二异常信息在第二JS文本中的行值和列值。本公开还提供了一种定位方法系统,一种计算机系统和一种计算机可读存储介质。

Positioning method and system, medium and computer system

【技术实现步骤摘要】
定位方法及系统、介质和计算机系统
本公开涉及计算机
,更具体地,涉及一种定位方法及系统,一种计算机系统和一种计算机可读存储介质。
技术介绍
ReactNative是一个JavaScript的框架,用来撰写实时的、可原生呈现iOS和Android的应用,因此目前很多公司都在使用ReactNative开发业务。但是ReactNative打包代码时,都会对代码进行压缩和混淆,这种情况下,如果JS运行出现异常,则上报到异常上报系统的JS异常文本是压缩和混淆后的文本,因此难以定位出问题。
技术实现思路
有鉴于此,本公开提供了一种能够通过JS映射文件将对压缩和混淆后的JS文本进行异常定位转换为对压缩和混淆前的JS文本进行异常定位的定位方法及系统。本公开的一个方面提供了一种定位方法,包括:获取第一JS文本和第二JS文本,其中,上述第一JS文本是通过打包上述第二JS文本得到的且存在异常的JS文本;获取上述第一JS文本中的第一异常信息的行值和列值;以及根据上述行值和上述列值,以及上述第一JS文本与上述第二JS文本的映射关系,确定上述第二JS文本中与上述第一异常信息对应的第二异常信息,并定位上述第二异常信息在上述第二JS文本中的行值和列值。根据本公开的实施例,上述方法还包括:获取打包上述第二JS文本时生成的映射文件;以及基于上述映射文件获取上述第一JS文本与上述第二JS文本的映射关系。根据本公开的实施例,根据上述行值和上述列值,以及上述第一JS文本与上述第二JS文本的映射关系,对上述第一JS文本进行解析,以确定上述第二JS文本中与上述第一异常信息对应的上述第二异常信息,并定位上述第二异常信息在上述第二JS文本中的行值和列值。根据本公开的实施例,上述方法还包括:在解析上述第一JS文本之前,确定上述第一JS文本的打包方式;上述对上述第一JS文本进行解析,包括:根据上述第一JS文本的打包方式,对上述第一JS文本进行解析。根据本公开的实施例,上述根据上述第一JS文本的打包方式,对上述第一JS文本进行解析,包括:当上述第一JS文本为全包形式时,直接对上述第一JS文本的全包进行解析;以及当上述第一JS文本为拆分包加依赖包形式时,先将上述第一JS文本的拆分包和依赖包合成为一个全包,再对合成的全包进行解析。根据本公开的实施例,上述将上述第一JS文本的拆分包和依赖包合成为一个全包,包括:获取上述第一JS文本的拆分包和依赖包;获取上述依赖包的sections字段的长度值;遍历上述拆分包的sections字段,将对应的原行值重置为对应的新行值,其中,对应的新行值等于对应的原行值加上上述依赖包的sections字段的长度值;以及在遍历重置后,将上述拆分包的sections字段追加到上述依赖包的sections字段中,从而将上述第一JS文本的拆分包和依赖包合成为一个全包。根据本公开的实施例,上述获取上述第一JS文本中的第一异常信息的行值和列值,包括:通过预先编写的JS脚本解析上述第一JS文本,以确定上述第一异常信息,并定位上述第一异常信息在上述第一JS文本中的行值和列值。本公开的另一个方面提供了一种定位系统,包括:第一获取模块,用于获取第一JS文本和第二JS文本,其中,上述第一JS文本是通过打包上述第二JS文本得到的且存在异常的JS文本;第二获取模块,用于获取上述第一JS文本中的第一异常信息的行值和列值;以及定位模块,用于根据上述行值和上述列值,以及上述第一JS文本与上述第二JS文本的映射关系,确定上述第二JS文本中与上述第一异常信息对应的第二异常信息,并定位上述第二异常信息在上述第二JS文本中的行值和列值。根据本公开的实施例,上述系统还包括:第三获取模块,用于获取打包上述第二JS文本时生成的映射文件;以及第四获取模块,用于基于上述映射文件获取上述第一JS文本与上述第二JS文本的映射关系。根据本公开的实施例,上述定位模块,还用于:根据上述行值和上述列值,以及上述第一JS文本与上述第二JS文本的映射关系,对上述第一JS文本进行解析,以确定上述第二JS文本中与上述第一异常信息对应的上述第二异常信息,并定位上述第二异常信息在上述第二JS文本中的行值和列值。根据本公开的实施例,上述系统还包括:确定模块,用于在解析上述第一JS文本之前,确定上述第一JS文本的打包方式;上述定位模块还用于:根据上述第一JS文本的打包方式,对上述第一JS文本进行解析。根据本公开的实施例,上述定位模块包括:第一解析单元,用于当上述第一JS文本为全包形式时,直接对上述第一JS文本的全包进行解析;以及第二解析单元,用于当上述第一JS文本为拆分包加依赖包形式时,先将上述第一JS文本的拆分包和依赖包合成为一个全包,再对合成的全包进行解析。根据本公开的实施例,上述第二解析单元还用于将上述第一JS文本的拆分包和依赖包合成为一个全包,并具体用于:获取上述第一JS文本的拆分包和依赖包;获取上述依赖包的sections字段的长度值;遍历上述拆分包的sections字段,将对应的原行值重置为对应的新行值,其中,对应的新行值等于对应的原行值加上上述依赖包的sections字段的长度值;以及在遍历重置后,将上述拆分包的sections字段追加到上述依赖包的sections字段中,从而将上述第一JS文本的拆分包和依赖包合成为一个全包。根据本公开的实施例,上述第二获取模块,还用于:通过预先编写的JS脚本解析上述第一JS文本,以确定上述第一异常信息,并定位上述第一异常信息在上述第一JS文本中的行值和列值。本公开的另一方面提供了一种计算机系统,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如上任一项所述的方法。本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。本公开的另一方面提供了一种计算机程序,上述计算机程序包括计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。根据本公开的实施例,因为采用了将打包后的JS文本中的异常映射到与之对应的包前的JS文本中的异常来完成异常定位的技术手段,所以至少部分地克服了相关技术直接对打包后的(压缩/混淆)JS文本进行定位,难以定位出问题的技术问题,进而达到了易于定位异常且便于用户理解和查看异常的技术效果。附图说明通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:图1示意性示出了可以应用本公开的定位方法及系统的示例性系统架构;图2示意性示出了根据本公开实施例的定位方法的流程图;图3示意性示出了根据本公开实施例的打包JS文本文件的示意图;图4示意性示出了根据本公开实施例的打包前后两个JS文本的映射关系;图5A和图5B示意性示出了根据本公开实施例的两种JS文本打包方式;图6示意性示出了根本文档来自技高网...

【技术保护点】
1.一种定位方法,包括:/n获取第一JS文本和第二JS文本,其中,所述第一JS文本是通过打包所述第二JS文本得到的且存在异常的JS文本;/n获取所述第一JS文本中的第一异常信息的行值和列值;以及/n根据所述行值和所述列值,以及所述第一JS文本与所述第二JS文本的映射关系,确定所述第二JS文本中与所述第一异常信息对应的第二异常信息,并定位所述第二异常信息在所述第二JS文本中的行值和列值。/n

【技术特征摘要】
1.一种定位方法,包括:
获取第一JS文本和第二JS文本,其中,所述第一JS文本是通过打包所述第二JS文本得到的且存在异常的JS文本;
获取所述第一JS文本中的第一异常信息的行值和列值;以及
根据所述行值和所述列值,以及所述第一JS文本与所述第二JS文本的映射关系,确定所述第二JS文本中与所述第一异常信息对应的第二异常信息,并定位所述第二异常信息在所述第二JS文本中的行值和列值。


2.根据权利要求1所述的方法,其中,所述方法还包括:
获取打包所述第二JS文本时生成的映射文件;以及
基于所述映射文件获取所述第一JS文本与所述第二JS文本的映射关系。


3.根据权利要求1或2所述的方法,其中:
根据所述行值和所述列值,以及所述第一JS文本与所述第二JS文本的映射关系,对所述第一JS文本进行解析,以确定所述第二JS文本中与所述第一异常信息对应的所述第二异常信息,并定位所述第二异常信息在所述第二JS文本中的行值和列值。


4.根据权利要求3所述的方法,其中,所述方法还包括:
在解析所述第一JS文本之前,确定所述第一JS文本的打包方式;
所述对所述第一JS文本进行解析,包括:根据所述第一JS文本的打包方式,对所述第一JS文本进行解析。


5.根据权利要求4所述的方法,其中,所述根据所述第一JS文本的打包方式,对所述第一JS文本进行解析,包括:
当所述第一JS文本为全包形式时,直接对所述第一JS文本的全包进行解析;以及
当所述第一JS文本为拆分包加依赖包形式时,先将所述第一JS文本的拆分包和依赖包合成为一个全包,再对合成的全包进行解析。


6.根据权利要求5所述的方法,其中,所述将所述第一JS文本的拆分包和依赖包合成为一个全包,包括:
获取所述第一JS文本的拆分包和依赖包;
获取所述依赖包的sections字段的长度值;
遍历所述拆分包的sections字段,将对应的原行值重置为对应的新行值,其中,对应的新行值等于对应的原行值加上所述依赖包的sections字段的长度值;以及
在遍历重置后,将所述拆分包的sections字段追加到所述依赖包的sections字段中,从而将所述第一JS文本的拆分包和依赖包合成为一个全包。


7.根据权利要求1所述的方法,其中,所述获取所述第一JS文本中的第一异常信息的行值和列值,包括:
通过预先编写的JS脚本解析所述第一JS文本,以确定所述第一异常信息,并定位所述第一异常信息在所述第一JS文本中的行值和列值。


8.一种定位系统,包括:
第一获取模块,用于获取第一JS文本和第二JS文本,其中,所述第一JS文本是通过打包所述第二JS文本得到的且存在异常的JS文本;
第二获取模块,用于获取所述第一JS文本中的第一异常信息的行值和...

【专利技术属性】
技术研发人员:刘艳
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

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

1