首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到16条相似文献,搜索用时 171 毫秒
1.
王欢  张丽萍  闫盛 《计算机应用》2016,36(12):3468-3475
针对克隆代码有害性预测中有害和无害数据分类不平衡的问题,提出一种基于随机下采样(RUS)的能够自动调整分类不平衡的K-Balance算法。首先对克隆代码提取静态特征和演化特征构建样本数据集;然后选取比例不同的分类不平衡新数据集;接着对已选取的新数据集进行有害性预测;最后,通过观察分类器的不同表现自动选择一个最适合的分类不平衡比例值。在7款C语言开源软件共170个版本上对克隆有害性预测模型的性能进行评估,并和其他分类不平衡解决方法进行对比,实验结果表明所提方法对有害和无害克隆的分类预测效果(受试者工作特征曲线下方面积(AUC)值)提高了2.62个百分点~36.70个百分点,能有效地改善分类不平衡的预测问题。  相似文献   

2.
针对软件中克隆代码的质量进行研究,评价软件当前所有版本中克隆代码的质量。在此基础上使用贝叶斯网络训练已有样本数据,得到克隆代码质量预测模型,其能预测软件未发布版本中克隆代码的质量,根据评价和预测结果给开发人员提供克隆代码重构和有效复用的建议,防止有害克隆代码的大量繁殖。 实验表明,该方法能够较准确地预测软件中克隆代码的质量。  相似文献   

3.
王欢  张丽萍  闫盛  刘东升 《计算机应用》2017,37(4):1135-1142
为解决克隆代码有害性预测过程中特征无关与特征冗余的问题,提出一种基于相关程度和影响程度的克隆代码有害性特征选择组合模型。首先,利用信息增益率对特征数据进行相关性的初步排序;然后,保留相关性排名较高的特征并去除其他无关特征,减小特征的搜索空间;接着,采用基于朴素贝叶斯等六种分类器分别与封装型序列浮动前向选择算法结合来确定最优特征子集。最后对不同的特征选择方法进行对比分析,将各种方法在不同选择准则上的优势加以利用,对特征数据进行分析、筛选和优化。实验结果表明,与未进行特征选择之前对比发现有害性预测准确率提高15.2~34个百分点以上;与其他特征选择方法比较,该方法在F1测度上提高1.1~10.1个百分点,在AUC指标上提升达到0.7~22.1个百分点,能极大地提高有害性预测模型的准确度。  相似文献   

4.
针对当前克隆谱系的构建方法较为复杂、演化模式亟需扩充等问题,提出了新的克隆代码演化模式,并根据软件版本间的克隆代码映射关系自动构建了克隆谱系。首先,针对软件每一版本进行克隆检测并利用潜在狄利克雷分配(LDA)抽取克隆代码的主题信息;然后,根据克隆代码主题的相似度确定版本间克隆代码的映射关系;进而,根据已有的映射关系为克隆代码添加演化模式并分析演化特征;最终,结合映射信息与演化模式信息完成克隆谱系的构建。针对4款开源软件进行了克隆谱系的构建实验,实验结果表明所提克隆谱系构建方法可行,证实了新提出的演化模式在克隆代码演化过程中确实存在。实验发现约90%的克隆代码在软件演化过程中比较稳定,约67%的克隆群经历的发布版本数不超过发布版本总数的一半。实验结论及理论分析将为克隆代码的后续研究及克隆代码的维护与管理提供有力支持。  相似文献   

5.
陈桌  张丽萍  王春晖 《计算机应用》2016,36(12):3461-3467
针对现有克隆演化模式分类不清晰、克隆谱系提取工具少且效率低等问题,提出了根据克隆代码映射关系和演化信息自动构建克隆谱系的方法。首先通过词频向量计算、代码行距以及克隆属性相结合分阶段映射版本间克隆;然后根据映射结果为克隆群和克隆片段添加演化模式;最后串联所有版本中的克隆映射关系和演化模式构建克隆谱系。对4款开源软件进行实验并人工验证,实验结果表明克隆谱系提取工具——ECG的可行性和高效性。此外,从提取结果中发现,在演化过程中约42%的克隆代码未发生变化,发生不一致变化的克隆代码约占3.48%,此类克隆可能会引入潜在bug需要被重点关注。该方法将为克隆代码质量评估和管理提供参考和支持。  相似文献   

