基于改进的C4.5算法的代码异味检测方法
2021-04-22吴海涛高建华
计算机工程与设计 2021年4期
王 帆,吴海涛,高建华
(上海师范大学 信息与机电工程学院,上海 200234)
0 引 言
在软件生命周期阶段,代码异味导致软件质量逐渐衰退,降低软件理解性和维护性[1]。代码异味检测已经成为发现软件源码或设计问题的方法,过去几十年中,大量研究者研究出不同的代码异味检测技术。Baydaa等[2]在基于相似性度量基础上提出两种新的度量检测Refused Bequest代码异味。Palomba等[3]提出一种“HIST”检测技术,通过挖掘系统版本变更历史来检测代码异味,解决单个版本容易丢失重要信息的缺点。近些年来,越来越多的研究者使用机器学习方法检测代码异味。Wang等[4]使用代码变更信息来提升代码异味数据集中的标签质量,得到更可靠的训练集,提高代码异味检测准确率。Amorim等[5]将C5.0算法和遗传算法相结合进行代码异味检测。Fontana等[6]使用16种机器学习算法对4种代码异味进行检测,其目的是评估哪种机器学习算法在检测代码异味上准确率更高。
为了提高代码异味检测精确度并使开发人员便于理解代码异味检测过程,提高开发人员识别代码异味的信心,本文使用机器学习中的C4.5算法对其进行检测。在属性选择阶段,本文提出使用ReliefF算法计算条件属性和目标属性相关性,使用互信息计算条件属性间的冗余度,选择出相关性大而冗余度小的条件属性集,通过划分子集并依据机器学习算法求得F值最大的条件属性子集,减少生成决策树的计算开销。同时提出在C4.5算法中加入对称不确定性(SU),选择信息增益率高且与条件属性间相关度低的条件属性作为分裂属性,建立新的算法模型。……
登录APP查看全文
