[发明专利]一种前端网页输入约束提取方法和装置有效
申请号: | 201910731804.1 | 申请日: | 2019-08-08 |
公开(公告)号: | CN110618809B | 公开(公告)日: | 2020-11-03 |
发明(设计)人: | 张颖;黄杨洋;黄罡;梅宏 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F8/20 | 分类号: | G06F8/20 |
代理公司: | 北京中济纬天专利代理有限公司 11429 | 代理人: | 江黎 |
地址: | 100871 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 前端 网页 输入 约束 提取 方法 装置 | ||
1.一种前端网页输入约束提取方法,其特征在于,包括以下步骤:
标记前端网页的所有Javascript代码中包含出错信息的函数,作为目标函数;
对标记的目标函数进行数据流分析,并根据数据流分析结果进行代码切片;所述对标记的目标函数进行数据流分析,是将目标函数转换成抽象语法树,然后对抽象语法树进行数据流分析;所述数据流分析记录当前语句的定义变量、引用变量和所依赖的控制语句;所述根据数据流分析结果进行代码切片,从被标记出错信息的语句开始,反向进行切片;切片过程维护一个相关变量列表P,初始化为被标记语句的引用变量集合;当一个语句的定义变量集合Q与P的交集不为空时,将此语句加入切片集合,并更新相关变量列表P;所述更新相关变量列表P,更新规则为去除Q与P交集元素,并加入Q中所有的引用变量集合;
将获得的切片代码与前端网页输入相匹配,提取出前端网页输入约束相关的Javascript验证代码;所述将获得的切片代码与前端网页输入相匹配,是通过关联网页元素的id实现切片代码与前端网页输入的匹配,若能对应,说明切片代码对应前端网页输入,即切片代码被关联到前端网页输入。
2.根据权利要求1所述的方法,其特征在于,标记所述目标函数的过程包括:
配置出错信息的特征关键字;
将输入Javascript代码转换成抽象语法树,然后按语句遍历抽象语法树;在遍历过程中对语句包含的对象变量名、对象方法名、函数调用名、函数参数名、函数参数常量字符串与所述特征关键字进行匹配,若语句包含所述特征关键字将被标记为潜在的出错函数,即目标函数。
3.根据权利要求1所述的方法,其特征在于,进行代码切片的过程中,当遇到已切片的程序所依赖的控制语句时,直接将该控制语句加入切片集合。
4.根据权利要求1所述的方法,其特征在于,如果与网页输入相关变量的定义在当前切片代码的函数作用域之外,则通过从内向外扩张作用域的方式进行搜索,定位对应的网页输入相关变量。
5.一种采用权利要求1~4中任一权利要求所述方法的前端网页输入约束提取装置,其特征在于,包括:
目标函数标记模块,负责标记前端网页的所有Javascript代码中包含出错信息的函数,作为目标函数;
代码切片模块,负责对标记的目标函数进行数据流分析,并根据数据流分析结果进行代码切片;所述对标记的目标函数进行数据流分析,是将目标函数转换成抽象语法树,然后对抽象语法树进行数据流分析;所述数据流分析记录当前语句的定义变量、引用变量和所依赖的控制语句;所述根据数据流分析结果进行代码切片,从被标记出错信息的语句开始,反向进行切片;切片过程维护一个相关变量列表P,初始化为被标记语句的引用变量集合;当一个语句的定义变量集合Q与P的交集不为空时,将此语句加入切片集合,并更新相关变量列表P;所述更新相关变量列表P,更新规则为去除Q与P交集元素,并加入Q中所有的引用变量集合;
匹配模块,负责将获得的切片代码与前端网页输入相匹配,提取出前端网页输入约束相关的Javascript验证代码;所述将获得的切片代码与前端网页输入相匹配,是通过关联网页元素的id实现切片代码与前端网页输入的匹配,若能对应,说明切片代码对应前端网页输入,即切片代码被关联到前端网页输入。
6.一种计算机,其特征在于,其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行权利要求1~4中任一权利要求所述方法中各步骤的指令。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910731804.1/1.html,转载请声明来源钻瓜专利网。