[发明专利]一种基于抽象语法树的开源软件缺陷数据分类方法及系统有效
申请号: | 202011036601.X | 申请日: | 2020-09-28 |
公开(公告)号: | CN112181428B | 公开(公告)日: | 2021-10-22 |
发明(设计)人: | 艾骏;许嘉熙;陈世嘉;施韬;邵义康 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F11/36 |
代理公司: | 北京高沃律师事务所 11569 | 代理人: | 崔玥 |
地址: | 100191 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 抽象 语法 软件 缺陷 数据 分类 方法 系统 | ||
1.一种基于抽象语法树的开源软件缺陷数据分类方法,其特征在于,包括:
获取软件缺陷源代码信息;所述软件缺陷源代码信息包括缺陷修复前的代码文件和缺陷修复后的代码文件;
生成所述软件缺陷源代码信息的抽象语法树,并确定所述抽象语法树的修改行为信息;所述修改行为信息包括修改节点和对应的行为名称;所述行为名称包括增加、删除、修改和移动;
基于所述修改行为信息中的修改节点识别有意义节点;
基于所述有意义节点和所述有意义节点的行为名称识别潜在节点和潜在行为名称;所述潜在节点为所述有意义节点中代码修改属性正确的节点;所述潜在行为名称为与所述潜在节点对应的修改行为正确的行为名称;
基于所述潜在节点和所述潜在行为名称生成缺陷类别信息,并对所述缺陷类别信息进行整合,得到缺陷分类结果;所述缺陷类别信息包括缺陷模块信息和缺陷修复方式信息;
所述基于所述有意义节点和所述有意义节点的行为名称识别潜在节点和潜在行为名称,具体包括:
依据潜在节点规则确定所述有意义节点中的潜在节点;依据潜在行为名称规则对所述潜在节点的行为名称进行更改,得到潜在行为名称,具体的:
1)所述依据潜在节点规则确定所述有意义节点中的潜在节点,具体包括:
根据节点属性判断当前节点是否为第一设定节点,得到第一判断结果;所述第一设定节点为包含潜在节点的程度大于第一设定值的节点;所述当前节点为所述有意义节点中的一个节点;所述第一设定节点具体包括VariableDeclarationStatement、VariableDeclarationExpression、Assignment、InfixExpression、PrefixExpression、MethodInvocation、SuperMethodInvocation、ClassInstanceCreation和This-Expression;
创建当前节点的所有父节点,并根据节点属性判断当前节点的所有父节点中是否存在目标节点,得到第二判断结果;所述目标节点为成为潜在节点的程度大于第二设定阈值的节点;所述目标节点具体包括IfStatement、SwitchStatement、SwitchCase、ConditionalExpression、WhileStatement、DoStatement、ForStatement、EnhancedForStatement、TryStatement和ThrowStatement;
自底向上遍历当前节点的所有父节点,判断在遍历到所述目标节点之前,所有被遍历到的父节点中是否不存在块节点,得到第三判断结果;
判断当前节点的所有父节点中的节点位置是否存在符合第一设定要求的节点,得到第四判断结果;若目标节点为IfStatement、SwitchStatement、SwitchCase、ForStatement、EnhancedForStatement、WhileStatement、TryStatement和ThrowStatement,则所述第一设定要求为:是与目标节点位置相距最近的子节点;若目标节点为Conditional-Expression,则所述第一设定要求为:是与目标节点位置相距最近且相对距离不为0的子节点;若目标节点为DoStatement,则所述第一设定要求为:与目标节点位置相距为DoBlock节点长度与DoStatement节点长度之和;
若所述第一判断结果、所述第二判断结果、所述第三判断结果和所述第四判断结果均为是,则将当前节点确定为潜在节点;
2)所述依据潜在行为名称规则对所述潜在节点的行为名称进行更改,得到潜在行为名称,具体包括:
根据节点属性判断所述修改节点中是否不包含所述潜在节点,得到第五判断结果;
根据节点属性判断目标潜在节点的所有父节点中是否存在符合第二设定要求的父节点,得到第六判断结果;第二设定要求为父节点为潜在节点;
若所述第五判断结果和所述第六判断结果均为是,则将所述目标潜在节点的行为名称更改为修改,并将更改后的行为名称确定为潜在行为名称;
所述基于所述修改行为信息中的修改节点识别有意义节点,具体包括:
生成所有修改节点的父节点组;一个所述修改节点对应一组父节点组;
采用树结构自底向上遍历的方式确定各所述父节点组中节点属性为设定分类依据属性的节点;
将所述修改节点和各所述父节点组中节点属性为设定分类依据属性的节点确定为有意义节点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011036601.X/1.html,转载请声明来源钻瓜专利网。