一种基于抽象语法树的开源软件缺陷数据分类方法及系统与流程

文档序号:23553932发布日期:2021-01-05 21:15阅读:来源:国知局

技术特征:

1.一种基于抽象语法树的开源软件缺陷数据分类方法,其特征在于,包括:

获取软件缺陷源代码信息;所述软件缺陷源代码信息包括缺陷修复前的代码文件和缺陷修复后的代码文件;

生成所述软件缺陷源代码信息的抽象语法树,并确定所述抽象语法树的修改行为信息;所述修改行为信息包括修改节点和对应的行为名称;所述行为名称包括增加、删除、修改和移动;

基于所述修改行为信息中的修改节点识别有意义节点;所述有意义节点为包含缺陷分类依据信息的节点;

基于所述有意义节点和所述有意义节点的行为名称识别潜在节点和潜在行为名称;所述潜在节点为所述有意义节点中代码修改属性正确的节点;所述潜在行为名称为与所述潜在节点对应的修改行为正确的行为名称;

基于所述潜在节点和所述潜在行为名称生成缺陷类别信息,并对所述缺陷类别信息进行整合,得到缺陷分类结果;所述缺陷类别信息包括缺陷模块信息和缺陷修复方式信息。

2.根据权利要求1所述的一种基于抽象语法树的开源软件缺陷数据分类方法,其特征在于,所述生成所述软件缺陷源代码信息的抽象语法树,并确定所述抽象语法树的修改行为信息,具体包括:

采用树差异对比器分别生成缺陷修复前的代码文件的抽象语法树和缺陷修复后的代码文件的抽象语法树;

采用比较器对所述缺陷修复前的代码文件的抽象语法树和所述缺陷修复后的代码文件的抽象语法树进行差分对比分析,生成抽象语法树的修改行为信息。

3.根据权利要求1所述的一种基于抽象语法树的开源软件缺陷数据分类方法,其特征在于,所述基于所述修改行为信息中的修改节点识别有意义节点,具体包括:

生成所有修改节点的父节点组;一个所述修改节点对应一组父节点组;

采用树结构自底向上遍历的方式确定各所述父节点组中节点属性为设定分类依据属性的节点;

将所述修改节点和各所述父节点组中节点属性为设定分类依据属性的节点确定为有意义节点。

4.根据权利要求3所述的一种基于抽象语法树的开源软件缺陷数据分类方法,其特征在于,所述设定分类依据属性包括数据的定义声明和初始化、数据的赋值、数学计算与逻辑计算、方法与接口调用、方法定义与声明、条件控制结构、循环控制结构、异常处理结构、同步异步结构以及不纳入。

5.根据权利要求1所述的一种基于抽象语法树的开源软件缺陷数据分类方法,其特征在于,所述基于所述有意义节点和所述有意义节点的行为名称识别潜在节点和潜在行为名称,具体包括:

依据潜在节点规则确定所述有意义节点中的潜在节点;

依据潜在行为名称规则对所述潜在节点的行为名称进行更改,得到潜在行为名称。

6.根据权利要求5所述的一种基于抽象语法树的开源软件缺陷数据分类方法,其特征在于,所述依据潜在节点规则确定所述有意义节点中的潜在节点,具体包括:

根据节点属性判断当前节点是否为第一设定节点,得到第一判断结果;所述第一设定节点为包含潜在节点的程度大于第一设定值的节点;所述当前节点为所述有意义节点中的一个节点;

创建当前节点的所有父节点,并根据节点属性判断当前节点的所有父节点中是否存在目标节点,得到第二判断结果;所述目标节点为成为潜在节点的程度大于第二设定阈值的节点;

自底向上遍历当前节点的所有父节点,判断在遍历到所述目标节点之前,所有被遍历到的父节点中是否不存在块节点,得到第三判断结果;

判断当前节点的所有父节点中的节点位置是否存在符合第一设定要求的节点,得到第四判断结果;

若所述第一判断结果、所述第二判断结果、所述第三判断结果和所述第四判断结果均为是,则将当前节点确定为潜在节点。

