基于代价敏感集成分类器的代码坏味检测

来源 :河北师范大学 | 被引量 : 1次 | 上传用户:zx0755
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
软件系统的演化是一个长期连续的过程,软件系统在一段时间内通常会发生一系列大小不等的变化。随着软件系统的发展,系统的功能就会越来越多,从而系统越来越大,相比较而言其设计就会变得恶化,会更加复杂和难以理解,导致软件系统很难维护。软件整个生命周期内,维护的花费是开发的2-100倍,为了提高软件系统的可维护性,降低维护成本,系统就必须在不影响外部行为的前提下进行重构,重构的基础就是检测代码坏味,因此,代码坏味的检测就变得尤为重要。代码坏味指软件设计上的一些问题,会导致软件很难演化,越来越多的学者采用机器学习的方法来检测坏味,机器学习方法能够通过学习样例来构建检测规则,最后用测试样例来评价结果,结果表明用机器学习方法检测代码坏味会取得更好的结果。但由于代码坏味的数据集是极度不平衡的,负样例个数远远大于正样例个数,这就导致传统机器学习算法的效果大打折扣。本文提出一种新的检测代码坏味的方法,以传统机器学习算法决策树为基础,引入以认知复杂度为代价因子的代价矩阵,从而降低数据不平衡对算法的影响,提高代码坏味的检测准确率,本文主要研究了长方法和特征依恋两种代码坏味的检测。本文的主要工作有:1)针对代码坏味的检测,考虑到数据的不平衡特点,提出一种新的代码坏味识别算法,代价敏感集成分类器算法。以传统决策树算法为基础,利用欠采样策略对样本进行重采样,进而生成多个平衡的子集,并把这些子集训练生成多个基分类器,将这些基分类器组合形成一个集成分类器。最后在集成分类器分类属性选择中加入错分类代价,其中错分类代价是由认知复杂度决定的,使得分类器能向准确分类少数类倾斜。2)基于抽象语法树计算了面向对象的度量。针对长方法(Long method)的检测,本文运用抽象语法树,在项目中计算出了每个方法的长度(MethodLine),圈复杂度(McCabe),LCOM等度量值。并把项目中所有长方法进行标记,便于后续识别。针对特征依恋坏味(Feature Envy)的检测,运用抽象语法树提取了项目中每个类的类名,所包含的方法名,ATFD(Access to Foreign Data)和LAA(Locality of Attribute Accesses)等度量,并标记了所有的特征依恋。3)在相同的数据集上,通过比较代价敏感集成分类器、决策树和随机森林算法的实验结果,验证了代价敏感集成分类器在代码坏味检测上的有效性。
其他文献
随着我国高速铁路的快速发展,CTCS-2级和CTCS-3级列控系统方案得以迅速推广实施,其中临时限速信息被定为列控系统中车-地通信报文里至关重要且必不可少的安全信息,故对临时限
针对西冯街煤业四盘区采区变电所硐室受3405上分层工作面采动影响围岩变形严重的问题,提出高应力松软围岩硐室全断面均衡加固技术,该技术主要包括底板反拱封闭支架支护、围岩
学前教育是义务教育的重要链接,将会影响孩子未来的发展。目前,我国存在政府对学前教育的经费投入严重不足、学前教育经费没有单项列支、投入的方式缺乏公平性合理性、学前教
建立中职与高职的有效衔接,是建立现代职业教育体系和提高职业教育质量的关键。衔接一般由课程目标、课程体系和课程内容三大部分构成,其关键点与难点均在课程体系的设计,以会计
随着煤矿开采深度的增加,煤层瓦斯含量和压力也不断增大,瓦斯灾害日趋严重。尤其是高瓦斯矿井的掘进工作面由于煤层瓦斯含量高,造成掘进工作面在掘进过程中瓦斯大量涌出,预警频繁
铁路客运专线的建设中,为不影响既有线正常运营及行车安全,最大程度避免通信中断,需先建立通信过渡,再对设备进行迁移、更新及改造。以庄桥站为例,详细介绍运营线通信系统过
美国最早在基础教育阶段(K-12)实施大规模的混合式学习,已取得了大量的成功案例。本文分析了混合式学习的起源与定义,归纳了美国K-12混合式学习的常见模式,描述了各种模式的
本文简要介绍了目前锚固技术的发展和应用以及国内锚固机理试验研究 ,最后指出了锚固技术在岩土工程中应用还需要开展的理论研究工作。 This article briefly introduces th
枣粉是通过对枣进行粉碎和干燥研制成的粉状混合物。发酵枣粉是枣粉通过微生物发酵而得到的发酵产物。研究表明,枣粉具有抗氧化、保护肠道健康及提高机体免疫力等多种功能,具