[发明专利]一种程序错误自动修正方法、装置、电子设备及存储介质有效
申请号: | 201810950683.5 | 申请日: | 2018-08-20 |
公开(公告)号: | CN109408114B | 公开(公告)日: | 2021-06-22 |
发明(设计)人: | 王甜甜;许家欢;王克朝;苏小红 | 申请(专利权)人: | 哈尔滨工业大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F8/30;G06F8/36 |
代理公司: | 北京劲创知识产权代理事务所(普通合伙) 11589 | 代理人: | 王闯 |
地址: | 150001 黑龙*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 程序 错误 自动 修正 方法 装置 电子设备 存储 介质 | ||
1.一种程序错误自动修正方法,其特征在于,包括:
S1、根据待进行修正的学生程序从预先设定的多个模板程序获取与所述学生程序最为匹配的模板程序作为示例程序;其中,所述待进行修正的学生程序是学生提交的含有缺陷的完成相应题目要求且无法通过所有规定的测试用例的程序;所述多个模板程序是教师提供的多个完成相应题目要求且能够通过所有规定的测试用例的程序,其中,每个模板程序都是语法结构不同的格式规范的程序;
S2、根据所述学生程序以及所述示例程序进行语法树匹配,获取两个程序中语法结构相似节点和语法结构不同节点,并为每个节点赋予不同的权值;
S3、对所述学生程序和所述示例程序进行插桩,得到两个插桩后的程序,使用预设测试用例执行两个插桩后的程序,获得两个程序中每个变量的执行值序列,并将得到的执行值序列进行匹配,获取两个程序相同功能变量的映射表;
S4、通过轮盘赌选择法根据节点对应的权值对所述学生程序以及所述示例程序中的节点进行选择,并将两个程序中选中的节点进行变异操作,以及将变异操作存储在编辑序列中,生成第一代变异体种群;
S5、将当前最新一代变异体种群中的编辑序列的操作应用于所述学生程序上,生成对应的变异体,使用所述预设测试用例执行所有变异体,通过所述预设测试用例的执行结果、变异体与所述示例程序中对应节点的语法结构的匹配度计算变异体的适应度;
S6、按照每个变异体适应度与所有变异体适应度之和的比例作为概率选择变异体进行交叉和变异操作,形成新的编辑序列,生成新一代变异体种群;
S7、循环执行S5和S6直到有变异体可以通过所有规定的测试用例或达到预设迭代次数,将适应度最高的变异体作为所述学生程序的修正程序以及其对应的编辑序列的操作作为修正方案输出。
2.根据权利要求1所述的方法,其特征在于,所述S1具体包括:
将预先设定的多个模板程序以及待进行修正的学生程序分别生成对应的语法树,其中语法树的每一个节点对应程序代码中一段结构规范的代码;
将学生程序的语法树与每一个模板程序的语法树进行子树匹配,将与学生程序的语法树匹配程度最高的模板程序作为示例程序。
3.根据权利要求1所述的方法,其特征在于,所述S2具体包括:
从所述学生程序和所述示例程序的语法树中通过最大公共子树匹配的方式寻找语法结构相似节点和语法结构不同节点,并为每个节点赋予不同的权值,其中,对语法结构不同节点赋予更高的权值;
其中,从所述学生程序和所述示例程序的语法树中通过最大公共子树匹配的方式寻找语法结构相似节点和语法结构不同节点是指,对两个程序的语法树提取出来的节点序列使用最长公共子序列匹配算法记录匹配路径,两个节点为语法结构相似节点的条件是两个节点对应代码结构相同、它们父节点对应结构相同且两节点对应代码不完全相同;其中,不满足语法结构相似节点条件的均为语法结构不同节点。
4.根据权利要求3所述的方法,其特征在于,所述S3具体包括:
对所述学生程序和所述示例程序进行插桩,得到两个插桩后的程序,使用预设测试用例执行两个插桩后的程序,获得两个程序中每个变量的执行值序列,对两个程序中每个变量的执行值序列分别做序列匹配,相似度最大的两个值序列对应的变量为相同功能变量,存储到变量映射表中,获取两个程序相同功能变量的映射表。
5.根据权利要求4所述的方法,其特征在于,所述S4具体包括:
通过轮盘赌选择法根据节点对应的权值对所述学生程序以及所述示例程序中的节点进行选择,将被选择的学生程序节点与示例程序节点进行变异操作,变异操作包含插入、删除和替换三种操作,将操作名称、学生程序节点、示例程序节点记录在编辑序列中,预设数量的编辑序列构成第一代变异体种群;
其中,插入操作是将被选择的示例程序节点插入到被选择的学生程序节点后面,删除操作是将被选择的学生程序节点从学生程序语法树中删除,替换操作是将被选择的示例程序节点替换掉学生程序中被选择的节点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学,未经哈尔滨工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810950683.5/1.html,转载请声明来源钻瓜专利网。