6.
程序员对源代码的拷贝、粘贴及修改活动会导致软件中出现大量的克隆代码,而在版本的进化过程中,克隆代码的不一致变化是引起程序错误的主要原因,同时会增加维护成本。为了解决该问题,提出一种新的研究方法:首先构建版本间克隆群的映射关系,其次借助潜在狄利克雷分配(LDA)模型提取直系克隆群集主题,最后预测克隆代码不一致变化的可能性。对一款软件的8个版本进行了实验,实验结果的区分度明显,可以有效地预测不一致变化的可能性,评估软件质量和可信性。  相似文献   

7.
针对当前克隆跟踪大多基于软件的发布版本,丢失了软件开发过程中克隆代码较多的变化信息,并且克隆演化模式定义不明确、不区分视角。提出一种基于修改日志克隆代码跟踪方法,并分三种视角(克隆群、克隆片段、克隆代码内容)识别演化模式。首先,将每次提交作为一个小版本,使用NiCad进行克隆检测;其次,基于Token编辑距离相似度克隆群初步映射;再次,基于修改日志克隆片段精准映射;然后,基于克隆片段映射结果修正克隆群映射;最后,分视角识别克隆演化模式。对6款开源软件总共近8?000个版本进行实验,结果表明超过97%的克隆稳定演化,而分离演化模式、合并演化模式、复杂演化模式均不超过0.01%,一致变化演化模式、不一致变化演化模式均不超过2%。在多款软件上与领域内较优秀的同类工具gCad进行对比实验,结果查全率(提高了2%)、查准率(提高了2%)明显高于gCad,而且同环境下速度比gCad快。  相似文献   

8.
克隆代码是指重复或类似的代码片段,这些重复代码来自于“复制粘贴修改”的编程方式,此类代码会严重影响软件的可维护性。研究者们从各种角度来探索克隆代码的存在、发展和变化规律,对克隆代码进行追踪并发现在其演化过程中表现的特征和模式,从而更好地研究和管理,而克隆映射是整个研究过程的核心步骤。介绍了克隆相关概念及术语,详细阐述了不同类型的映射方法并总结方法的优缺点,说明了克隆映射在克隆演化分析和克隆质量评估方面的应用,对克隆映射的发展趋势进行了总结和展望。  相似文献   

9.
随着软件生态系统和开源社区的发展,代码常在多个软件系统中复制、传播和演化,给软件系统带来了软件质量的不确定性和风险,因此,高效地查找软件系统代码可能的来源是当前研究的热点之一。提出一种基于代码克隆检测的代码来源分析方法,将目标软件代码以方法为单位切割为代码片段,转换为词袋后,在大规模代码资源库中进行并行化代码克隆检测,从而实现方法粒度的代码来源分析。基于该方法,设计并实现了一个代码来源分析工具。该工具能自动分析被测软件项目代码与代码资源库中多个项目以及版本之间的可能来源。实验结果表明,该系统能够有效地找出目标项目在大规模代码库中的代码来源信息,辅助软件维护人员理解和维护代码。  相似文献   

10.
针对单个版本克隆检测结果不足以体现克隆特征这一问题,从软件多版本中自动提取克隆谱系,获得克隆在软件演化过程中表现出的模式和特征。首先基于克隆代码Token表示及其所在文件名称、函数名称等位置属性,准确映射软件历时演化版本间的克隆代码,进而识别克隆演化模式;然后匹配克隆类ID号,合并所有相邻版本间的映射结果及演化模式信息,得到克隆谱系。同时开发了相应的克隆谱系自动提取工具FCG对6款开源软件进行了测试,发现当前版本中克隆代码平均生命周期占所研究版本总数的70%以上,且大部分没有发生变化,说明大部分克隆能被较好地维护,但也存在少量不稳定的克隆可能导致软件缺陷,需要修改或重构。实验结果表明FCG可高效提取克隆谱系,有助于更好地理解克隆及有针对性地管理克隆。  相似文献   

