基于支持向量机的克隆代码有害性评价方法
2016-09-26张凡龙苏小红李智超马培军
张凡龙 苏小红 李智超 马培军



摘 要:克隆代码是软件中彼此相似的代码片段。传统观点认为克隆代码是有害的,会降低软件质量,但最近研究发现克隆代码不一定是有害的。如何评估克隆代码的有害性是一个值得研究的问题。本文提出了一种基于支持向量机的克隆代码有害性评价方法,可以以较高的准确性和查准率评价其有害性。为验证方法有效性,本文在6个系统上进行实验,结果表明本文方法可以有效地评价克隆代码的有害性,并且所提出的静态度量和演化度量对评价克隆代码有效性具有积极意义。
关键词:克隆代码;克隆有害性评价;克隆度量;支持向量机;克隆演化
中图分类号:TP311.5 文献标识号:A文章编号:2095-2163(2015)06-
Abstract: Code clone (also known as duplicated code) has always been a popular research field in software engineering. Traditional view is that code clone is harmful, because clone can decrease the quality of software. However, considering the clone evolution, some studies find that not all the clones are harmful. So how to evaluate the clone harmfulness is a problem. This paper proposes a method which can evaluate the clone harmfulness based on support vectors machine, and makes several experiments on 6 open-source software system which were written in 3 kinds of programming languages. The results show that the proposed method has an applicability and higher accuracy. It is a meaningful attempt to evaluate the clone harmfulness.
Keywords: Code Clone; Harmfulness Evaluation; Clone Metrics; Support Vector Machine; Clone Evolution
0 引 言
克隆代码是软件系统中彼此相同或相似的代码片段。大多数克隆代码情况是通过拷贝粘贴活动产生的[1],编程语言局限、使用相似API和函数调用也会产生克隆代码。在大型软件系统中克隆代码约占代码总量的7-23%[2]。传统观点认为克隆代码是一种代码坏味,意味着软件质量较差,可能会引入缺陷,需通过重构消除克隆代码[3-5]。有研究者使用克隆代码信息进行缺陷预测,如用历史变化信息预测缺陷[6],用克隆代码上下文信息来预测缺陷[7],用信息熵的概念来定义代码变化复杂度来预测缺陷[8]。然而,通过对克隆演化模式的研究发现不是所有的克隆代码都是有害的[9-12]。不足一半的克隆代码在演化过程中发生变化,而导致额外维护开销的一致变化克隆比例则更少[13],并且只有在少数情况下不一致变化而导致缺陷[14-15]。……
