一种自动构造语料并进行代码克隆检测的方法

来源 :天津大学 | 被引量 : 0次 | 上传用户:angieho
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
代码克隆检测是程序质量分析中的一项重要任务,检测出程序中的克隆代码有利于提高软件项目的可维护性,降低程序代码冗余。近年来,学者们贡献了多种克隆检测工具,随着机器学习的发展,很多基于机器学习检测代码克隆的方法应运而生,尤其是有监督的学习器加上词嵌入预处理的形式,在克隆检测任务中展示出了良好的效果。但是利用有监督学习器检测代码克隆存在两方面的问题:一是有标签的训练语料难以获得,以人工手动标注的方式构造克隆语料费时费力又带有很大程度的主观性。二是在克隆检测任务中通常采用基于token的中间表示形式,若直接把这些有限数量的token构成的词汇表用于预训练,学习器获得的学习能力不够充分。因此,本文针对上述两个问题,提出了一种有效的代码克隆检测方法。首先,本课题提出了基于代码克隆定义自动构造大规模伪训练语料库的方法,降低了打标签的成本,同时也提高了标注的科学性。其次,我们提出了在克隆代码检测任务中有效的代码中间表示——TPE单元,平衡了预训练词汇表表达能力和训练成本的关系。最后,利用充足的克隆语料和合理的代码表征方式,并基于有监督的分类器,我们提出了一个代码克隆检测模型,旨在解决1-3型代码克隆的检测的问题,并实现了一个查准率、查全率高的可靠代码克隆检测工具——TPECCD。我们在Big Clone Bench数据集上进行实验来验证我们的方法。实验结果表明,在克隆检测任务中,利用本课题提出的自动构造伪克隆语料的方法生成的克隆语料能取得和人工标注的数据集相当的效果;采用TPE单元作为代码中间表示形式参与到深度学习方法的预训练中,可以为神经模型输入更丰富的代码信息,同时减少了程序语句作为中间表示形式带来的集外词现象;本文提出的克隆检测工具与目前最先进的代码克隆检测工具TECCD,Oreo,CCLearner和CCAligner相比,有更好的检测效果。
其他文献
学位
学位
名著信息库亲爱的小伙伴们:我是初初,我们又见面啦!不过这次,你们可以叫我初初船长,因为我们要一起潜游,欣赏儒勒·凡尔纳的《海底两万里》。我们将随着大名鼎鼎的"鹦鹉螺"号,收获奇丽的见闻,见识传奇的人物,闯荡未知的秘境,探索文明的边界!在科幻小说领域,《海底两万里》宛如一部预言集——书中的许多"黑科技",像电能普及、载人深潜等,后来都成为现实。不幸的是,小说中忧虑的过度捕捞和捕杀,今天已经恶化
期刊
学位
学位
学位
低重复率高能量脉冲激光在微机械加工、生物样品检测、眼外科手术、激光雷达等领域有着重要的应用。传统获得低重复率高能量脉冲激光的方式是采用啁啾脉冲放大技术,这种传统的方式结构复杂,能量利用率低。长腔被动锁模光纤激光器可直接输出低重复率高能量脉冲,而且结构简单,具有很大的研究价值,成为近年来国内外光纤激光领域的研究热点之一。本论文基于非线性光纤环形镜(NOLM)锁模技术,分别对长腔全正色散掺镱光纤激光器
学位
阅读科幻小说,须明白小说是其表,科幻是其里。体会其"三味",就能感受到科幻小说的无穷魅力。"三味"即科学味、幻想味、人文味。科学味在于有科学依据;幻想味在于有大胆的想象和离奇的情节;人文味在于有人文的情怀和崇高的精神。品读名著一、体会基于科学的幻想味科技是在不断进步和发展的,在深入体会《海底两万里》中的科学味前,我们先去看看目前世界上的潜艇是怎样的一个水平。
期刊
中等职业教育一直是我国职业教育的主体,计算机基础课程是中职学生学习计算机基本理论和操作知识的重点课程,目前《计算机应用基础课程标准》提倡采用以工作过程为导向的项目式教学法。近年来部分中职学校已将项目式教学法应用于计算机基础课程教学中,该教学法在中职计算机基础课程教学中的实施效果如何、存在哪些问题以及如何应对这些问题?因此,本文围绕项目式教学法在中职计算机基础课程教学的实施效果展开了一系列的调查研究