ROSE: Transformer-Based Refactoring Recommendation for Architectural Smells
本文提出ROSE方法,利用CodeBERT和CodeT5在200余万重构实例上微调,将架构异味修复构建为三分类问题,CodeT5以96.9%准确率实现从异味检测到可执行重构推荐的衔接。
2025-07-20 cs.SE
Android Code Smells: From Introduction to Refactoring
面向对象代码气味是软件工程中的一个众所周知的概念,它指的是软件系统中常见的糟糕的设计和开发实践。随着移动应用程序的出现,研究社区已经将新的代码气味类别确定为移动特定的代码气味。这些代码气味是重要性能问题或瓶颈的症状。尽管对这些新的代码气味进行了多项实证研究,但它们的扩散和演变仍然不清楚。我们在这篇文章中提出了一个大规模的实证研究,检查Android代码气味的引入,演变和去除。这项研究依赖于从324个应用程序中提取的数据,对561个去除气味的提交的手动分析,以及与25个Android开发人员的讨论。我们的研究结果表明,手机特有的代码气味的高度扩散并不是释放压力的结果。我们还发现,这些代码气味的去除通常是维护活动的副作用,因为开发人员即使意识到它们也不会重构气味实例。
2020-10-14 cs.SE
SmellBench: Towards Fine-Grained Evaluation of Code Agents on Refactoring Tasks
University of Science and Technology of China(中国科学技术大学);Ant Group(蚂蚁集团);Rutgers Univerisity(罗格斯大学)
提出SmellBench基准,通过主动注入代码异味生成可控重构案例,从功能正确性、定位能力和重构质量三方面评估代码智能体,发现最佳组合仅得50.34分,主要局限在于局部异味处理和跨文件理解不足。
2026-06-04 cs.SE
Hearing the voice of experts: Unveiling Stack Exchange communities' knowledge of test smells
本研究通过分析Stack Exchange社区的讨论数据,探究开发者对测试坏味道的认知、对应的修正措施及重构挑战,发现开发者更关注他人实操经验,且更常询问测试坏味道的实践优劣而非重构建议。
2023-05-05 cs.SE
Resolving code smells in software product line using refactoring and reverse engineering
软件产品线SPL被认为是软件开发中一种成功的复用方法,其目的是降低生产成本。这种方法允许产品在特定的特性和限制方面有所不同,以覆盖不同的市场。软件产品线工程是产品线中的生产过程。它利用软件产品之间的共性,但也保留了这些产品之间的功能变化的能力。有时,在此过程中不适当的SPL实现可能导致代码气味或代码异常。代码气味被认为是源代码中的问题,可能会影响SPL派生产品的质量。由于重用,SPL的许多派生产品中也会出现同样的问题。重构技术可以在不改变源代码外部行为的前提下改善源代码的内部结构,是解决这一问题的一种可能的方法.本文提出了一种从源代码构建SPL的方法,其目的是通过重构源代码来减少SPL中的代码气味.该方法的另一部分是基于逆向工程来设计SPL.
2020-11-29 cs.SE
The Role of the Retrospective Meetings in Detecting, Refactoring and Monitoring Community Smells
本研究通过访谈15名从业者,探讨回顾会议在检测、重构和监控社区坏味道中的作用,发现其能识别坏味道但重构实施与监控不一致,强调积极方面有助于预防。
2025-02-25 cs.SE
Fixing Your Own Smells: Adding a Mistake-Based Familiarisation Step When Teaching Code Refactoring
针对传统重构教学用陌生代码导致新手难内化的问题,提出让学生先写带坏味道的代码再重构的教学法,实验证明其能显著提升新手的重构效率与信心。
2024-01-02 cs.SE
Smells in System User Interactive Tests
测试气味被认为是糟糕的开发实践,反映了软件测试中糟糕的设计和实现选择。在过去的十年中,测试气味被大量研究,以衡量其流行程度和对测试可维护性的影响。然而,这些研究主要集中在单元级别,直到今天,通过图形用户界面与被测系统交互的系统测试工作仍然有限。为了填补这一空白,我们对系统用户交互测试(SUIT)中出现的测试气味进行了探索性分析。首先,基于多声文献综述,我们提出了一个目录的35套特定的气味。然后,我们进行了实证分析,以评估这些气味在48个工业测试套件和12个开源项目的流行和重构。我们发现,相同类型的气味往往出现在工业和开源项目中,但症状并没有以相同的方式得到解决。气味,如模糊的测试,偷偷摸摸的检查,并在超过70%的测试显示症状。然而,重构操作的频率要低得多,只有不到50%的受影响测试经历过重构。有趣的是,虽然重构动作很少见,但一些气味,如自恋,通过删除旧的症状测试和引入不呈现这些症状的新测试而消失。
2021-11-03 cs.SE
Predicting the Impact of Batch Refactoring Code Smells on Application Resource Consumption
本文研究了16种代码异味批量重构对31个开源应用CPU和内存利用率的影响,并设计了基于ANN的回归模型,在重构决策前高精度预测资源消耗,实现资源感知的代码异味重构。
2023-06-27 cs.LG cs.SE
Smells and Refactorings for Microservices Security: A Multivocal Literature Review
保护基于微服务的应用程序至关重要,因为许多IT公司正在通过微服务交付业务。如果安全气味影响基于微服务的应用程序,则它们可能会遭受安全泄漏,需要重构以减轻其中安全气味的影响。目的:由于目前关于保护微服务的知识分散在不同的白色和灰色文献中,我们的目标是提取用于保护微服务的众所周知的气味,以及能够减轻这些气味影响的重构。方法:为了捕捉微服务安全的最新技术和实践,我们对现有的关于该主题的白色和灰色文献进行了多方面的审查。我们系统地分析了2014年至2020年底发表的58项研究。结果如下:确定了十种用于保护微服务的不良气味,我们将其组织在一个分类中,将每种气味与它可能违反的安全属性以及能够减轻其影响的重构相关联。结论:安全气味和相应的重构对于从业者来说具有实用价值,他们可以在日常工作中利用它们来保护微服务。它们也是希望在保护微服务方面建立新研究方向的研究人员的起点。
2021-04-27 cs.CR cs.SE
Evaluating LLMs Effectiveness in Detecting and Correcting Test Smells: An Empirical Study
该实证研究评估GPT-4-Turbo、LLaMA 3 70B和Gemini-1.5 Pro在Python与Java测试套件中的测试坏味检测与重构能力,发现Gemini整体表现最佳。
2025-06-09 cs.SE
An Event-Driven Tool for Context-Aware Code Smell Detection Using SmellDSL
University of Vale do Rio dos Sinos (Unisinos)(圣瓦莱杜里奥多斯西诺斯大学)
本文提出SmellHunter工具,通过SmellDSL领域特定语言解析脚本,结合静态代码度量和上下文信息(如团队特征、项目阶段和地理元数据)来检测和上下文化代码异味,支持更明智的重构决策。
2026-05-20 cs.SE
URegM: a unified prediction model of resource consumption for refactoring software smells in open source cloud
California State University San Marcos(加州州立大学圣马科斯分校);University at Buffalo(布法罗大学)
提出统一回归建模框架URegM,通过真实云环境实验预测代码异味重构对云资源消耗的影响,帮助云服务提供商更有效地规划资源配置与代码重构。
2023-10-22 cs.LG cs.SE
Using Automatic Refactoring to Improve Energy Efficiency of Android Apps
移动电话的日益普及给软件开发生命周期带来了额外的挑战。移动应用程序(简称app)应该提供与传统软件相同的功能集,但资源有限:例如有限的处理能力、存储、屏幕以及同样重要的电源。虽然能源效率是一个有价值的要求,但开发人员往往缺乏最佳实践的知识。在本文中,我们研究自动重构是否可以帮助开发人员发布节能应用程序。我们利用一个工具,Leafactor,有五种能源代码气味,往往会被忽视。我们使用Leafactor分析了140个免费和开源应用程序中的代码气味。因此,我们在45个应用程序中检测并修复了代码气味,其中40%已成功将我们的更改合并到官方存储库中。
2018-03-15 cs.SE
Leveraging Game-Based Platform to Teach Code Refactoring: An Experience with Refactoria
Stevens Institute of Technology(史蒂文斯理工学院)
本文通过课堂实验评估了基于游戏的工具 Refactoria 在教授代码重构和代码异味识别方面的效果,结果显示其感知有用性高,并能有效促进学生对重构概念的理解。
2026-10-01 cs.SE
A GNN-Based Approach for Code Smell Detection and Refactoring Opportunity Identification
Waseda University(早稻田大学)
本文提出基于图神经网络的代码异味重构方法,设计两类输入图并结合图分类和节点分类任务,针对长方法、大类和特征 envy 三种代码异味进行重构,实验表明方法在传统和先进深度学习方法中表现优异。
2026-10-20 cs.SE stat.ME
Automated Refactoring of Nested-IF Formulae in Spreadsheets
电子表格是最受欢迎的终端用户编程软件,其中公式就像程序一样,也有气味。电子表格公式的一个公认的共同气味是嵌套IF表达式,其可读性低,用户认知成本高,并且在重用或维护期间容易出错。然而,最终用户通常缺乏必要的程序设计语言知识和技能来解决甚至意识到问题。以前的研究工作在这方面做了非常初步的尝试,而目前还没有有效的自动化方法。本文首先提出了一种基于AST的自动化方法来系统地重构嵌套IF公式。总的想法是双重的。首先,我们检测并删除AST上的逻辑冗余。其次,我们确定了更高层次的语义已经支离破碎,分散,并重新组装语法使用简洁的内置函数。一个全面的评估已经进行了对现实世界的电子表格语料库,这是收集在一家领先的IT公司的研究目的。对68,000多个电子表格和2700万个nest-IF公式的结果表明,我们的方法能够消除超过99%的nest-IF公式的气味。超过50%的重构将嵌套IF的嵌套级别减少了一半以上。此外,一项涉及49名参与者的调查表明,在大多数情况下,参与者更喜欢重构公式,并同意这种自动重构方法是必要的和有用的。
2017-12-28 cs.SE
Do Developers Refactor Data Access Code? An Empirical Study
开发人员经常重构代码以提高软件的可维护性和可理解性。对于传统软件系统中的重构活动有很多研究。然而,数据密集型系统中的重构还没有得到很好的探索。了解开发人员的重构实践是很重要的开发有效的工具support.We进行了一项纵向研究的重构活动的数据访问类使用12个数据密集型主题系统。我们调查了重构的流行和演变,以及重构与数据访问气味的关联。我们还对超过378个数据访问重构实例的样本进行了手动分析,以确定这些重构所针对的代码功能。我们的研究结果表明:(1)数据访问重构是普遍存在的,并在类型上有所不同。\textit{Rename variable}是最流行的数据访问重构。(2)重构的流行程度和类型随着系统的发展而变化。(3)大多数数据访问重构的目标代码实现数据获取和插入。(4)数据访问重构通常不涉及SQL查询。总体而言,结果表明,数据访问重构专注于提高代码质量,而不是底层的数据访问操作。因此,研究社区需要做更多的工作,为从业者提供意识和支持,了解通过重构解决数据访问气味的好处。
2022-02-07 cs.SE
How do Agents Refactor: An Empirical Study
University of Alberta(阿尔伯塔大学)
通过对比86个Java项目中智能体与开发者的重构拉取请求,发现智能体重构以注释修改为主,而Cursor是唯一显著增加代码味道的模型。
2026-05-24 cs.SE
Code smells
代码的味道是糟糕的设计和实现选择的症状。很多时候,它们是所谓的技术债务的结果。我们的研究表明,对代码气味研究的兴趣正在增加。然而,大多数出版物都出现在会议记录中。大多数研究是在G7和其他高度发达国家进行的。四个主要的研究主题,即代码气味检测,基于坏气味的重构,软件开发和反模式。结果表明,代码气味也可以有积极的内涵,我们可以开发气味良好的软件,吸引各种客户和良好的气味代码也可以作为一种模式,为未来的软件开发。
2018-02-16 cs.SE
On the Interplay of Smells Large Class, Complex Class and Duplicate Code
坏味道被定义为描述代码中的潜在问题,可能指出重构的机会。一些实证研究强调,气味对理解和可维护性有负面影响。因此,已经提出了几种方法来检测和重组它们。然而,在源代码中不同类型的气味发生的相互关系的研究仍然缺乏,特别是那些集中在这种相互关系的量化。在这项工作中,我们的目标是了解和量化的可能的相互关系的气味大类- LC,复杂的类- CC和重复代码- DC。特别是,我们调查模式的LC和CC的存在或不存在的重复代码。我们对五个开源项目进行了定量研究,并进行了定性分析,以测量和了解特定气味的关联。作为主要结果之一,我们强调,有“发生模式”之间的这些气味,例如:无论是在复杂类或在大类和复杂类的共同出现,克隆往往是更普遍的高度复杂的类比不太复杂的类。发现的模式可以用于提高检测工具的性能,甚至有助于重构任务。
2021-07-20 cs.SE
An Empirical Study on the Code Refactoring Capability of Large Language Models
本研究实证评估StarCoder2在30个Java项目中的代码重构能力,发现其比开发者多减少20.1%代码坏味道,结合一次性提示与多重构方案可显著提升性能。
2024-11-04 cs.SE
Towards Refactoring of DMARF and GIPSY Case Studies -- a Team 8 SOEN6471-S14 Project Report
决定软件系统质量的因素之一是它的设计和体系结构。拥有良好且清晰的设计和体系结构,可以使系统不断发展(计划和添加新功能),更容易理解、更容易开发、更容易维护;总之,可以延长的使用寿命,并在市场上更具竞争力。在下面的文章中,我们研究了两个不同的系统的体系结构:GIPSY和DMARF。本文对这两个系统进行了概述。这两个系统、目的、架构及其设计模式是什么?还确定了具有弱体系结构和设计以及代码气味的类,并建议和实现了一些重构。在整个文件中使用了几个工具,用于几个目的。LOGICSCOPE、JDeodoant、McCabe被用来识别设计和代码味道较弱的类。其他工具和插件也被用来识别类设计和类之间的关系,如ObjectAid(Eclipse插件)。
2014-12-23 cs.SE
Towards Refactoring of DMARF and GIPSY Case Studies -- A Team 5 SOEN6471-S14 Project Report
本文分析了两个用Java开发的分布式开源系统(OSS)的体系结构设计:分布式模块化音频识别框架(DMARF)和通用内涵编程系统(GIPSY)。该研究从这些框架的背景研究开始,以确定其整体架构。然后,我们确定参与者和利益相关者,并为每个框架起草一个领域模型。接下来,我们评估并提出了一个融合DMARF在GIPSY运行时架构(DoGRTA)作为一个域的概念。后来,团队提取并研究了实际的类图,并确定了感兴趣的类。接下来,我们确定了每个框架的代码中存在的设计模式。最后,使用流行的工具检测源代码中的代码气味,并使用已建立的技术重构选定数量的已识别气味,并在最终的源代码中实现。在重构之前和之后编写并运行测试,以检查任何行为更改。
2014-12-23 cs.SE
SACS: A Code Smell Dataset using Semi-automatic Generation Approach
本文提出SACS数据集,通过半自动方法生成高质量代码异味样本,涵盖Long Method、Large Class和Feature Envy三种常见代码异味,为未来研究提供大规模基准。
2026-10-11 cs.SE
REFINE: A Multi-Agent LLM Approach for Evidence-Guided Code Refactoring
Tampere University(坦佩雷大学);University of Derby(德比大学)
本研究提出多智能体方法REFINE,结合静态分析、LLM等技术生成Java代码重构候选,在450个文件上使异味降低超68%,效果优于直接提示基线,但存在残留风险需人工审查。
2026-08-26 cs.AI cs.SE
Toward Refactoring of DMARF and GIPSY Case Studies -- A Team XI SOEN6471-S14 Project Report
本报告的重点是改进分布式模块化音频识别框架(DMARF)和通用内涵编程系统(GIPSY)案例研究的内部结构,而不影响它们的原始行为。首先,通过查看它们的框架并在Eclipse环境中运行它们,主要强调系统的体系结构来理解DMARF和GIPSY的一般原理和工作。为了提高代码结构的质量,进一步理解案例研究的体系结构,这是通过分析代码中存在的设计模式来实现的。通过识别和去除案例研究代码中的代码气味来实现改进。通过使用Logiscope和JDeodorant分析源代码来识别代码气味。一些重构技术的建议,其中最适合的实施,以改善代码。最后,执行测试用例来检查代码的行为是否发生了变化。
2014-12-23 cs.SE
A Survey of Deep Learning Based Software Refactoring
本文综述了基于深度学习的软件重构研究,将其分为五类并分析关键方面,揭示了技术采用不平衡、方法级重构占主导及质量保证研究缺失等问题,并提出未来研究方向。
2024-04-30 cs.SE
User Interface Design Smell: Automatic Detection and Refactoring of Blob Listeners
用户界面(UI)高度依赖于事件驱动的编程:小部件将UI事件(捕获用户的交互)发送给称为控制器的专用对象。控制器使用多个UI侦听器来处理这些事件以生成UI命令。首先,我们揭示了设计气味在描述和控制UI的代码中的存在。其次,我们证明了特定的代码分析是分析和重构UI代码所必需的,因为它与代码的其余部分耦合。我们对四个大型Java Swing和SWT开源软件系统进行了实证研究。我们研究在何种程度上的UI命令的数量,一个UI监听器可以产生的变化和故障倾向的UI监听器代码的影响。我们开发了一个静态代码分析,用于检测代码中的UI命令。我们发现了一种新的设计气味,称为Blob气味,它描述了可以产生两个以上UI命令的UI侦听器。我们提出了一个系统的静态代码分析过程,搜索我们在InspectorGuidget中实现的Blob Listeners。我们在四个软件系统上进行了实验,我们手动识别了53个Blob实例。InspectorGuidget成功检测到53个Blob侦听器中的52个。实验结果表明,该方法的准确率为81.25%,召回率为98.11%。然后,我们开发了一个半自动和行为保留的重构过程来删除Blob Listeners。在53个Blob Listener中,49.06%被自动重构。JabRef和FreeCol的修补程序已被接受并合并。与四个软件系统的开发人员的讨论评估了Blob的相关性。这项工…
2018-05-25 cs.HC cs.SE
Profiling Developers Through the Lens of Technical Debt
内容:技术债需要管理以避免灾难性的后果,调查开发人员关于技术债管理的习惯是软件开发中非常宝贵的信息。目的:本研究旨在描述开发人员如何根据他们诱导的代码气味和他们应用的重构来管理技术债务。方法:我们为选定项目的每个开发人员挖掘了一个公开的技术债务数据集,以获取Git提交信息,代码气味,编码违规和重构活动。结果如下:通过结合这些信息,我们可以对开发人员进行分析,以识别多产的编码人员,突出区分开发人员角色(评审员,领导者,架构师)的活动,并估计编码成熟度和技术债务容忍度。
2020-09-08 cs.SE
How We Refactor and How We Document it? On the Use of Supervised Machine Learning Algorithms to Classify Refactoring Documentation
Rochester Institute of Technology(罗切斯特理工学院);ETS Montreal, University of Quebec(魁北克大学蒙特利尔分校);University of Michigan(密歇根大学)
重构是一种在不改变系统外部行为的情况下改进系统设计的艺术。重构已经成为一个完善的和有纪律的软件工程实践,已经吸引了大量的研究假设重构的主要动机是需要改善系统结构。然而,最近的研究表明,开发人员可能会将重构纳入其他开发活动中,而不仅仅是改进设计。不幸的是,这些研究仅限于开发人员访谈和一组减少的项目。为了克服上述限制,我们的目标是通过挖掘和分类从800个Java项目中提取的111,884个包含重构的提交来更好地理解是什么促使开发人员应用重构。我们训练了一个多类分类器,将这些提交分为3个类别,即内部QA,外部QA和代码验证解决方案,以及传统的BugFix和Functional类别。这种分类挑战了重构的原始定义,它专门用于改进设计和修复代码气味。此外,为了更好地理解我们的分类结果,我们分析了提交消息,以提取开发人员经常用来描述其重构的文本模式。结果表明:(1)修复代码气味不是开发人员重构代码库的主要驱动力。请求重构的原因有很多,超出了它的传统定义;(2)重构的分布在生产和测试文件之间不同;(3)开发人员使用几种模式来有目的地针对重构;(4)从提交消息中提取的文本模式为开发人员如何记录他们的重构提供了更好的覆盖。
2020-10-26 cs.LG cs.SE
Code smells: A Synthetic Narrative Review
代码气味是糟糕的设计和实现选择的症状,它可能会阻碍理解,增加代码的复杂性和错误倾向,并降低软件系统的可维护性。本研究的目的是进行一个三角的文献计量学和主题分析的代码气味文献生产。使用检索字符串代码气味在Scopus(Elsevier,Netherlands)数据库中进行检索,共检索到442篇出版物。Go-to语句是1968年软件工程历史上发现的第一个坏代码气味。文学创作的趋势是积极的。生产率最高的国家是美国、意大利和巴西。确定了八个研究主题:管理软件维护,基于故障检测的软件重构,架构气味,多目标方法提高软件质量,技术债务及其实例,挖掘软件仓库的质量改进/保证,编程教育,集成反模式,设计缺陷和设计气味的概念。也出现了一些研究空白,即新的未编目气味识别;从建筑,设计,代码到测试和其他可能的气味的传播;以及识别良好的气味。我们的研究结果可以帮助代码气味研究人员和从业者了解代码气味研究的更广泛方面及其实践。
2021-03-01 cs.SE
Exploring Variational Graph Auto-Encoders for Extract Class Refactoring Recommendation
University of Illinois at Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校)
代码气味是软件系统中设计和开发缺陷的标志,它会降低系统的可重用性和可维护性。重构是一种持续的实践,以消除程序代码中的代码气味。在不同的代码气味中,God类或Blob是最常见的代码气味之一。一个god类包含太多的责任,违反了面向对象编程设计的低耦合和高内聚原则。本文提出了一种自动的方法来提取一个上帝类到多个更小的类更具体的责任。为此,我们首先为相关的god类构建一个方法图(作为节点)。任何两种方法之间的边缘由它们的结构相似性确定,并且使用不同的语义表示方法初始化每个方法的特征。然后,使用变分图自动编码器来学习每种方法的向量表示。最后,学习的向量用于将方法聚类到不同的组中,以推荐为重构类。我们使用三种不同的类内聚度量对从两个著名的开源系统中收集的16个实际的上帝类进行了评估。我们还对我们的方法与类似的现有方法进行了比较研究,发现所提出的方法对实验中使用的几乎所有上帝类都产生了更好的结果。
2023-03-19 cs.AI cs.SE
An Empirical Study on Refactoring Activity
本文报告了一个实证研究的重构活动在三个Java软件系统。我们调查了重构活动的一些问题,以确认或不同意从以前的实证研究中得出的结论。与以往的实证研究不同,我们的研究发现,并不总是有更多的重构活动之前的主要项目发布日期比之后。相比之下,我们能够确认软件开发人员对测试代码和生产代码执行不同类型的重构操作,特定的开发人员负责项目中的重构,重构编辑没有得到很好的测试。此外,floss重构在开发人员中更受欢迎,重构活动在项目中很频繁,大多数不良气味一旦发生,就会持续到系统的最新版本。通过证实其他研究人员的假设,我们可以更有信心地认为这些研究结论是可推广的。
2014-12-18 cs.SE
Toward Refactoring of DMARF and GIPSY Case Studies -- a Team 4 SOEN6471-S14 Project Report
软件质量是软件工程开发中的一个主要关注点,以提高软件的竞争力。这样的质量可以通过一种称为重构的可能技术来实现,其中系统的外部行为不被改变。首先,我们介绍了我们的工作,通过分析正在进行的研究DMARF和GIPSY的案例研究,了解他们的需求和要求,涉及各自的系统中的主要组成部分。随后的章节说明了这些案例研究的概念架构,为此,我们参考了原始架构来绘制系统中呈现的重要候选概念,并分析它们与系统中其他概念的关联,然后将此概念架构与原始架构进行比较。稍后,文档将说明如何识别架构中存在的代码气味,以找到它们并解决,从而最大限度地减少更深层次的问题。JDeodorant,SonarQube是我们用来识别和分析源代码质量的工具,这两个工具都可以作为IDE插件或开源平台使用。接下来是识别架构中存在的设计模式以及它们在各自系统中存在的重要性和需求。最后,这意味着将重构方法引入到已经识别的气味中,并可能通过应用适当的重构方法和展示相应的测试来相应地重构它们,以确保架构中的更改不会对行为造成太大影响。
2014-12-23 cs.SE
SmellCC: A Tool for Automated Code Smells Remediation
Zhejiang University(浙江大学)
SmellCC是一款Visual Studio Code扩展,结合SonarQube与LLM流水线,采用思维链和少样本学习,可一键修复Python前10种常见代码异味,清洁率96.8%、准确率91.3%,能提升软件可维护性。
2026-08-11 cs.SE
Toward Refactoring of DMARF and GIPSY Case Studies -- a Team 9 SOEN6471-S14 Project Report
软件体系结构由一系列决策组成,这些决策是为了提供满足所有技术和操作需求的结构化解决方案而做出的。本文涉及代码重构。代码重构是一个在不改变代码外部行为的情况下改变代码内部结构的过程。本文重点介绍了开源系统DMARF和GIPSY的实验研究。我们查阅了各种研究论文并分析了它们的架构。重构提高了代码的可理解性、可维护性和可扩展性。代码气味是通过各种工具识别的,如JDeodorant、Logiscope和CodePro。为了更好地理解系统,对DMARF和GIPSY进行了逆向工程。用于此的工具是Object Aid UML。为了更好地理解用例,建立了领域模型、设计类图。
2014-12-23 cs.SE
On the Prevalence, Impact, and Evolution of SQL Code Smells in Data-Intensive Systems
代码气味表明软件设计问题会损害软件质量。频繁访问数据库的数据密集型系统除了传统的气味外,还经常受到SQL代码气味的影响。虽然对传统的代码气味已经有了广泛的研究,但最近,人们对SQL代码气味的兴趣越来越大。在本文中,我们进行了一项实证研究,调查的流行和演变的SQL代码气味在开源,数据密集型系统。我们收集了150个项目,并检查了这些项目中的传统和SQL代码气味。我们的调查提供了几个重要的发现。首先,SQL代码气味在数据密集型软件系统中确实很普遍。第二,SQL代码气味与传统代码气味的共现性较弱。第三,SQL代码气味与bug的关联性比传统代码气味弱。第四,与传统的代码气味相比,SQL代码气味更有可能在项目生命周期开始时引入,并且可能留在代码中而不进行修复。总体而言,我们的研究结果表明,SQL代码气味确实是普遍存在的,并在所研究的数据密集型软件系统持久。开发人员应该意识到这些气味,并考虑使用专用工具分别检测和重构SQL代码气味和传统代码气味。
2022-01-06 cs.SE
CloudScent: a model for code smell analysis in open-source cloud
针对开源云代码质量受重视不足、缺乏针对性代码坏味检测工具的问题,本文提出开源检测模型CloudScent,经OpenStack环境实验验证可准确检测8种云环境代码坏味,助力云服务商及时重构以提升代码质量。
2023-07-22 cs.DC cs.SE
Why We Refactor? Confessions of GitHub Contributors
重构是一种广泛的实践,可以帮助开发人员提高代码的可维护性和可读性。然而,有一个有限数量的研究经验调查背后的实际动机,具体的重构操作应用的开发人员。为了填补这一空白,我们监控了GitHub上托管的Java项目,以检测最近应用的重构,并要求开发人员解释他们决定重构代码的原因。通过对收集到的回复进行主题分析,我们为12种著名的重构类型编制了一个44种不同动机的目录。我们发现,重构活动主要是由需求的变化驱动的,而很少是由代码气味驱动的。提取方法是最通用的重构操作,有11种不同的用途。最后,我们发现有证据表明开发人员使用的IDE会影响自动化重构工具的采用。
2016-07-08 cs.SE
SmellBench: Evaluating LLM Agents on Architectural Code Smell Repair
University of Craiova(克劳索瓦大学);NVIDIA(NVIDIA公司);University Politehnica of Bucharest(布加勒斯特理工大学)
本文提出SmellBench框架,用于评估LLM代理在修复建筑代码异味方面的性能,通过专家验证发现最佳代理修复率为47.7%,但修复 aggressiveness 与代码库质量呈负相关。
2026-05-12 cs.CL cs.SE
Evaluation of Software Quality Through Refactoring Commit-Impact Analysis
Islamic University of Technology(伊斯兰技术大学)
本研究通过检查重构提交前后代码变更的影响,结合软件度量与GitHub开源软件的静态代码分析,探究代码修改与软件质量的相关性。
2026-10-12 cs.SE
Recommendation of Move Method Refactoring Using Path-Based Representation of Code
软件重构在提高代码质量方面起着重要的作用。最流行的重构类型之一是移动方法重构。当一个方法依赖于其他类的成员多于依赖于它自己的原始类时,通常会应用它。已经提出了几种方法来自动推荐Move Method重构。它们中的大多数是基于几何学的,并且具有某些限制(例如,它们取决于度量的选择和手动定义的阈值)。在本文中,我们提出了一种方法,建议移动方法重构的基础上,基于路径的代码表示称为code2vec,能够捕获代码片段的语法结构和语义信息。我们使用这种代码表示训练一个机器学习分类器,建议将方法移动到更合适的类。我们在两个公开的数据集上评估了该方法:一个是知名开源项目的手动编译数据集,另一个是自动注入代码气味实例的合成数据集。结果表明,我们的方法是能够推荐准确的重构机会,并优于JDeodorant和JMove,这是最先进的工具,在这个领域。
2020-02-15 cs.SE
Analyzing Dependency Distribution Changes Arising from Code Smell Interactions
University of Auckland(奥克兰大学)
研究探讨代码异味交互如何影响静态依赖分布,通过分析116个开源Java系统,发现代码异味相互作用显著增加总依赖关系,并为代码异味检测和重构策略提供依据。
2026-03-04 cs.SE
Test Code Refactoring Unveiled: Where and How Does It Affect Test Code Quality and Effectiveness?
本文提出通过挖掘 GitHub 开源 Java 项目仓库,统计分析测试重构与质量指标、测试坏味道及覆盖率的关系,以揭示其对测试代码质量和有效性的影响。
2023-08-18 cs.SE
Understanding Code Smell Detection via Code Review: A Study of the OpenStack Community
代码评审在软件质量控制中起着重要的作用。一个典型的评审过程包括仔细检查一段代码,试图找到缺陷和其他质量问题/违规。可能影响软件质量的一种类型的问题是代码气味-即,可能导致缺陷或维护问题的不良编程实践。然而,我们对在代码审查过程中识别代码气味的程度知之甚少。为了研究代码审查中识别出的代码气味背后的概念,以及审查者建议和开发人员采取什么行动来响应识别出的气味,我们使用两个最活跃的OpenStack项目(Nova和Neutron)对代码审查中的代码气味进行了实证研究。我们手动检查了通过关键字搜索和随机选择获得的19,146条评论,并获得了1,190条与气味相关的评论,以研究代码气味的原因以及针对识别出的气味采取的行动。我们的分析发现:1)代码气味通常不会在代码审查中被识别出来,2)气味通常是由违反编码约定引起的,3)审查人员通常会提供建设性的反馈,包括修复(重构)建议,以帮助开发人员消除气味,4)开发人员通常会遵循这些建议并采取行动。我们的研究结果表明:1)开发人员应该在他们的项目中严格遵循编码惯例,以避免引入代码气味; 2)基于审查的代码气味检测被开发人员认为是一种值得信赖的方法,主要是因为审查是上下文敏感的(因为审查者更了解代码的上下文,因为他们是项目开发团队的一部分)。
2021-03-21 cs.SE
Watts This Smell: A Comprehensive Taxonomy of Software Energy Smells
Dalhousie University(达尔豪斯大学)
本文提出了一种全面的软件能耗异味分类,通过系统文献综述和雪球抽样,将320种低效模式分类为12种主要能耗异味和65种根本原因。通过实证验证,发现71%的样本存在多种共存的异味,内存相关异味的修复节能效果最高。
2026-07-09 cs.SE
From Human to Machine Refactoring: Assessing GPT-4's Impact on Python Class Quality and Readability
University of Catania(卡塔尼亚大学);University of Sannio(桑尼奥大学)
本文评估GPT-4在Python类重构中的效果,发现其能提升代码质量和减少异味,但可能降低可读性。
2026-01-19 cs.SE
Does Code Smell Frequency Have a Relationship with Fault-proneness?
本研究通过实证分析Apache和Eclipse生态系统中13种代码坏味频率与故障倾向性的相关性,发现低频坏味(如Anti Singleton)与故障倾向性强相关,高频坏味(如Complex Class)为中等相关,为重构优先级提供依据。
2023-04-28 cs.SE
Code Smells Detection via Modern Code Review: A Study of the OpenStack and Qt Communities
代码评审在软件质量控制中起着重要的作用,它可以检测和定位缺陷和其他质量问题。可能影响软件质量的一种问题是代码气味。然而,我们对现代代码审查中代码气味的识别程度知之甚少。为了研究现代代码审查中识别出的代码气味背后的概念,以及审查者建议和开发人员采取什么行动来响应识别出的气味,我们通过分析来自OpenStack(Nova和Neutron)和Qt(Qt Base和Qt Creator)社区的四个大型开源项目的审查,对代码审查中的代码气味进行了研究。我们手动检查了通过关键字搜索和随机选择获得的总共25,415条代码审查评论,并确定了1,539条与气味相关的评论。我们的分析发现:1)代码气味在代码评审中通常不会被识别出来,2)气味通常是由违反编码约定引起的,3)评审人员通常会提供建设性的反馈,包括修复(重构)建议,以帮助开发人员消除气味,4)开发人员通常遵循这些建议并采取行动的变化,5)一旦确定由审查,开发人员通常花费不到一周的时间来修复气味,以及6)开发人员选择忽略所识别的气味的主要原因是不值得修复气味。我们的研究结果表明:1)开发人员应该在他们的项目中严格遵循编码惯例,以避免引入代码气味,2)基于审查的代码气味检测被开发人员认为是一种值得信赖的方法,主要是因为审查是上下文敏感的(由于评审人员是项目开发团队的一部分,因此他们更了解代码的上下文),以及3)需要充分考虑程序上下文以便做出是否立…
2022-05-16 cs.SE
Prompt Learning for Multi-Label Code Smell Detection: A Promising Approach
本文提出基于提示学习检测多标签代码异味的方法PromptSmell,通过遍历AST获取代码片段并构建LLM输入,将多标签问题转化为多分类问题,实验证明其precision_w提升11.17%、F1_w提升7.4%。
2024-02-16 cs.SE
MORCoRA: Multi-Objective Refactoring Recommendation Considering Review Availability
School of Computing, Tokyo Institute of Technology(东京工业大学理工学院)
MORCoRA通过多目标搜索推荐高代码质量和高审查可用性的重构序列及合适审查者。
2026-03-08 cs.SE
On the evolution and impact of Architectural Smells -- An industrial case study
架构气味(AS)对软件系统的可维护性和可演化性有着长期的影响。大多数的研究工作都是通过挖掘开源Java系统的软件存储库来研究这个主题的,这使得很难将它们推广并应用到工业环境和其他程序设计语言中。为了解决这一研究空白,我们进行了嵌入式多案例研究,与一个大型行业合作伙伴合作,研究如何在工业嵌入式系统AS演变。我们在9个C/C++项目中检测和跟踪AS,每个项目的开发时间超过两年,每个项目的发布版本超过30个,仅最后一个版本就有超过2000万行代码。除了这些定量结果,我们还采访了12名开发人员和建筑师,他们在这些项目中工作,收集了超过六个小时的定性数据,这些数据是关于AS分析的有用性以及他们在维护和发展受AS影响的人工制品时遇到的问题。我们的定量研究结果显示了个体气味实例如何随着时间的推移而演变,它们通常在系统中存活多久,它们如何与其他气味类型的实例重叠,以及最后当它们重叠时,气味类型的引入顺序是什么。相反,我们的定性研究结果,提供了洞察力的影响,AS的长期可维护性和系统的可演化性,从我们的采访中的几个摘录的支持。实践者还提到AS分析的哪些部分实际上提供了可操作的见解,他们可以使用这些见解来计划重构活动。
2022-03-16 cs.SE
Empirical Investigation of the Relationship Between Design Smells and Role Stereotypes
本文通过统计分析和无监督学习方法,基于30个GitHub仓库的11,350个类,实证揭示了设计异味与角色定型之间的关联,发现桌面应用比移动应用更易出现设计异味,且服务提供者和信息持有者角色定型尤为突出,为软件团队预防和纠正设计异味提供了指导。
2024-06-27 cs.SE