基于图表示学习的代码异味强度排序模型
这是一篇关于代码异味,图表示学习,无监督学习,机器学习的论文, 主要内容为软件结构设计不佳的症状可通过正确的重构步骤解决。多数代码异味检测工具仅输出检测结果,忽略了结合开发者的需求对检测出的异味按照其强度进行排序,从而将判断异味重构优先级的耗时过程留给了开发人员。部分异味排序模型仅关注代码度量等结构特征,而代码间的层次结构及关联关系等语义信息在较多软件工程研究中被证明有效,却在代码异味排序领域少被研究。本文根据类级代码异味特征以及图结构可对对象及其相关关系建模的特性,考虑开发人员对于异味强度的主观感知,提出了基于图表示学习方法的代码异味强度排序模型CSSRM(Code Smell Severity Ranking Model,CSSRM),为开发人员的重构优先级决策提供参考。本文模型以存在异味的类为节点、类间相关语义关系为边,构建语义结构图,同时考虑代码的结构特性,将类的代码度量值作为节点的属性特征,实现对代码间复杂关系的进一步刻画。通过三种图表示学习方法学习语义结构图的节点嵌入表示,同时将项目开发者感知到的异味强度作为标签值,结合下游机器学习模型实现对异味的强度排序。本文对比了三种图嵌入表示方法的性能差异,针对4种代码异味,在7个Java开源系统上进行实验,结果表明效果最佳的模型相较于基线方法,其F1值最高提升了10.35%,验证了模型的有效性。同时,本文探究了不同嵌入维度以及不同分类器对模型效果的影响。以三种嵌入表示方法中性能较优的CSSRMSM为基础,针对4类代码异味,对比采用不同嵌入维度对模型性能带来的影响,发现当嵌入维度取32时模型整体效果相对更佳;并比较了模型在4类机器学习分类器上的性能表现,结果显示随机森林对应的模型具有最优效果。
开源项目代码评审过程中代码异味识别的实证研究
这是一篇关于代码异味,代码评审,挖掘软件仓库,实证研究的论文, 主要内容为随着现代软件技术的不断发展,软件开发不仅仅满足于实现功能性需求,如何保证软件质量也成为了至关重要的部分。代码异味是影响软件质量的问题之一,是软件设计或实现问题的一种症状,表明软件存在更深层的问题。一大部分研究因此关注于代码异味的检测与识别技术,但这些检测工具往往未考虑代码异味所在上下文信息,进而造成识别错误。因此,人工识别代码异味可能更具有研究意义。代码评审是现代软件开发中通过人工方式保证软件质量的重要手段,一个典型的代码评审过程包括对源代码的审查以发现并定位缺陷或者其他软件质量问题,包括代码异味。然而,目前很少有研究关注于代码评审过程中识别的代码异味,对于代码评审过程中识别的代码异味背后所包含的知识知之甚少。因此,本文致力于探究代码评审过程中识别的代码异味背后包含的信息,进而帮助相关人员更好地理解代码异味。具体来讲,本文获取了来自Open Stack(Nova和Neutron)和Qt(Qt Base和Qt Creator)社区的四个大型开源项目的代码评审数据,人工检查了通过关键词检索和随机选取两种方式获得的25415条代码评审评论,抽取了1539个与代码异味相关的讨论。然后基于这些数据进一步探究代码评审过程中识别的代码异味类型、造成代码异味的原因、针对代码异味采取的措施、修复代码异味所花费的时间以及开发人员忽略代码异味的原因。本文研究发现:(1)代码异味在代码评审过程中并不经常被识别到;(2)代码异味通常是由于违反编码规范而引入的;(3)评审人员通常会提出建设性的建议以帮助开发人员修复代码异味,开发人员通常也会遵循这些建议;(4)开发人员通常花费不到一周时间来修复识别的代码异味;(5)开发人员选择忽略代码异味的原因是不值得修复代码异味。基于上述发现,本文提出如下建议:基于代码评审的代码异味检测被开发人员视为是一种值得信赖的方法,因此在项目开发中应该注重代码评审过程,进而保证软件质量。此外,开发人员也应当紧密遵循组织或项目内部编码规范以避免引入代码异味。当识别到代码异味时,要充分考虑当前上下文信息以决定是否要立即修复代码异味。
基于代码异味分析的Android软件缺陷倾向性研究
这是一篇关于Android移动应用,代码异味,历史提交记录,经验研究的论文, 主要内容为近年来,移动应用在我们的日常生活中变得越来越普遍,移动应用的应用场景也越来越广泛,每个月都有成千上万的移动应用被开发和发布。相比传统桌面软件,移动应用通常规模较小,但包含的功能更多,需要更快的开发和交付。然而,随着Android移动应用的复杂性增加,其中的缺陷和错误也变得越来越常见,这些问题可能会导致应用程序不稳定、功能故障和安全漏洞等问题,影响用户的使用体验。代码异味是指代码中存在的不良质量特征,这些特征可能导致代码难以理解、扩展和维护。代码异味反映的是程序中更深层次的问题,如不良的设计和实现。大量研究表明,代码异味会对软件项目的开发和维护产生负面影响。由于移动应用常常需要快速交付且部分开发人员缺乏相关经验,致使代码异味的产生变得难以避免。然而,已有的研究主要关注代码异味对桌面软件的影响,却较少分析代码异味对移动应用程序的影响。为了弥补这一不足,本文进行了一项实证研究,以探索代码异味是否以及在多大程度上影响Android移动应用的Bug倾向性。本文对50个来自Git Hub的Android移动应用项目进行研究,探究了Android移动应用中代码异味的分布情况,以及代码异味对其产生Bug倾向性的影响程度。结果表明,移动应用项目中的大部分文件都存在代码异味,并且文件中包含的代码异味类型数越多,该文件的Bug倾向性越高。在此基础上,本文进一步分析了每种代码异味对Android移动应用的影响,并探究了不同类型代码异味之间的关联性,以帮助开发人员提高重构效率。研究结果表明,在Android移动应用项目中,Unutilized Abstraction(未使用的抽象)、Long Statement(长语句)、Magic Number(幻数)、Deficient Encapsulation(封装缺陷)和Cyclic-Dependent Modularization(循环依赖的模块化)是影响范围最大的5种代码异味。除此之外,在27种代码异味中,存在5条置信度大于0.5的强关联规则。其中,关联最强的是{Complex Method}=>{Long Statement}({复杂方法}=>{长语句}),其置信度高达0.8。这表明文件中出现Complex Method(复杂方法)这种代码异味时,有80%的概率会同时出现Long Statement(长语句)异味。因此,开发人员在遇到Complex Method(复杂方法)异味时,需同时考虑Long Statement(长语句)异味,以此制定更为合理的重构方案。
Maven仓库代码异味趋势分析工具的设计与实现
这是一篇关于代码异味,代码异味检测,代码异味趋势,SSM的论文, 主要内容为代码异味能暴露出软件的一些问题,它们的存在意味着设计上的脆弱性,可能会在后续引发系统故障和错误风险,研究代码异味对软件开发有重要意义。现为了研究Maven中央仓库代码异味的变化趋势,本文开发出了一个研究Maven仓库代码异味变化趋势的分析工具。本文首先对课题的研究背景和意义做了分析,对比国内外对代码异味研究现状,介绍文章的工作和设计思路。其次对代码异味和系统所使用的代码异味检测工具相关的理论进行详细展开。接着简要介绍了系统所需要使用的关键技术,并决定使用SSM开发框架和BootStrap前端框架进行开发。然后对系统进行分析和定义,包括问题定义、可行性分析和系统的需求分析。再根据系统定义,对系统进行主要的模块功能划分,跟为了为了用户功能模块、jar包检测模块、本地jar包检索模块、用户管理模块、jar包管理模块,并对各个模块功能进行介绍,阐述它们的详细实现过程,之后介绍系统数据库的设计。在完成编码的基础上,进行了系统测试,通过黑盒测试的方法对每个模块的功能进行检测,发现并改进问题。在完成了分析工具的设计后,将工具应用于研究实践,研究了Maven中央仓库最流行的jar包,并分析代码异味的变化趋势,发现不同的包有不同的代码异味变化趋势,代码异味情况与包的流行程度无关,有的包修改一种代码异味改变对另一种代码异味产生影响,不同的代码异味数量上的差异较大等规律。文章最后回顾总结,并对系统可完善之处和后续工作进行了展望。
基于图表示学习的代码异味强度排序模型
这是一篇关于代码异味,图表示学习,无监督学习,机器学习的论文, 主要内容为软件结构设计不佳的症状可通过正确的重构步骤解决。多数代码异味检测工具仅输出检测结果,忽略了结合开发者的需求对检测出的异味按照其强度进行排序,从而将判断异味重构优先级的耗时过程留给了开发人员。部分异味排序模型仅关注代码度量等结构特征,而代码间的层次结构及关联关系等语义信息在较多软件工程研究中被证明有效,却在代码异味排序领域少被研究。本文根据类级代码异味特征以及图结构可对对象及其相关关系建模的特性,考虑开发人员对于异味强度的主观感知,提出了基于图表示学习方法的代码异味强度排序模型CSSRM(Code Smell Severity Ranking Model,CSSRM),为开发人员的重构优先级决策提供参考。本文模型以存在异味的类为节点、类间相关语义关系为边,构建语义结构图,同时考虑代码的结构特性,将类的代码度量值作为节点的属性特征,实现对代码间复杂关系的进一步刻画。通过三种图表示学习方法学习语义结构图的节点嵌入表示,同时将项目开发者感知到的异味强度作为标签值,结合下游机器学习模型实现对异味的强度排序。本文对比了三种图嵌入表示方法的性能差异,针对4种代码异味,在7个Java开源系统上进行实验,结果表明效果最佳的模型相较于基线方法,其F1值最高提升了10.35%,验证了模型的有效性。同时,本文探究了不同嵌入维度以及不同分类器对模型效果的影响。以三种嵌入表示方法中性能较优的CSSRMSM为基础,针对4类代码异味,对比采用不同嵌入维度对模型性能带来的影响,发现当嵌入维度取32时模型整体效果相对更佳;并比较了模型在4类机器学习分类器上的性能表现,结果显示随机森林对应的模型具有最优效果。
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕业设计客栈 ,原文地址:https://m.bishedaima.com/lunwen/53175.html