【技术实现步骤摘要】
一种基于多粒度节点的软件缺陷预测方法
[0001]本专利技术涉及G06F11/36领域,具体为一种基于多粒度节点的软件缺陷预测方法。
技术介绍
[0002]随着现代软件规模的不断增加,软件的复杂性愈加提升,因此在软件开发和维护的过程中,调试和测试的任务也更加的困难。近年来,相关研究人员开始探索软件缺陷预测方法,辅助和帮助开发者进行软件缺陷的查找和预测。软件缺陷预测技术基于机器学习方法,利用历史的缺陷数据建立模型,预测新的代码是否有缺陷倾向。出色的软件缺陷预测模型可有效地统计和预测软件系统中缺陷的数目和分布,以此帮助开发和测试团队了解软件质量状态,从而合理分配测试资源,节省软件的测试成本。
[0003]为了训练出预测准确度高的模型,从软件缺陷数据中提取的代码特征起着至关重要的作用。目前多数软件缺陷预测方法利用的特征是人为选择的Handcrafted特征,如基于运算符和操作数的Halstead特征、基于依赖特性的McCabe特征和基于面向对象概念的CK特征等。然而,此类Handcrafted特征通常不能全面包含代码的语义 ...
【技术保护点】
【技术特征摘要】
1.一种基于多粒度节点的软件缺陷预测方法,其特征在于,至少包括以下步骤:步骤1:代码解析;步骤2:向量转换;步骤3:特征提取;步骤4:预测缺陷。2.根据权利要求1所述的一种基于多粒度节点的软件缺陷预测方法,其特征在于,所述步骤1中代码解析具体为:运用Python的Javalang工具包解析Java文件生成相应的抽象语法树,Java代码片段中的每个结构元素都被表示为了抽象语法树的节点,通过遍历抽象语法树,将其转换为节点序列,并对节点类型进行归类。3.根据权利要求2所述的一种基于多粒度节点的软件缺陷预测方法,其特征在于,所述节点类型至少归类为方法调用和类实例化节点、声明节点、控制流节点。4.根据权利要求2或3所述的一种基于多粒度节点的软件缺陷预测方法,其特征在于,所述节点的粒度选择是根据粒度的粗细变化和混合方式整理为5种粒度选择。5.根据权利要求4所述的一种基于多粒度节点的软件缺陷预测方法,其特征在于,所述5种粒度选择具体为:(1)粗粒度:直接选取抽象语法树中节点类型作为节点标识;(2)细粒度:选取抽象语法树中节点名作为标识,如在变量声明或调用的节点中使用变量名、方法声明或调用的节点中使用方法名,如果没有具体元素名称的节点,则选用节点类型作为标识;(3)常规粒度:取抽象语法树中节点类型,遇方法调用节点时追加方法名,类创建节点时追加类名;(4)混合粒度1:首先选取抽象语法树中节点类型,如是方法声明节点,追加访问修饰符和方法名;如是类声明节点,追加访问修饰符和类名;如是变量声明节点,追加访问修饰符和变量类型;如是方法调用节点,追加方法名和参数类型;如是判断节点,追加判断条件;(5)混合粒度2:在混合粒度1的基础上,如果是方法声明或调...
【专利技术属性】
技术研发人员:邱少健,林子濠,丰鑫,
申请(专利权)人:诺维艾创广州科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。