基于变更历史的代码内部质量问题自动修复技术研究

来源 :国防科技大学 | 被引量 : 0次 | 上传用户:jiangshuang_1975
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着互联网技术的不断发展,来自世界各地的开发者通过在线开源社区互相协作、贡献代码,产生了大量高质量的开源软件。作为软件质量的重要方面,内部质量(如可靠性、可维护性等)是软件成功的主要因素,更是实现分布式协同创作开源软件的重要保证。然而,开源社区中开发者个体的水平参差不齐,编程风格迥异,对项目的质量保证和管理工作带来了挑战。对于内部质量分析工具报告的代码质量问题(Code Quality Issue,CQI),现有方法内部质量保证主要采用人工修复的方式。这种方法一个突出的局限性是耗时耗力,尤其在大规模分布式协同开发中,对贡献汇聚的效率以及贡献者的积极性产生了负面影响。因此,如何实现自动化的代码质量问题修复是群智软件工程领域中重要的研究课题。开源软件开发社区中的代码仓库记录了软件开发过程的变更历史,蕴含了丰富的软件演化知识,如算法改进、功能增强以及缺陷修复等。因此,挖掘代码仓库中的质量问题修复的大数据,为质量问题的自动化修复提供了途径。本文利用GitHub社区代码仓库中的代码质量问题修复数据,提出了基于变更历史的代码质量问题自动修复方法,取得了以下研究成果:(1)调研了开源社区代码质量问题的产生规律及开发者对其的修复特点,为实现代码质量问题自动修复提供了经验性证据。本文获取了GitHub平台中的206个热门Java项目,提取与代码质量问题修复相关的历史版本,并使用Sonar Qube扫描该版本以及其临近版本,获取了9,876,064个CQI实例以及32,093个修复实例并对其进行经验分析,得出了(1)代码质量问题是重复出现的,7.12%的代码质量问题种类的数量占比达90%以上;(2)大多数代码质量问题受到开发者关注,被修复的代码质量问题种类在所有检测到的总量中所占比例为73.7%。(2)对代码质量问题的修复实例进行提取并对修复模式进行建模,从问题种类,代码特征,以及修复动作3个方面进行特征提取,为指导实现代码质量问题自动修复提供了基础。本文首先通过Sonar Qube工具获取存在质量问题的代码,并对其进行特征提取;进而通过代码差异分析工具Gum Tree提取抽象语法树级别的代码变更行为,用于指导后续代码自动修复工作。本文共获取56条CQI规则的68种通用修复模式及与具体CQI代码上下文环境相关的具体修复模式。(3)设计了对代码质量问题的修复模式匹配算法以及自动修复模块。首先匹配算法通过代码质量问题的种类以及基于Word2Vec的代码特征为CQI代码匹配相似性最高的修复模式,然后修复模块通过修复模式中的修复动作,从抽象语法树的级别对源代码进行修复,并使用Sonar Qube进行修复验证。CQIFixer的Top1平均修复正确率为80%,Top5修复正确率为69.17%,并且在开源社区提交的17个实际CQI案例修复Pull Request中有11被开发者接受并合并。
其他文献
从古至今,战争一直是人类社会发展、国家间相互竞争不可避免的议题。从徒手搏斗到冷兵器,由长枪短炮发展到飞机舰艇,战争形态随科技、社会的改变而改变。当前国际形势下,战争的作战理念、作战样式和制胜机理都出现颠覆性变化,摧毁国家瓜分土地,获取自然资源和劳动力的传统战争理念受到限制,国家利益的维护和扩展方式发生转变,混合战争应运而生。论文理论与实践相结合。理论层面,梳理混合战争产生的历史基础和现实因素,分析
步态识别作为新一代生物特征识别技术,在远距离行人身份识别上具有得天独厚的优势,其在军事、刑侦、公共安防和智能家居等领域有着非常广阔的应用前景和现实需求。但是步态识别容易受到衣着服饰、携带物、视角变化和光照变化等行人本身以及外部因素的影响,严重阻碍了其商业化进程。本文主要围绕图像预处理、步态特征图像提取、普通机器学习算法和深度学习算法等相关内容展开深入研究,解决复杂协变量条件下的步态行人身份识别问题
迈克尔·I.汉德尔是美国著名情报理论家和战略学家,先后任教于美国陆军战争学院和海军战争学院,其研究成果丰硕,涉及情报史、情报的价值、情报分析、情报与欺骗、突袭与情报预警、情报与决策关系等诸多领域。汉德尔也是情报学领域享有盛名的刊物《情报与国家安全》的创始人之一,对于情报学科走向公开和成熟起着重要作用,其情报理论也是国内外学术界关注的重点。本文围绕汉德尔的情报思想展开研究,共分三个部分。第一章绪论主
当前,随着人脸识别相关产品的不断推出和广泛应用,人脸识别系统的安全问题越来越引起人们的关注。传统的人脸识别系统中,对真实人脸和欺骗人脸难以准确区分,一些非法分子正是利用该漏洞对人脸认证系统进行欺骗攻击,如采用照片或视频录像等手段假冒他人身份牟利等,使人脸识别系统成为易受攻击的对象。因此,在人脸识别系统中加强活体检测功能显得非常必要,对确保整个系统安全具有十分重要意义。本文在分析国内外各类人脸活体检
随着航天技术的快速发展,越来越多的卫星被发射到太空中执行各种各样的任务。而电源系统为卫星在轨运行提供动力,一旦电源系统出现故障,卫星将无法正常工作。随着卫星系统功能愈加复杂,在轨故障率明显增加,电源系统的健康状态常常是制约卫星的重要因素。因此采用故障诊断与健康管理(prognostics and health management)技术对卫星电源系统进行有效可靠的健康评估具有非常重要的现实意义和应
随着互联网应用的普及,大数据时代下各类互联网应用所产生的关于用户不同类型的信息大量累积,如何从海量数据中有效、快捷地提取出用户深层次信息从而提供更个性化、智能化的服务是亟待解决的问题。在时空数据研究领域也不例外,对海量数据进行高效的挖掘,实现数据到知识的转变是走出当前困境的关键。因此,本文从用户产生的海量时空数据入手,针对用户行为进行深入分析,探索数据挖掘在此方向上的应用,具体对以下内容进行了研究
当前基于Pull-Request的分布式协同开发已经成为开源社区中的主导软件开发方式。开发者通过Fork复制软件项目的版本库,创建自身分支,并在此进行独立开发。由于P/R协同开发模型的开放性、透明性和并行化的特点,开发人员在Fork项目时难以掌握项目的整体Fork概况,不知道其他开发人员是否已通过Fork开展相同或类似的开发工作,从而容易产生出现重复性的贡献和冗余性开发。因此,这就需要开发者能够直
如今互联网飞速发展,网络规模不断扩大,数据流量也成倍增长,互联网域间路由系统演绎着越来重要的角色。由于域间路由协议——边界网关协议在设计之初就存在缺陷,缺乏有效的安全认证机制,致使域间路由系统面临着前缀劫持、路径篡改和路由泄露等严重的安全性问题。虽然已有诸多研究完善了域间路由协议的安全认证机制,却始终因为厂商间的商业利益关系等原因,缺乏重新更新网络协议和设备的动力。因此,这一机制并没有真正应用到真
目前各种类型的应用在互联网上层出不穷,为了保证时延和带宽敏感应用的使用效果,需要一个良好的服务质量保障(QoS)机制。目前的网络体系结构和交付模式很难满足时延和带宽敏感应用的服务质量需求。软件定义网络(SDN)的出现,为上述问题的出现提供了新的解决思路。论文首先分析了SDN网络架构,总结了基于SDN的QoS技术研究现状。在此基础上,针对广域网情况下的网络服务质量的优化需求,设计了一种基于层次化多控
信息技术的高速发展,极大地改变了作战样式,体系中各武器装备之间的交互影响关系越来越复杂,并且这种交互影响关系往往不是预先设定的,这对装备体系的建模与评估提出了挑战。基于网络的方法能够很好地反映体系中各装备的关联关系,目前已经被广泛应用于体系建模与评估分析中,但是现有的研究大多数局限于静态网络建模,无法反映各装备间的复杂动态交互影响关系。本文通过对装备体系中存在的交互影响关系进行分析,基于超网络理论