7.根据权利要求5所述的一种基于抽象语法树的开源软件缺陷数据分类方法,其特征在于,所述依据潜在行为名称规则对所述潜在节点的行为名称进行更改,得到潜在行为名称,具体包括:

根据节点属性判断所述修改节点中是否不包含所述潜在节点,得到第五判断结果;

根据节点属性判断目标潜在节点的所有父节点中是否存在符合第二设定要求的父节点,得到第六判断结果;

若所述第五判断结果和所述第六判断结果均为是,则将所述目标潜在节点的行为名称更改为修改,并将更改后的行为名称确定为潜在行为名称。

8.根据权利要求1所述的一种基于抽象语法树的开源软件缺陷数据分类方法,其特征在于,所述基于所述潜在节点和所述潜在行为名称生成缺陷类别信息,并对所述缺陷类别信息进行整合,得到缺陷分类结果,具体包括:

将所述潜在节点中潜在行为名称为移动的节点确定为移动节点;

对所述移动节点进行拆分或将所述移动节点的行为名称转化为增加、删除或修改,得到修改后的潜在行为名称;

依据节点变动属性与缺陷类别的映射关系生成缺陷模块信息;

依据行为名称与修复方式的映射关系生成缺陷修复方式信息;

对所述缺陷模块信息和所述缺陷修复方式信息进行整合,得到缺陷分类结果。

9.一种基于抽象语法树的开源软件缺陷数据分类系统,其特征在于,包括:

数据获取模块,用于获取软件缺陷源代码信息;所述软件缺陷源代码信息包括缺陷修复前的代码文件和缺陷修复后的代码文件;

抽象语法树生成模块,用于生成所述软件缺陷源代码信息的抽象语法树,并确定所述抽象语法树的修改行为信息;所述修改行为信息包括修改节点和对应的行为名称;所述行为名称包括增加、删除、修改和移动;

有意义节点识别模块,用于基于所述修改行为信息中的修改节点识别有意义节点;所述有意义节点为包含缺陷分类依据信息的节点;

潜在节点识别模块,用于基于所述有意义节点和所述有意义节点的行为名称识别潜在节点和潜在行为名称;所述潜在节点为所述有意义节点中代码修改属性正确的节点;所述潜在行为名称为与所述潜在节点对应的修改行为正确的行为名称;

缺陷分类模块,用于基于所述潜在节点和所述潜在行为名称生成缺陷类别信息,并对所述缺陷类别信息进行整合,得到缺陷分类结果;所述缺陷类别信息包括缺陷模块信息和缺陷修复方式信息。

10.根据权利要求9所述的一种基于抽象语法树的开源软件缺陷数据分类系统,其特征在于,所述抽象语法树生成模块,具体包括:

抽象语法树生成单元,用于采用树差异对比器分别生成缺陷修复前的代码文件的抽象语法树和缺陷修复后的代码文件的抽象语法树;

差分对比单元,用于采用比较器对所述缺陷修复前的代码文件的抽象语法树和所述缺陷修复后的代码文件的抽象语法树进行差分对比分析,生成抽象语法树的修改行为信息。


技术总结
本发明公开了一种基于抽象语法树的开源软件缺陷数据分类方法及系统。该方法包括:获取软件缺陷源代码信息;软件缺陷源代码信息包括缺陷修复前的代码文件和缺陷修复后的代码文件;生成软件缺陷源代码信息的抽象语法树,并确定抽象语法树的修改行为信息;基于修改行为信息中的修改节点识别有意义节点;基于有意义节点和有意义节点的行为名称识别潜在节点和潜在行为名称;基于潜在节点和潜在行为名称生成缺陷类别信息,并对缺陷类别信息进行整合,得到缺陷分类结果;缺陷类别信息包括缺陷模块信息和缺陷修复方式信息。本发明能解决人工操作过程复杂、人力成本和时间成本高、受主观意见影响分类过程、缺陷分类数据来源有限的问题。

技术研发人员:艾骏;许嘉熙;陈世嘉;施韬;邵义康
受保护的技术使用者:北京航空航天大学
技术研发日:2020.09.28
技术公布日:2021.01.05
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1