11.
Context:Research related to code clones includes detection of clones in software systems, analysis, visualization and management of clones. Detection of semantic clones and management of clones have attracted use of machine learning techniques in code clone related research.Objective:The aim of this study is to report the extent of machine learning usage in code clone related research areas.Method:The paper uses a systematic review method to report the use of machine learning in research related to code clones. The study considers a comprehensive set of 57 articles published in leading conferences, workshops and journals.Results:Code clone related research using machine learning techniques is classified into different categories. Machine learning and deep learning algorithms used in the code clone research are reported. The datasets, features used to train machine learning models and metrics used to evaluate machine learning algorithms are reported. The comparative results of various machine learning algorithms presented in primary studies are reported.Conclusion:The research will help to identify the status of using machine learning in different code clone related research areas. We identify the need of more empirical studies to assess the benefits of machine learning in code clone research and give recommendations for future research.  相似文献   

12.
折蓉蓉  张丽萍  侯敏  闫盛 《计算机应用》2018,38(7):2037-2043
针对克隆代码的大量使用会导致长期软件维护问题甚至引入错误,提出了一种基于决策树的分类器来推荐克隆进行重构。首先,使用NiCad进行克隆检测;其次,收集了与克隆关系、克隆代码段和克隆上下文都相关的特征;然后,利用决策树分类器训练;最后,利用K折交叉评估分类结果。在5款开源软件中对近600多个克隆实例进行实验,实验结果表明所提方法为每个目标系统推荐克隆重构实例时达到80%的精度。  相似文献   

13.
针对已有克隆代码检测工具只输出克隆组形式的检测结果,而无法分析克隆代码对软件质量的影响问题,提出危害软件质量的关键克隆代码的识别方法。首先,定义了克隆代码的统一表示形式,使之可以分析各种克隆检测工具的检测结果;接下来,解析源程序和克隆检测结果,识别标识符命名不一致性潜在缺陷;然后,定义了克隆关联图,在此基础上检测跨越多个实现不同功能的文件、危害软件可维护性的克隆代码;最后,对检测结果进行可视化统计分析。本文的克隆代码分析工具被应用于分析开源代码httpd,检测出了1组标识符命名不一致的克隆代码和44组危害软件可维护性的关键克隆类,实验结果表明,本文方法可以有效辅助软件开发和维护人员分析、维护克隆代码。  相似文献   

14.
代码克隆检测是软件工程领域的一项重要任务, 对于语义相似但语法差距较大的四型代码克隆的检测尤为困难. 基于深度学习的方法在四型代码克隆的检测上已经取得了较好的效果, 但是使用人工标注的代码克隆对进行监督学习的成本较高. 提出了两种简单有效的预训练策略来增强基于深度学习的代码克隆检测模型的代码表示, 以减少监督学习模型中...  相似文献   

15.
为了提高软件的可靠性,软件缺陷预测已经成为软件工程领域中一个重要的研究方向.传统的软件缺陷预测方法主要是设计静态代码度量,并用机器学习分类器来预测代码的缺陷概率.但是,静态代码度量未能充分考虑到潜藏在代码中的语义特征.根据这种状况,本文提出了一种基于深度卷积神经网络的软件缺陷预测模型.首先,从源代码的抽象语法树中选择合适的结点提取表征向量,并构建字典将其映射为整数向量以方便输入到卷积神经网络.然后,基于GoogLeNet设计卷积神经网络,利用卷积神经网络的深度挖掘数据的能力,充分挖掘出特征中的语法语义特征.另外,模型使用了随机过采样的方法来处理数据分类不均衡问题,并在网络中使用丢弃法来防止模型过拟合.最后,用Promise上的历史工程数据来测试模型,并以AUC和F1-measure为指标与其他3种方法进行了比较,实验结果显示本文提出的模型在软件缺陷预测性能上得到了一定的提升.  相似文献   

16.
克隆代码技术研究综述   总被引:1,自引:1,他引:0  
软件系统中克隆代码的检测与管理是软件工程中的基本问题之一, 在软件的质量、维护、架构、进化、专利和剽窃等众多领域有着广泛的应用需求。综述了克隆检测的过程、技术及其优缺点、克隆进化方向上的相关研究, 以及克隆管理的一些技术, 并特别介绍了克隆重构技术。最后概括了该领域所取得的研究成果, 并讨论了目前克隆代码研究中所遇到的挑战性问题。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号