Web应用跨版本错误归类方法、系统、终端及介质技术方案

技术编号:32531318 阅读:12 留言:0更新日期:2022-03-05 11:25
本发明专利技术提供了一种Web应用跨版本错误归类方法及系统,其中系统包括:嵌入Web应用中的Javascript SDK模块、代码分析模块以及错误检索模块:方法包括:发布新版本Web应用程序;获取Web应用程序的代码文件构建语法树;上报Web应用程序生产环境错误;根据语法树改写Web应用程序生产环境错误的错误堆栈,得到改写后的错误数据;将改写后的错误数据入库,并根据改写后的错误堆栈匹配库中历史版本的Web应用程序生产环境错误并归类。同时提供了一种相应的终端及介质。本发明专利技术捕获各版本发生的错误并匹配,精确识别在多个版本反复出现的严重错误,帮助开发人员聚焦严重错误,提高错误修复效率以及软件质量。以及软件质量。以及软件质量。

【技术实现步骤摘要】
Web应用跨版本错误归类方法、系统、终端及介质


[0001]本专利技术涉及互联网
,具体地,涉及一种Web应用跨版本错误归类方法、系统、终端及介质。

技术介绍

[0002]基于HTML5和Javascript的Web应用程序因其灵活的编程方式以及广泛的跨平台特性成为了目前非常主流的客户端应用程序的选择。Web应用程序广泛包括运行于浏览器内的网页、嵌入移动App中的Web内容(Android WebView/iOS WKWebView/ReactNative)、基于Electron等框架可访问电脑文件系统的桌面Web应用程序。Web应用程序均运行Javascript代码(或者能被编译成Javascript的类似语言,例如Typescript)。Javascript对于软件故障采取非常宽松处理模式,即如果程序发生未处理的错误,程序仅会终止当前函数调用,而程序的其他部分可以继续正常运行。这种宽松的方式导致Web应用的错误数量,尤其是在生产环境下,比传统的严格编程语言要更加庞大。在实际生产中,开发人员会广泛收集生产环境下Web应用发生的错误并分析修复这些错误。例如:
[0003]公开号为CN111124721A的中国专利技术专利申请《网页处理方法、装置及电子设备》,通过收集发生错误网页截图和网页控件以及网页代码帮助开发人员定位生产错误;
[0004]授权公告号为CN107844486B的中国专利技术专利《一种用于客户端的分析网页问题的方法和系统》,让开发人员根据经营业务情况,为不同页面以及关键代码步骤增加错误捕捉代码来收集重要的生产错误;
[0005]公开号为CN102681929A的中国专利技术专利申请《网页脚本错误监控方法及系统》,收集网页错误,并按照网页路径Top 100安排开发人员修复;
[0006]公开号为CN107861852A的中国专利技术专利申请《网页错误处理方法、系统及可读存储介质》,通过统计错误影响的用户和网络IP地址等,可视化地优先让开发人员处理影响用户多的错误。
[0007]然而,目前的技术手段对于定位错误的粒度普遍较粗,导致开发人员得到的错误信息很宽泛,通常无法有效定位到错误实际发生的代码,大大影响了错误修复的效率和准确度。例如,目前Web应用不断复杂化,一个页面可能包含几千到几十万行Javascript开发人员编写的代码以及同等规模的第三方库代码。当发生错误时,当前的技术手段只能粗略定位到页面或者页面控件级别,无法准确定位到关联的代码,导致开发人员如大海捞针,或者需要不对人工增加额外的错误捕捉代码提高错误信息细节来修复错误,大大降低了错误修复的效率。同时,由于Web应用灵活的更新方式,Web应用代码更新非常快,在一些情况下可以达到每天发布数十个新版本。而生产环境的错误因为代码的改变,同一个错误在不同版本上的相关代码位置也在不受控地发生改变,这也间接导致开发人员得到大量重复却有细微变化的错误信息,影响开发人员有效识别问题原因。

技术实现思路

