基于深度学习的bug fix提交日志识别方法

来源 :哈尔滨工业大学 | 被引量 : 0次 | 上传用户:xmjxex
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
通过识别软件仓库中执行的维护操作,可以降低软件的维护成本,从而确定资源分配,提高维护效率。在大多数软件系统中,软件仓库中的问题跟踪系统可以对错误进行跟踪,代码更改可以被集成到代码管理仓库的表示中。了解在源代码存储库中执行的维护活动可以帮助软件开发人员减少不确定性,并通过提前计划和为源代码维护预先分配资源来提高成本效益。针对软件开发过程中的提交日志涉及的代码更改主要使用3种分类标签:bug修复的正确性;系统改进的完整性;引入新特征的适应性。在此领域以前的工作主要集中在单个软件项目内评估提交日志分类模型。本文旨在通过对提交日志进行二分类,识别bug-fix相关的提交日志(Commit)。现有的方法主要是基于机器学习的方法,虽然可以避免相关研究人员手动编写规则,但是仍然需要手动提取特征,本文主要研究基于深度学习的bug-fix相关的Commit分类方法。本文首先考虑到代码行为的多样性,训练模型需要大量的数据集。现有的许多工作都创建了自己根据不同标准构建的数据集。因此,本文通过爬取实际项目建立了带标记的数据集。然后,使用基于Code BERT的预训练模型提取文本和补丁的双模态信息,同时结合基于代码变更和基于关键词等基于人工规则的特征,使用CNN、LSTM、Transformer提取文本和补丁的深层语义信息。为了集成数据的多种类型的语义特征,建立了多个机器学习和深度学习基分类器、随机森林、支持向量机、朴素贝叶斯和K近邻算法、Code BERT、Transformer、LSTM和CNN,采用集成学习模型和一致性预测对各个基分类器输出的具有较高置信度的提交日志分类结果进行集成。最后通过实验验证了该集成模型相对于各种基分类器方法,在召回率性能上有了较大的提升。
其他文献
心血管疾病已成为全球人口死亡主要原因之一,严重影响着人类健康和社会发展。有效的预防、检测及治疗可显著地降低心血管疾病的死亡率。而血管内光学相干断层扫描技术(Intravascular Optical Coherence Tomography,IVOCT)作为现今前沿的血管成像技术之一,由于相比于其他成像技术,对血管组织的成像具有分辨率高等特点,从而在临床中得到广泛应用。然而,在成像过程中牵引探头的
学位
随着深度学习技术的不断发展,并且深度学习也成功应用于单智能体强化学习中,多智能体协同强化学习也在这个浪潮中得到了非常广泛的发展和应用。多智能体协同算法的主要目的是通过智能体群环境的不断交互,寻找到一个获取总体目标最大价值的最佳策略。强化学习在训练过程中通过不断和环境交互的方式进行收集经验,并根据这些经验进行学习。这些经验数据一般需要与环境进行大量的交互,这些对智能体的训练都带来了严峻的挑战。加速这
学位
动态目标追逃问题是一类主要受军事需求牵引而提出的问题,尤其在搜潜反潜、飞机拦截、卫星发射等军事细分领域得到了非常广泛应用。当前针对动态目标进行高效搜索追逃,国内外研究人员提出了微分博弈、经验方法等多种方法加以解决。但是当前研究对信息缺失条件下的动态目标搜索追踪策略研究不够充分,对各种搜索追踪策略缺乏一定的综合分析,尚未整合各类动态目标的搜索追踪策略,没有形成一套行之有效、可在实践中实际使用的操作集
学位
随着服务计算的发展,海量的服务互联互通形成了复杂的服务网络,海量的服务资源在给我们的生产生活带来遍历的同时也变得更加难以管理。知识图谱的结构与复杂网络十分契合,构建服务知识图谱管理海量的服务资源成为一种选择。服务知识图谱在构建过程中需要使用到很多自动化技术,如命名实体识别技术、关系抽取技术、模式匹配,知识图谱自动化构建技术在提高知识图谱构建效率、减小构建知识图谱的代价的同时,也不可避免地引入了很多
学位
理解自然语言是人工智领域面临的一项艰巨挑战,近年来热门的机器阅读理解(Machine Reading Comprehension,MRC)任务以“问-答”的形式检测模型对自然语言的理解能力。尽管各类模型在多个数据集上的性能已经超越人类表现,但是与真实场景的应用还有一定差距。针对中文机器阅读理解任务的数据和模型,本文主要研究内容如下:1)提出一种中文机器阅读理解问答对数据生成方法。机器阅读理解任务的
学位
时序动作提名生成,输入是一段未分割的长视频,根据其内容来定位动作片段,包括其开始时间、结束时间和动作类别,可应用于视频推荐,智能安防,智慧广电等场景。现有的时序动作提名生成算法已取得了瞩目的成绩,但仍难以满足现实场景中的应用,因此是当前计算机视觉领域的热点研究问题之一。具体的说,目前的方法大多致力于生成灵活的动作边界与高质量的置信度,但是仍然受限于匮乏的视频时序依赖和动作边界建模,导致了充满噪声的
学位
随着软件产品在我们的生活中有着越来越广泛的应用,程序的规模也急剧地上升,软件错误的产生可能会导致可怕的后果,而程序修复工作消耗了大量的资源。所以,自动化程序修复不仅可以降低程序开发人员的时间开销,还可以减少浪费在程序调试上面的时间。但是,真实世界的程序规模较大,当前修复方法对其支持效果不是很好,错误的修复率较低。程序补丁中的修复成分常常来源于被修复的程序自身,并且很多人工补丁的大体模式比较类似,存
学位
软件漏洞对于软件来说具有重大危险,影响着软件系统的安全。随着当今开源软件的发展,软件开发中往往进行代码逻辑的共享以及代码库的复用,使得漏洞也在开源软件中广泛传播。在实际应用软件中功能的不断增加以及软件版本的不断迭代,使得软件的复杂度随着软件的规模不断提升,漏洞函数在版本的迭代中已经和原有的漏洞函数具有很大的差别。而对于刚修复完成的漏洞函数,其和补丁函数之间往往只具有微小差别。这种漏洞与漏洞的低相似
学位
微服务设计模式通过业务解耦将复杂业务拆分为多个小粒度的微服务,且各微服务独立进行版本迭代和部署,可有效改善复杂分布式系统的开发与运维。开发人员遵循特定的微服务设计原则进行系统设计,但后续版本迭代升级过程中,可能会向微服务系统内引入架构异味。这些架构异味通常不会对微服务系统造成功能故障,但它们的存在会影响微服务系统的可持续性、可扩展性,同时可能对微服务系统运行态的数据表现产生影响。但现有研究缺少对架
学位
如何提高软件开发效率一直是软件工程领域的一个核心问题。在软件行业快速发展的今天,为了提高软件开发的效率,开发者往往采用代码复用的方式,如调用现有的应用程序编程接口(API)。现有的检索API知识的方法或工具都只实现了单个API或API子图的搜索。但是,单个API往往难以实现完整的功能,而API子图中包含的信息较为冗余和复杂难以被直接应用于实际的软件开发过程中。实际上,在利用大量使用API的编程语言
学位