[发明专利]JavaScript代码检测方法、装置、设备和存储介质在审
申请号: | 201910846579.6 | 申请日: | 2019-09-09 |
公开(公告)号: | CN110688307A | 公开(公告)日: | 2020-01-14 |
发明(设计)人: | 陈志城 | 申请(专利权)人: | 平安普惠企业管理有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 11321 北京市京大律师事务所 | 代理人: | 刘挽澜 |
地址: | 518027 广东省深圳市前海深港合作区前*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 语句 抽象语法树 检测结果 检查规则 正则表达式 自动化脚本 变量设置 标识信息 存储介质 代码检测 对比检测 工具领域 异常通知 遍历 构建 空集 解析 查找 返回 失败 申请 | ||
1.一种JavaScript代码检测的方法,其特征在于,所述方法包括:
获取JavaScript代码,并构建所述JavaScript代码对应的抽象语法树;所述抽象语法树是通过语法分析器创建;所述语法分析器是指编译器或解释器的组件,所述语法分析器用于语法检查,并根据所述JavaScript代码中的变量来构建数据结构;
通过自动化脚本查找JavaScript代码中的检查规则;所述检查规则是指通过所述变量的适用场景、前提条件、规范种类以及判断标准进行生成用于检测if语句中异常变量的规则;
通过遍历所述抽象语法树中的if语句,得到所述JavaScript代码的if语句;
分别对所述JavaScript代码中每一个if语句中的变量设置标识信息;
使用正则表达式以及所述检查规则对所述JavaScript代码中每一行if语句中的变量进行对比检测,以得到检测结果;
若所述检测结果为成功,则返回一个数组并更新所述正则表达式对象的属性和所述正则表达式对象;
或者,若所述检测结果为失败,则返回空集并发出异常通知。
2.根据权利要求1所述的方法,其特征在于,所述通过遍历所述抽象语法树中的if语句,得到所述JavaScript代码的if语句,包括:
循环遍历所述抽象语法树的所有对象,若通过Object.name判断与if字符串相等,并且匹配数组中包含了if,则确定所述JavaScript代码中包含if语句;所述数组用于存放所述JavaScript代码的状态;所述状态包括代码的属性;
查找所述JavaScript代码中if语句中是否存在变量,若查找到所述JavaScript代码中if语句中存在变量,则判断所述if语句中包含变量,并标识所述if语句。
3.根据权利要求1所述的方法,其特征在于,所述变量标识信息包括以下至少一项:JavaScript的探测标记变量赋值语句所属函数的函数名、所述JavaScript代码中的探测标记变量赋值语句的行号、所述JavaScript代码中代码段的探测标记变量赋值语句所属源文件的文件名。
4.根据权利要求1所述的方法,其特征在于,所述异常通知是指按照固定格式将代码行号、异常变量、所述异常信息及异常标志组合生成的通知。
5.根据权利要求4所述的方法,其特征在于,所述异常标志是指一个用于检测代码异常的32位二进制数,所述二进制数的每一位代表传每一种代码运行的异常状态;
对比检测执行完后,返回一个32位的2进制数;
若第i位是1,则确定第i+1个功能的所述代码运行正常;
若第i位是0,则确定第i+1个功能的所述代码运行存在异常;所述i是大于等于0且小于32的整数。
6.根据权利要求1所述的方法,其特征在于,所述规范种类至少包括:命名规范、声明规范、注释规范、常量规范、bean定义规范、事务规范、脚本规范、日志规范、异常处理规范、Junit规范、错误类规范、警告类规范及提示类规范中的一项。
7.根据权利要求1所述的方法,其特征在于,所述返回空集之后,所述方法还包括:
发出指示信息;所述指示信息用于指示所述JavaScript代码中的每个if语句的检测结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于平安普惠企业管理有限公司,未经平安普惠企业管理有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910846579.6/1.html,转载请声明来源钻瓜专利网。