没有合适的资源?快使用搜索试试~ 我知道了~
沙特国王大学学报利用代码气味检测和重构减少测试用例生成的冗余Rosziati Ibrahima,Sziati,Maryam Ahmedb,Richi Nayakc,Sapiee Jamelda马来西亚敦胡先翁大学软件工程系(UTHM)b沙特阿拉伯伊玛目阿卜杜勒拉赫曼本费萨尔大学计算机科学和信息技术学院c澳大利亚昆士兰科技大学电气工程和计算机科学学院d马来西亚敦胡先翁大学信息安全系阿提奇莱因福奥文章历史记录:2018年1月24日收到2018年6月11日修订2018年6月12日接受2018年6月21日在线提供保留字:Lazy 类 Small方法重复代码气味代码气味检测重构A B S T R A C T在软件开发生命周期(SDLC)中,测试阶段是测试软件功能的重要阶段在此阶段,生成测试用例以测试软件功能。本文提出了一种从Android应用程序的源代码中检测和重构代码气味的方法以减少测试用例生成中的冗余重构是软件开发和维护的重要活动之一重构是一个代码修改的过程,其目的是在不改变任何外部功能的情况下对源代码进行结构修改。这些更改通常会提高软件质量,例如可读性、执行时间和可维护性。该方法,然后实施和评估,以确定其有效性,减少冗余的测试用例生成。©2018作者制作和主办:Elsevier B.V.代表沙特国王大学这是一CC BY-NC-ND许可下的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。1. 介绍软件开发人员的任务是分析和检测需要在源代码中进行的更改 为了简化该任务,开发了不同的检测和重构工具(Moha等人,2010;Hecht等人,2015; Mkaouer等人,2016年;桑托斯例如,2015;Sirqueira等人, 2016年)。在一个活跃的开发环境中,开发人员参与建议重构源代码的机会,以消除不良气味。代码气味是系统的内部结构(代码)存在问题的标志,可以通过代码重构(重构)进行纠正(Lee等人, 2016年)。代码气味不同于语法错误或任何其他编译器可以轻松检测到的错误。相反,在代码气味的情况下,编译器无法识别气味,因为代码气味不会阻止程序运行,但它们是糟糕程序设计的象征Refac-*通讯作者。电子邮件地址:rosziati@uthm.edu.my(R.Ibrahim),mtahmed@iau.edu.sa(M.艾哈迈德),r. qut.edu.au(R. Nayak),sapiee@uthm.edu.my(S. Jamel)。沙特国王大学负责同行审查存储可以被定义为旨在产生改进的源代码质量的实践(Bavota等人,2015年)。在决定识别或检测哪些代码气味时,需要考虑一些因素。检测Fowler(1999)提到的所有气味可能是不可行的,因为其中一些气味已经被各种研究人员检测到,而另一些气味可能不适用于现实生活中。有些气味很容易在代码中检测到(这些气味被称为原始气味)。其他气味可以通过从代码中提取细节来检测(这些气味被称为提取气味),而其他气味可以通过人眼或可能使用来自管理系统的信息来检测(这些类型的气味被称为维护气味)。本文重点研究了三种代码气味的检测和重构,基本上提取了懒类、小方法和重复的气味。选择这些气味的原因之一是弥合Al Dallal(2015)提到的行业和学术之间的差距。本文的主要贡献是:1. 一种从源代码中检测代码气味并重构代码气味而不改变系统功能的新方法。2. 用于检测和重构代码气味的框架,以便从源代码生成测试用例https://doi.org/10.1016/j.jksuci.2018.06.0051319-1578/©2018作者。制作和主办:Elsevier B.V.代表沙特国王大学这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。制作和主办:Elsevier可在ScienceDirect上获得目录列表沙特国王大学学报杂志首页:www.sciencedirect.com368R. Ibrahim等人/沙特国王大学学报3. 一个工具,能够减少从源代码生成测试用例,由于检测和重构代码气味。本文其余部分的结构如下。第2节讨论了代码气味和重构的相关工作第三节详细讨论了所提出的方法.第四节给出了代码气味检测算法和重构规则.第5节讨论了在减少测试用例生成方面实施所提出的方法的结果。最后对全文进行了总结,并对今后的工作进行了展望.2. 相关工作Fowler(Fowler,1999)已经清楚地将代码气味描述为糟糕的计划和执行采用的指标。在少数情况下,其中一些指标来自开发人员在匆忙中实施的活动。这种情况包括执行重要的补丁或基本上进行次优采用。在其他情况下,气味可能是某些重复出现的、糟糕的设计解决方案(也称为反模式)的结果。早期的研究发现,代码气味会阻碍代码的清晰度(Arcoverde等人,2011 年),并可能增加改变和故障敏感性(Ujhelyi等人,2015年)。因此,应该谨慎地识别和检查这些气味,并且在需要时,应该应用和执行重构活动来消除它们。有各种方法可以检测源代码中的气味,以引起系统开发人员对其存在的注意(Moha等人 , 2010; Fowler , 1999; Fontana 等 人 , 2015; Bavota 等 人 ,2014;Fontana等人,2013; Rasool和Arshad,2017)。这些方法依赖于从源代码中挖掘的内部或结构信息,这些信息可以通过对某些源代码属性的明确限制来获得。例如,一些当前的方法论是建立在代码行(line of code,简写为CODE)方面的源代码特征的量级上的。这包括DECOR(Moha等人,2010年),它建立了类似于LongMethod或Large- Class的气味。而一些气味是基于McCabe圈复杂度的,例如ComplexClass,也称为God-Class(Bavota等人,2014年)。其他一些代码气味,如Blob,倾向于使用更复杂的规则。虽然目前的方法在正确性和召回方面表现出有价值的性能,但它可能不适合识别Fowler定义的几种气味(Fowler,1999)。因此,需要考虑更多以前没有研究或识别的代码气味,特别是对于Android应用程序,Android应用程序本身的快速发展。对于开发者来说,通过在现有代码中添加所需的功能来重新打包android应用程序这种简单的行为对Android应用程序市场构成了威胁,其中包括代码气味的存在(Li,2012 ) 。 存 在气 味 的 源代 码 比没 有 气 味的 源 代 码更 容 易出 错(Khomh等人,2012; Li and Shatnawi,2007). 其他旨在理解反模式或代码气味对源代码可理解性的影响的研究表明,系统源代码中气味的存在不会降低系统性能,而另一项关于气味组合的研究显示了性能的显著下降(Abbes等人,2011; Palomba等人,2014年)。尽管在(Abbes等人,2011)表明气味的存在对系统无害,它还表明气味在软件开发过程中是公平流通的此外,有经验证据表明,系统源代码中的反模式数量会随着时间的推移而增加,而且这种情况很少发生通过重构过程消除了一些情况(Arcoverde等人, 2011年)。大多数研究人员(Khomh等人,2012; Li和Shatnawi,2007;Abbes等人,2011; Palomba等人,2014; Fokaefs等人,2011;Parnin等人,2008)建议,谨慎地识别和检查代码气味和反模式是至关重要的,并且在需要时,重构过程应该制定策略并执行以消除它们。另一方面,检测和修改庞大而重要的软件系统中的设计缺陷可能是极其困难的。因此,需要一种新的方法来支持软件工程师和开发人员在检测反模式以及设计和执行重构活动方面。这是我们的研究设计一种新的方法来检测代码气味和重构它们的差距。因此,本文提出了一种从Android应用程序的源代码中检测和重构代码气味的新方法,以减少从Android应用程序的源代码生成测试用例的冗余。3. 建议的方法我们提出的称为DART(检测和重构工具)的方法将在本节中详细介绍。表1显示了所涉及的步骤,图1显示了检测和重构Android应用程序中的三种代码气味以减少测试用例生成中的冗余的步骤的流程图。从表1中,首先检查android应用程序的源代码以检测代码气味。其中包括三种代码气味,即懒惰类、小方法和重复代码气味。然后重构这些代码气味,以减少测试用例生成中的冗余。如果重构代码气味不会改变系统的功能,那么重构的代码将被保留,并生成测试用例。然而,如果重构改变了系统的功能,那么重构就不能完成,任何改变都需要撤销以保持系统的功能。这些步骤在图1中详细描述。根据表1和图1,我们提出的方法集中在三个代码气味,即懒惰类,小方法和重复代码气味。在分析Android应用程序的内部结构期间,会检测到这些代码气味中的每一种。对于每一个检测到的代码气味,重构这些代码气味是必要的,以减少生成测试用例的冗余。然而,我们的方法也检查了重构对系统功能的影响。在重构代码时,不改变系统的功能是至关重要的。图2显示了用于检测和重构代码气味的总体框架。基于图2,我们开发了一个称为DART(检测和重构工具)的工具。基于代码气味检测算法和重构算法,在Eclipse环境下实现了DART。该工具是在Eclipse环境中开发的,作为Silva等人(2015)推荐的插件工具。这些算法在git的ALogcat应用程序源代码中表1建议方法的步骤。步骤详情第1步检测代码错误- 检测懒惰类- 检测小方法- 检测重复代码气味第2步代码重构-重构懒惰类- 重构小方法- 重构重复代码气味步骤3生成测试用例。R. Ibrahim等人/沙特国王大学学报369NNN是有什么变化生成测试用例检查系统功能的更改源代码没气味是否存在?是检查其他气味重构检测代码气味源代码没有Fig. 1. 建议方法的流程图。repository(git repository,2016).这两种算法将在第4节中讨论。4. 代码气味检测算法和重构算法我们提出的方法扩展了(Bavota等人,2014)并如在(Fokaefs等人,2011年)。 基于其源代码的代码气味检测涉及Android应用程序的源代码的静态分析,如图所示。1.一、 由于软件开发人员和系统分 析 人 员 使 用 内 聚 和 依 赖 属 性 对 类 进 行 分 类 ( Bavota 等 人 ,2014),我们在检测规则中使用相同的方法来检测源代码中的代码气味,并使用类或方法的内聚和依赖属性对其进行分类。内聚(高度需要的类或方法)可以使用类、方法或调用焦点中的类或方法的属性来 描 述 。 这 些 属 性 被 称 为 调 用 者 属 性 , 如 在 ( Bavota 等 人 ,2014),而依赖关系属性是使用类、方法和属性的数量来描述的,被焦点中的类或方法调用或使用。这些属性在(Bavota等人,2014年)。为了检测懒惰类和小方法,需要识别类和方法然后,基于内部结构依赖性计算距离度量还考虑了内聚性此外,还考虑了代码行数重复气味的检测是通过匹配字符串来比较相同和不同类别的气味使用上述信息,生成检测规则被调用方少于三(3)个,调用方代码行少于十五(15)行的类被称为惰性类。如果方法的被调用方不超过三(3)个,调用方的代码行少于五(5)行,属性不超过三(3)个,则这些方法被标识为小型方法。同样地,基于不同或相同类别的至少十(10)行代码中的相似性来定义重复代码在我们提出的方法中,如图2所示,在检测步骤期间使用三种代码气味。Android应用程序源代码可能包含以下一种或多种气味:懒惰撤消更改370R. Ibrahim等人/沙特国王大学学报图二.代码气味的检测和重构框架。类、小方法和重复。在本研究中,阈值3被用作内聚性和依赖性的最小数字,因为已经确定大多数研究工作的范围从3到5(Palomba等人,2014年)。选择三个是因为三个的结果被纳入所有其他可行的方案中。此外,(Palomba等人,2014)在他们对最低阈值的评估中,确定阈值为3具有最佳结果。为了通过最小化测试路径和圈复杂度来提高测试质量,消除检测到的代码气味是至关重要的。惰性类使用内联类技术进行重构。内联类方法涉及将惰性类中的方法和属性移动到基于其距离度量的最近类。移动的类的所有关联或族(方法和属性)都通过重定向来更新去寄宿学校这个过程一直持续到检测到的惰性类为空。然后从源代码中删除空的lazy类。使用类似的方法,使用内联方法技术来重构小方法。小方法中的属性和方法被移动到最相关的现有类的距离度量。这个过程一直持续到小方法为空,然后被删除。所有对旧的小方法的引用都被转移到承载属性和方法的新类。提取克隆技术用于通过提取程序中发现的相似性来重构重复的气味。如果提取的代码行是一个类,则创建一个超类来维护两个类似类的功能。如果在构造函数或一系列条件语句中的方法中发现了提取,则创建一个易于理解的方法,并将类似的代码放置在条件之外。重构是不完整的,直到程序被执行,以确保没有错误已经启动到源代码。5. 减少生成测试用例的冗余本节中的案例研究,以显示所提出的方法可以减少冗余的Android应用程序生成的测试用例。DART的评估是使用从git repository(gitrepository,2016)获得的Alogcat应用程序源代码完成的,其中DART是使用从Alogcat应用程序源代码生成的分支覆盖率,圈复杂度和测试用例进行评估的。表2显示了在Alogcat源代码中分析的类的概述。ALogcat是一个著名的开发工具logcat,以Android应用程序的形式(git repository,2016)。它直接从手机上查看颜色编码的滚动(尾部)Android设备(logcat)日志。它不需要USB,ADB或电子邮件服务。Alogcat的概述如图所示。3 .第三章。使用Clover for Android对生成的源代码进行分析,以生成分支数和圈复杂度。基于图2中的框架,三个参数用于评估我们提出的方法。它们是测试路径、复杂度和分支覆盖率。分支覆盖率是手动计算的,以验证DART中实现的检测和重构规则。Alogcat在检测懒惰类方面的分析如表3所示。从表3中,可以检测到四(4)个惰性类:Alogcat Application、Save Receiver 、 Save Service 和 Share Receiver 。 Alog-catApplication.java没有被调用方或调用方,只有两(2)个属性和十二(12)行代码。Save Receiver有三(3)个被调用者,没有调用者,一(1)个属性和八(8)行代码。保存服务有两(2)个被调用方、一(1)个调用方、两(2)个属性和九(9)行代码。共享接收器有三(3)个被调用者,没有调用者,一(1)个属性和八(8)行代码。上述每个类的特征都将它们描述为懒惰类。图 4显示原始Alogcat应用程序源代码的clover视图。基于DART检测到的懒惰类重构的Alog-cat的分支和复杂性如图所示。 五、基于图5,懒惰类具有与原始Alogcat代码(如图4中)相同的分支数量和平均方法复杂度,分别为158和1.8,总复杂度从254(如图4中)减少了253。 4).表2在Alogcat中分析类。源代码方法数代码行数登录活动38 455LogCat 8 147LogDumper 2 62LogEntry 5 39LogSaver 3 50SaveReceiver 1 8SaveService 2 9共享接收器1 8共享服务2 27R. Ibrahim等人/沙特国王大学学报371×ð Þ图三. Alogcat应用程序概述。表3分析alogcat检测懒惰类。[HTML]C0C0C0否课程名称调用者呼叫者数量的属性行代码1Alogcat应用程序2122背景颜色9,1512>15岁3缓冲第10、11和16条14>15岁4过滤器对话9,159,15>15岁>15岁5格式9,10,11,15>15岁>15岁6意图7,159,15,17,199>15岁7水平6,9,10,11,12.15,16>15岁>15岁8锁17,18,19,203>15岁9LogActivity2,4,5,6,7,10,12,13,14,15,164,10,20>15岁>15岁10LogCat3,5,7,9,159,18>15岁>15岁11LogDumper5,7,1514,203>15岁12LogEntry79,138>15岁13LogEntry适配器12,15,21910>15岁14LogSaver11,1598>15岁15Prefs2,3,4,5,6,7,21四,六,九,十,十一,十三,十四,十六,二十>15岁>15岁16Prefs活动3,7,15,219>15岁>15岁17SaveReceiver6,8,181818SaveService8,10172919共享接收器6,8,201820分享服务8,9,11,15192>15岁21textSize13,15,16>15岁>15岁针对Alogcat中分支(测试路径)的数量和圈复杂性,对小方法和重复代码气味进行了重构。表4显示了不使用DART的Alogcat和使用DART重构懒惰类、小方法和重复代码气味的结果比较。基于表4,可以看出,在使用DART重构之后,总复杂度降低,并且在使用DART重构之后,分支的数量也减少(大约减少5%)。我们还测试了重构过程前后的分支覆盖率,并对结果进行了比较。分支覆盖率是使用以下公式:覆盖的代码行数年龄(BC)各年级。根据原始代码的CC列,总圈复杂度计算为:重构前的总复杂度¼1þ 1þ 77þ 7þ 2þ 28þ 15þ 1þ 11¼ 142ð 2Þ重构后,总复杂度为:重构后的总复杂度¼1þ 71þ 8þ 4þ 23þ 14þ 1þ 9¼ 131ð 3Þ圈复杂度的减少是使用以下公式计算的:分公司版本<$代码总行数×1001降低圈复杂度NCCO- NCCR100 4NCCO表5显示了使用DART重构前后的分支覆盖率结果。在表5中,CC列显示了每个重构类的圈复杂度(CC),而BC表示分支覆盖率。哪里NCCR =重构后的圈复杂度,NCCO =重构372R. Ibrahim等人/沙特国王大学学报图五. Alogcat中的分支和复杂性图四、Alogcat中的分支和复杂性表4Alogcat重构前后的结果比较DART之前使用DART原始懒惰的阶级小方法重复班数29282920许多方法145144140146平均复杂度1.81.81.81.7总复杂度254253248249支链数158158156150表5重构类的分支覆盖结果。类DART之前重构后使用DART原始懒惰的阶级小方法重复CCBCCCBCCCBCCCBCSaveReceiver1百分之七十五1百分之八十一点八––1百分之八十一点八共享接收器1百分之七十七点七––LogActivity77百分之九十三点三––––71百分之九十八点三LogSaver7百分之八十四––––8百分之八十八R. Ibrahim等人/沙特国王大学学报373点四点三分享服务2百分之九十三点一––––4百分之九十三点一LogCat28百分之八十五点三––23百分之八十八––LogEntry15百分之八十八点六––14百分之八十八点六––SaveService1百分之八十一点八1百分之九十1百分之九十一点二––LogDumper11百分之九十五点一––9百分之九十五点一––374R. Ibrahim等人/沙特国王大学学报表6从原始Alogcat源代码生成测试用例。课程名称测试用例场景输入预期输出实际输出SaveReceiverTC1为SaveService点击下拉菜单访问Save访问保存共享接收器TC2为ShareService点击下拉访问共享访问共享LogActivityLogSaverTC3TC4TC5TC6TC7TC8保存到不存在的路径共享HTML日志访问菜单项保存到不存在的路径保存到路径保存到现有路径输入不存在的路径点击分享点击菜单输入一个不存在的路径点击保存输入现有路径保存日志时打开共享对话框显示菜单项目错误保存日志打开保存对话框缓冲区写入路径保存日志时出错打开共享对话框显示菜单项保存日志时出错打开保存对话框缓冲区写入路径分享服务SaveServiceTC9TC10TC11共享HTML日志启动intent服务LogSaver的句柄意图点 击 分 享 点 击分享点击保存打开共享对话框共享对话框将打开打开保存对话框已打开共享对话框已打开共享对话框已打开保存对话框表7从重构的Alogcat源代码生成测试用例课程名称测试用例场景输入预期输出实际输出RequestReceiverTC '1为SaveReceiver和ShareReceiver点击下拉菜单访问保存和共享访问保存和共享LogActivityLogSaver分享服务TC’2TC '7保存到不存在的路径访问菜单项Handle Intent forLogSaver保存到路径保存到现有路径共享HTML日志输入不存在的路径点击菜单点击保存点击保存输入现有路径点击分享保存日志时出错显示菜单项目打开保存对话框打开保存对话框缓冲区写入路径打开共享对话保存日志时出错显示菜单项保存对话框打开打开保存对话框缓冲区写入路径已打开共享对话框TC '8启动Intent服务点击分享将打开已打开共享对话框基于(4)中的公式,使用表5的结果计算圈复杂度的降低百分比,其显示圈复杂度降低了7.75%。为了在减少测试用例的生成方面验证DART的实现,在重构之前和之后使用Alogcat应用程序源代码从六(6)个类生成测试用例。表6显示了在重构之前从原始源代码生成的测试用例,而表7显示了测试用例重构后生成的基于表6,从Alogcat中的六个类生成了11个测试用例。然而,重构后,生成的测试用例减少到8个测试用例,仅表7如下所示:TC 1; TC 2; TC 3; TC 4; TC 5; TC 6; TC 7; TC 8; TC 9; TC 10; TC11gð5Þ降低到TC01; TC02; TC03; TC04; TC05; TC06; TC07; TC08g因此,测试用例生成数量的百分比减少约为28%。6. 结论本文讨论了一种检测和重构三种代码气味的方法,这三种气味是懒惰类、小方法和重复代码。代码气味检测和重构是软件开发和维护环境中的基本实践,而重构是为了提高软件系统的可维护性而建立的。DART已在Eclipse环境中作为插件工具实现。本文讨论的案例研究表明,DART能够减少Android应用程序中Alogcat应用程序的测试用例生成。结果表明,生成的测试用例数量减少了28%,分支覆盖率提高了5.0%。这意味着DART能够减少测试用例中的冗余,同时有提高生成测试用例的效率的趋势。对于未来的工作,可以使用其他代码气味,以减少生成测试用例的冗余,同时保持或提高测试用例的分支覆盖率。确认作者要感谢马来西亚高等教育部(MoHE)根据基金研究资助计划(FRGS)支持这项研究。引用Abbes,M.,Khomh,F.,Gueheneuc,Y.G.,安东尼,G.,2011年。两种反模式blob和spaghetti代码对程序理解的影响的实证研究第15届欧洲软件维护和再工程会议(CSMR 2011),Oldenburg,2011,181Al Dallal,J.,2015.识别面向对象代码中的重构机会:系统性文献综述。信息软件Technol.58,231-249.Arcoverde河,加西亚,A.,Figueiredo,E.,2011.理解代码气味的寿命:解释性调查的初步结果。In:Proceedings of the 4th Workshop on Refactoring Tools(WRT2011),Honolulu,USA,May 2011,33-36. Bavota,G. De Lucia,A.,Marcus,A.,奥利韦托河2014.自动提取类重构:一种改进的 方法及其评价。经验软件工程师19,1617Bavota,G. De Lucia,A.,Di Penta,M.,奥利韦托河Palomba,F.,2015年。质量与重构内在关系的实验研究。J. Syst. 软件。107,1-14。Fokaefs , M. , Tsantalis , N. , Stroulia , E. , Chatzigeorgiou , A. , 2011.JDeodorant:Extract类重构的识别和应用。在:第33届软件工程国际会议(ICSE2011),檀香山,美国,2011年5月,1037佛罗里达州丰塔纳扎诺尼,M.,Marino,A.,Mäntylä,M.V.,2013.代码错误检测:基于 机 器 学 习 的 方 法 。 2013 IEEE International Conference on SoftwareMaintenance(ICSM 2013)。Eindhoven,2013,September 2013,396佛罗里达州丰塔纳Mangiacavalli,M.,Pochiero,D.,扎诺尼,M.,2015.尝试重构工具来去除代码味道。ACM科学研讨会论文集(XP2015),芬兰赫尔辛基,2015年5月。Fowler ,M. , 1999.重 构: 改 进现 有代 码的 设计 。 印度 培 生教 育ISBN-13 : 978-0201485677。git repository,2016.https://git-scm.com(检索日期:2016年9月Hecht,G.,鲁塞河,Moha,N.,杜钦湖2015.检测android应用程序中的反模式。在:第二届ACM移动软件工程和系统国际会议(MOBILESoft 2015),佛罗伦萨,意大利,2015年5月,148Khomh,F.,Di Penta,M.,Guéhéneuc,Y.-G.,安东尼,G.,2012年。反模式对类变化和错误倾向影响的探索性研究。EmpiricalSoftware Eng. 17,243-275.R. Ibrahim等人/沙特国王大学学报375李,S.J.,卢,L.H.,陈永春,字耀昌,字:Shen,S.M.,2016.基于关联规则挖掘和线性回归模型的共变码量预测。专家系统应用45,185-194。李伟,Shatnawi河2007.面向对象发布后系统演化中的异味和类错误概率的实证研究。J. Syst. Softw. 80,1120-1128。Li,S.,2012. Juxtapp和DStruct:检测Android应用程序之间的相似性。技术报告编号 UCB/EECS-2012-111 。 加 州 大 学 伯 克 利 分 校 , 2012 年 5 月 。 在 线 提 供 :http://www.eecs.berkeley。edu/Pubs/TechRpts/2012/EECS-2012-111.html。Mkaouer,M.W.,Kessentini,M.,Cinnéide,M.O.,林,S.,黛布,K.,2016年 。 一 个健 壮 的多 目 标方 法 来 平衡 重 构 机 会的 严 重 性 和重 要 性 。 EmpiricalSoftware Eng. 22(2),894-927.Moha,N.,Gueheneuc,Y.G.,杜钦湖Le Meur,A.F.,2010年。DECOR:一种规范和检测代码和设计气味的方法。IEEE Trans. Software Eng. 36,20-36。Palomba,F.,Bavota,G.奥利韦托河De Lucia,A.,2014.反模式检测:方法、挑战和未决问题。高级计算95,201-238.Parnin,C.,Görg,C.,恩纳迪岛,2008.支持代码气味检查的轻量级可视化目录。在:第四届ACM软件可视化研讨会论文集- SoftVis '08。https://doi.org/10.1145/1409720.1409733. Rasool,G.,阿尔沙德,Z.,2017年。一种轻量级的代码气味检测方法Arabian J. Sci. Eng.42(2),483-506。SantosNeto,B.F.D.,Ribeiro,M.,达席尔瓦,V.T.,布拉加角,De Lucena,C.J.P.,De BarrosCosta,E.,2015. AutoRefactoring:一个构建重构代理的平台。专家系统应用42,1652-1664。Silva,D.,特拉河,瓦伦特,麻省理工学院,2015. JExtract:一个推荐自动提取方法重构的Eclipse插件。在:巴西软件会议:理论与实践(工具轨道),2015年,1Sirqueira,T.F.M.,Brandl,A.H.M.,佩德罗,E.J.P.,席尔瓦,R.D.S.,Araújo,M.A.P. ,2016 年。 代码 气味 分析 器: 重构 技术 教学 支持 工具 。IEEE Lat. Am.Trans.14,877-884.Ujhelyi,Z., Szo} ke,G.,Horváth,A.,新泽西州奇萨尔维达奇湖Varro,D.,2015年。基于查询的反模式检测技术的性能比较。信息软件Technol. 65,147-165.
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功