[0008]本专利技术针对现有技术中存在的上述不足,提供了一种Web应用跨版本错误归类方法、系统、终端及介质,通过收集Web应用程序在生产环境中发生的错误,进行跨版本匹配和归类。
[0009]根据本专利技术的一个方面,提供了一种Web应用跨版本错误归类方法,包括:
[0010]发布新版本Web应用程序;
[0011]获取所述Web应用程序的代码文件构建语法树;
[0012]上报所述Web应用程序生产环境错误;
[0013]根据所述语法树改写所述Web应用程序生产环境错误的错误堆栈,得到改写后的错误数据;
[0014]将所述改写后的错误数据入库,并根据改写后的错误堆栈匹配库中历史版本的Web应用程序生产环境错误并归类。
[0015]优选地,所述发布新版本Web应用程序,包括:
[0016]准备新版本的Web应用程序;
[0017]将所述Web应用程序的所有代码文件上传;
[0018]上传所述Web应用程序,完成新版本Web应用程序的发布。
[0019]优选地,所述获取所述Web应用程序的代码文件构建语法树,包括:
[0020]根据发布的所述Web应用程序,解析HTML文件,提取所述Web应用程序使用的所有Javascript代码文件;
[0021]基于所述Javascript代码文件,通过代码分析构建语法树,并对所述语法树进行存储;
[0022]其中:
[0023]所述语法树为一种用于分析源代码的树型数据结构,其中每一个结点为一个语法单元,表示源代码的一种结构;每一个结点包括若干子结点,表示一个复杂结点的细节信息;所述语法树的结点存储该语法单元在源代码中的位置,给定一个任意源代码位置能够在语法树中唯一找到该位置对应的结点。
[0024]优选地,所述上报所述Web应用程序生产环境错误,包括:
[0025]注册消息回调方法;
[0026]利用所述消息回调方法,获取所述Web应用程序在Javascript代码运行过程中产生的错误,即为所述Web应用程序生产环境错误;
[0027]对获取的所述错误进行上报。
[0028]优选地,所述根据所述语法树改写所述Web应用程序生产环境错误的错误堆栈,包括:改写错误堆栈中的抛出点和改写错误堆栈中的调用点序列;其中:
[0029]‑
所述改写错误堆栈中的抛出点,包括:
[0030]根据所述错误的错误堆栈,获取抛出点的位置信息;
[0031]根据所述错误的页面地址,获取该错误所对应Web应用程序版本的代码文件的语法树;
[0032]通过所述抛出点的位置信息以及错误类型,找到所述语法树中对应的源代码结点,并将所述抛出点的位置信息替换为所述源代码结点的字符串化信息用于后续匹配;
[0033]‑
所述改写错误堆栈中的调用点序列,包括:
[0034]根据所述错误的错误堆栈,获取若干个调用点的位置信息;
[0035]根据所述调用点的位置信息以及错误类型,找到所述语法树中对应的函数调用结点,并将所述调用点信息替换为所述语法树中对应的函数调用结点的代码信息用于后续匹配。
[0036]优选地,所述将所述改写后的错误数据入库,并根据改写后的错误堆栈匹配库中历史版本的Web应用程序生产环境错误并归类,包括:
[0037]所述库统一存储和管理所有历史版本Web应用程序发生的所有错误数据,当上报的多个错误数据的改写后的错误堆栈相同时,则在入库过程中被归类为同一个错误。
[0038]优选地,所述库采用内存键值存储数据库,其中,以改写后的错误堆栈为键,以错误数据的数组为值,不同版本的同一个错误的键均相同。
[0039]优选地,所述方法还包括:
[0040]所述对库中每一个错误的严重程度进行标记并排序;其中:
[0041]对于每一个错误,其严重程度为以下几个维度的加权平均:
[00本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Web应用跨版本错误归类方法,其特征在于,包括:发布新版本Web应用程序;获取所述Web应用程序的代码文件构建语法树;上报所述Web应用程序生产环境错误;根据所述语法树改写所述Web应用程序生产环境错误的错误堆栈,得到改写后的错误数据;将所述改写后的错误数据入库,并根据改写后的错误堆栈匹配库中历史版本的Web应用程序生产环境错误并归类。2.根据权利要求1所述的Web应用跨版本错误归类方法,其特征在于,所述发布新版本Web应用程序,包括:准备新版本的Web应用程序;将所述Web应用程序的所有代码文件上传;上传所述Web应用程序,完成新版本Web应用程序的发布。3.根据权利要求1所述的Web应用跨版本错误归类方法,其特征在于,所述获取所述Web应用程序的代码文件构建语法树,包括:根据发布的所述Web应用程序,解析HTML文件,提取所述Web应用程序使用的所有Javascript代码文件;基于所述Javascript代码文件,通过代码分析构建语法树,并对所述语法树进行存储;其中:所述语法树为一种用于分析源代码的树型数据结构,其中每一个结点为一个语法单元,表示源代码的一种结构;每一个结点包括若干子结点,表示一个复杂结点的细节信息;所述语法树的结点存储该语法单元在源代码中的位置,给定一个任意源代码位置能够在语法树中唯一找到该位置对应的结点。4.根据权利要求1所述的Web应用跨版本错误归类方法,其特征在于,所述上报所述Web应用程序生产环境错误,包括:注册消息回调方法;利用所述消息回调方法,获取所述Web应用程序在Javascript代码运行过程中产生的错误,即为所述Web应用程序生产环境错误;对获取的所述错误进行上报。5.根据权利要求1所述的Web应用跨版本错误归类方法,其特征在于,所述根据所述语法树改写所述Web应用程序生产环境错误的错误堆栈,包括:改写错误堆栈中的抛出点和改写错误堆栈中的调用点序列;其中:

所述改写错误堆栈中的抛出点,包括:根据所述错误的错误堆栈,获取抛出点的位置信息;根据所述错误的页面地址,获取该错误所对应Web应用程序版本的代码文件的语法树;通过所述抛出点的位置信息以及错误类型,找到所述语法树中对应的源代码结点,并将所述抛出点的位置信息替换为所述源代码结点的字符串化信息用于后续匹配;

所述改写错误堆栈中的调用点序列,包括:根据所述错误的错误堆栈,获取若干个调用点的位置信息;
根据所述调用点的位置信息以及错误...

【专利技术属性】
技术研发人员:陈一雄夏鸣远
申请(专利权)人:上海绊糖信息科技有限公司
类型:发明
国别省市:

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

1