Code smells
代码的味道是糟糕的设计和实现选择的症状。很多时候,它们是所谓的技术债务的结果。我们的研究表明,对代码气味研究的兴趣正在增加。然而,大多数出版物都出现在会议记录中。大多数研究是在G7和其他高度发达国家进行的。四个主要的研究主题,即代码气味检测,基于坏气味的重构,软件开发和反模式。结果表明,代码气味也可以有积极的内涵,我们可以开发气味良好的软件,吸引各种客户和良好的气味代码也可以作为一种模式,为未来的软件开发。
2018-02-16 cs.SE
The Impact of Auto-Refactoring Code Smells on the Resource Utilization of Cloud Software
基于云的软件即服务(SaaS)由于其低成本和弹性而受到欢迎。然而,与其他软件一样,SaaS应用程序也会受到代码气味的影响,这会严重影响功能和资源使用。代码气味是指源代码中任何表明存在更深层次问题的设计。软件社区部署了自动化重构来消除气味,这可以提高性能并减少关键资源的使用。然而,分析SaaS中自动重构气味对CPU和内存等资源的影响的研究在一定程度上是有限的。在这里,我们的目标是填补这一空白,并研究SaaS应用程序的资源使用的影响,由于自动重构的七个经典的代码气味:上帝类,功能嫉妒,类型检查,循环依赖,鸟枪手术,上帝的方法,和意大利面条代码。我们从Github中指定了六个实际的SaaS应用程序,分别是Zimbra,OneDataShare,GraphHopper,Hadoop,JENA和JAMES,它们在Openstack云上运行。结果表明,JDeodrant和JSparrow等工具重构气味对基于气味重构类型的测试应用程序的CPU和内存消耗有着广泛不同的影响。我们提出了每种气味对资源利用的影响,并讨论了导致这种影响的潜在原因。
2020-08-14 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
On the Prevalence, Evolution, and Impact of Code Smells in Simulation Modelling Software
本文对 GitHub 上 155 个仿真项目和 327 个传统项目进行静态分析与版本演化研究,揭示仿真软件中代码异味的分布、存续特征及其与缺陷的关系。
2024-09-06 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
Community Smells -- The Sources of Social Debt: A Systematic Literature Review
社会债务描述了次优软件开发过程中不可预见的项目成本(或潜在成本)的积累。社区气味是社会技术的反模式,也是影响软件团队、开发过程、结果和组织的社会债务的一个来源。目的:根据已发表的文献,提供社区气味的概述,并描述未来的研究。方法:我们进行了系统的文献综述(SLR),以确定属性,了解起源和演变,并描述社区气味的出现。这个SLR解释了社区气味对团队合作和团队绩效的影响。结果:共纳入25项研究。社会债务描述了糟糕的社会技术决策对工作环境、人员、软件产品和社会的影响。对于30个确定的社区气味,我们提供了一个描述,管理方法,组织战略和缓解效果。我们确定了五组管理方法:组织战略,框架,模型,工具和指导方针。我们描述了社区气味的11个特性。我们开发了社区气味阶段框架,以简洁地描述社区气味的起源和演变。我们描述了每个社区气味的原因和影响。我们确定并描述了社区气味的8种原因和11种影响。最后,我们提供了8个Sankey图表,这些图表提供了对社区气味对团队合作因素和团队绩效构成的威胁的见解。结论:社区气味解释了工作条件对软件开发人员的影响。文献很少,集中在少数社区气味上。因此,社区气味还需要更多的研究。这篇评论整理了关于社区气味的最新研究成果,并为未来的研究提供了动力和教育材料。
2022-09-21 cs.SE
Developers perception on the severity of test smells: an empirical study
单元测试是软件开发生命周期的重要组成部分。通过创建和运行单元测试,开发人员可以轻松快速地捕获和修复源代码中引入的软件错误。尽管单元测试很重要,但它会受到糟糕的设计或实现决策的影响,即所谓的测试气味。这些可能会从各个方面降低软件系统的质量,使其更难理解,更复杂的维护,更容易出现错误和bug。许多研究讨论了测试气味对测试代码的可能影响。然而,缺乏研究,捕捉开发人员对这些问题的看法。本研究实证分析了开发人员如何在他们开发的测试代码中感知测试气味的严重性。严重性是指测试气味可能对测试代码产生负面影响的程度。我们从GitHub中选择了六个开源软件项目,并采访了他们的开发人员,以了解测试气味是否以及如何影响测试代码。尽管大多数受访的开发人员认为测试气味对他们的代码的严重性很低,但他们表示测试气味可能会对项目产生负面影响,特别是在测试代码的可维护性和演化方面。此外,从测试代码中检测和移除测试气味可能对项目有积极意义。
2021-07-29 cs.SE
Design Smell Analysis for Developing and Established Open Source Java Software
软件设计气味是违反基本设计原则的设计属性。设计气味是设计债的一个关键原因。虽然设计气味识别和测量的活动主要被认为是在目前的文献中,那些识别和沟通的设计气味更频繁地发生在新开发的软件,哪些是更占主导地位的软件已被研究到有限的程度。本研究描述了一种机制,用于识别设计气味,更普遍的开发和建立软件分别。通过分析大量源代码,提供了一种用于设计气味检测的工具。更具体地说,分析了6个开发中的164,609行代码(LoC)和5,712个类文件,以及5个已建立的开源Java软件的244,930行代码和12,048个类文件。结果显示,在9种预先选择的设计气味中,在4,020种气味中,检测到1,643种设计气味用于开发软件,其中主要包括4种特定类型的气味。对于已建立的软件,观察到2,397种设计气味,其中主要包括四种其他类型的气味。剩下的设计气味在开发和建立的软件中同样普遍。所需的精度值范围为72.9%至84.1%的工具。
2019-10-11 cs.IR cs.SE
Bias Smells in AI Software Development: Recognizing Potential Sources of Fairness Debt
University of Calgary(卡尔加里大学);Universidade Federal Rural de Pernambuco (UFRPE)(巴西联邦农村佩尔南布科大学);Virginia Commonwealth University(弗吉尼亚联邦大学)
该研究通过对某组织四个AI项目的探索性案例研究,识别出六种“偏见异味”指标,将软件异味范式扩展至公平性领域,为将公平性纳入软件质量保证提供了基础。
2026-08-12 cs.SE
Predicting Software Defects through SVM: An Empirical Approach
软件缺陷预测是软件预防性维护的一个重要方面。许多技术已经被用来通过缺陷预测来提高软件质量。本文介绍了一种基于代码气味的机器学习算法--支持向量机(SVM)的缺陷预测方法。基于支持向量机的缺陷预测模型被用于预测Eclipse软件后续版本中的缺陷。结果表明气味在预测软件缺陷中的作用。结果可以进一步用作基线,以进一步研究气味在预测缺陷中的作用。
2018-03-08 cs.SE
Towards a Taxonomy of Software Log Smells
University of Luxembourg(卢森堡大学);University of Sheffield(谢菲尔德大学)
本研究提出日志恶臭的分类,旨在帮助开发人员编写更高质量的日志代码,并通过现有工具识别研究空白。
2026-10-13 cs.SE
Software Supply Chain Smells: Lightweight Analysis for Secure Dependency Management
KTH Royal Institute of Technology(皇家理工学院);Université de Montréal(蒙特利尔大学)
本文提出软件供应链异味概念,设计评估Dirty-Waters工具,通过实证研究揭示Maven和NPM生态中依赖项安全问题的差异。
2026-03-30 cs.CR cs.SE
Android Code Smells: From Introduction to Refactoring
面向对象代码气味是软件工程中的一个众所周知的概念,它指的是软件系统中常见的糟糕的设计和开发实践。随着移动应用程序的出现,研究社区已经将新的代码气味类别确定为移动特定的代码气味。这些代码气味是重要性能问题或瓶颈的症状。尽管对这些新的代码气味进行了多项实证研究,但它们的扩散和演变仍然不清楚。我们在这篇文章中提出了一个大规模的实证研究,检查Android代码气味的引入,演变和去除。这项研究依赖于从324个应用程序中提取的数据,对561个去除气味的提交的手动分析,以及与25个Android开发人员的讨论。我们的研究结果表明,手机特有的代码气味的高度扩散并不是释放压力的结果。我们还发现,这些代码气味的去除通常是维护活动的副作用,因为开发人员即使意识到它们也不会重构气味实例。
2020-10-14 cs.SE
Empirical Investigation of the Relationship Between Design Smells and Role Stereotypes
本文通过统计分析和无监督学习方法,基于30个GitHub仓库的11,350个类,实证揭示了设计异味与角色定型之间的关联,发现桌面应用比移动应用更易出现设计异味,且服务提供者和信息持有者角色定型尤为突出,为软件团队预防和纠正设计异味提供了指导。
2024-06-27 cs.SE
Code Smell Detection using Multilabel Classification Approach
代码气味是软件的特征,表明代码或设计问题,这些问题可能使软件难以理解,发展和维护。文献中提出的代码气味检测工具产生不同的结果,因为气味是非正式定义的,或者本质上是主观的。为了解决工具主观性的问题,已经提出了机器学习技术,其可以学习和区分有气味和无气味的源代码元素(类或方法)的特征。然而,现有的机器学习技术只能检测代码元素中的单一类型的气味,其不对应于真实世界场景。在本文中,我们已经使用多标签分类方法来检测是否给定的代码元素受到多种气味或没有。我们考虑了两个代码气味数据集,并将它们转换为多标签数据集。在我们的实验中,两种多标签方法在转换后的数据集上执行,在10倍交叉验证中表现出良好的性能,使用10次重复。
2019-02-08 cs.SE
A Catalog of Transformations to Remove Smells From Natural Language Tests
本文提出了一组消除七种自然语言测试坏味的转换目录及基于NLP的配套自动化工具,经专业人员调查和Ubuntu OS真实测试样本评估,验证了其有效性和83.70%的精确度。
2024-04-25 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
Code Smells and Refactoring: A Tertiary Systematic Review of Challenges and Observations
在本文中,我们提出了一个三级系统的文献综述,以前的调查,二级系统的文献综述,和系统的映射。我们确定了关于代码气味和重构的主要观察结果(我们知道的)和挑战(我们不知道的)。我们发现代码气味和重构与质量属性有很强的关系,即,具有可理解性、可维护性、可测试性、复杂性、功能性和可重用性。我们认为,代码气味和重构可以被认为是一个硬币的两面。此外,我们还确定了重构如何影响质量属性,而不是代码气味。我们还讨论了这项工作的从业人员,研究人员和教师的影响。我们确定了13个开放的问题,可以指导未来的研究工作。因此,我们想强调在当前软件工程研究中代码气味和重构之间的差距。我们希望这项工作能够帮助软件工程研究社区在未来的代码气味和重构工作中进行合作。
2020-04-22 cs.SE
Socio-Technical Well-Being of Quantum Software Communities: An Overview on Community Smells
University of Salerno(萨莱诺大学)
本文研究量子开源社区的社会技术福祉,分析社区异味问题及其对产品质量和可持续性的影响。
2026-02-19 cs.SE
Beyond Strict Rules: Assessing the Effectiveness of Large Language Models for Code Smell Detection
Universidade Federal de Minas Gerais(米纳斯吉拉斯联邦大学);Universidade Federal de Ouro Preto(奥罗普雷托联邦大学);University of Ottawa(渥太华大学)
本研究评估了四种大型语言模型(DeepSeek-R1、GPT-5 mini、Llama-3.3、Qwen2.5-Code)在30个Java项目中检测九种代码异味的效果,并提出了结合LLM与静态分析工具的检测策略,该策略在五个异味类型上F1分数优于单独使用LLM或工具。
2026-05-29 cs.SE
Architecture Smells vs. Concurrency Bugs: an Exploratory Study and Negative Results
本研究探索架构异味与并发缺陷的关联,通过分析5个大型软件系统的125个版本,发现某些异味可能预示特定并发问题,但两者总体不相关,需结合项目特征具体分析。
2023-03-31 cs.SE
Dirty-Waters: Detecting Software Supply Chain Smells
针对使用开源依赖的项目难以及时察觉软件供应链风险的问题,本文提出软件供应链坏味道概念与检测工具Dirty-Waters,经多版本JavaScript项目验证其能有效识别大量风险点,为供应链安全防护提供明确指引。
2024-10-21 cs.CR cs.SE
Experiences on Managing Technical Debt with Code Smells and AntiPatterns
技术债已经成为一个常见的比喻,用来比喻软件设计和实现选择的积累,这些选择寻求快速的初始收益,但从长远来看,这些选择低于标准,适得其反。然而,作为一个比喻,技术债务并没有提供如何摆脱它的可操作的建议。为了在解决问题方面达到实用的水平,需要更有针对性的机制。对此常用的方法包括识别代码气味作为代码库中可能问题的快速指示,并检测是否存在涉及设计中明显的重复问题的AntiPatterns。对于代码气味和反模式都有已知的补救措施。在论文中,我们的目标是展示如何有效地使用常见的工具和现有的代码气味和反模式知识来检测技术债务并偿还。我们提出了两个主要结果:(i)如何使用静态代码分析和手动检查的组合来检测代码库中的代码气味,从而发现AntiPatterns;以及(ii)如何使用AntiPatterns来识别、描述和修复软件中的问题。这些经验来自一家私营公司及其长期的软件产品开发工作。
2021-03-21 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
On the Impact of Requirement Smells in LLM-Based Code Generation
fortiss GmbH(fortiss有限公司);Netlight Consulting(Netlight咨询公司);Technical University of Munich(慕尼黑工业大学);Chalmers University of Technology(查尔姆斯理工大学);Trinity College Dublin(都柏林三一学院);University of Duisburg-Essen(杜伊斯堡-埃森大学);Blekinge Institute of Technology(布莱金厄理工学院)
本研究通过扩展先前数据集,评估需求气味对LLM生成代码功能正确性的影响,发现气味密度增加降低正确性,且影响因任务而异,凸显需求质量的重要性。
2026-09-25 cs.SE
Qualitative analysis of the relationship between design smells and software engineering challenges
本研究开发了一种Java软件设计坏味检测工具,分析了409,539行代码,精确度达81.01%-93.43%,并揭示了设计坏味与不规律团队会议、范围蔓延等软件工程挑战的关联,为设计补救提供依据。
2023-10-22 cs.CY cs.SE
Defect prediction with bad smells in code
背景资料:软件中的缺陷预测对于开发项目来说是非常有益的,因为预测是非常有效的,并且容易出现缺陷的区域被正确地预测。获得有效的软件缺陷预测的关键因素之一是正确选择用于数据集准备的度量。目的:本研究的目的是验证,是否代码气味度量,收集使用Microsoft CodeAnalysis工具,添加到基本度量集,可以提高缺陷预测在工业软件开发项目。结果如下:我们验证了,如果数据集扩展的代码气味来源的指标,改变缺陷预测的有效性,通过比较预测结果的数据集与代码气味导向的指标。结果,我们观察到,当使用用难闻气味度量扩展的数据集时,缺陷预测的有效性只有很小的提高:平均准确度值增加了0.0091,并保持在误差范围内。然而,当仅使用基于代码气味的度量用于预测(没有基本度量集)时,这样的过程产生了令人惊讶的高准确度(0.8249)和F测量(0.8286)结果。我们还详细阐述了当使用两个不同的度量源来准备一组一致的数据时,我们观察到的数据异常和问题。结论:通过代码气味源度量扩展数据集不会显着提高预测效率。取得的结果并不能补偿收集额外指标所需的努力。然而,我们观察到,仅基于代码气味的缺陷预测仍然非常有效,特别是在几乎不使用其他度量的情况下可以使用。
2017-03-18 cs.SE
EnseSmells: Deep ensemble and programming language models for automated code smells detection
本文提出EnseSmells方法,通过融合结构特征与预训练语言模型的统计语义进行代码异味检测,在MLCQ数据集上相比现有方法提升5.98%至28.26%。
2025-02-07 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
"Project smells" -- Experiences in Analysing the Software Quality of ML Projects with mllint
TU Delft(代尔夫特理工大学);AI for Fintech Research, ING(荷兰国际集团金融科技人工智能研究部);ML Engineering Chapter, ING(荷兰国际集团机器学习工程部)
机器学习(ML)项目在开发和生产过程中遇到了传统软件应用程序的新挑战,尽管确保项目软件质量的既定原则和最佳实践仍然适用。虽然使用静态分析来捕捉代码气味已被证明可以提高软件质量属性,但这只是软件质量难题的一小部分,特别是在ML项目的情况下,因为它们面临额外的挑战,并且开发它们的数据科学家的软件工程(SE)经验较低。我们引入了项目气味的新概念,将项目管理中的缺陷视为ML项目中软件质量的更全面的视角。还实现了一个开源的静态分析工具mlint来帮助检测和缓解这些问题。我们的研究评估了ING(一家全球性银行和大型软件和数据密集型组织)行业背景下的项目气味这一新概念。我们还调查了这些项目气味对于概念验证与生产就绪ML项目的重要性,以及使用静态分析工具(如mlint)的障碍和好处。我们的研究结果表明,需要上下文感知的静态分析工具,适合项目的需求,在其当前的发展阶段,同时需要最小的配置工作从用户。
2022-01-20 cs.AI cs.SE
Towards Automated Detection of Inline Code Comment Smells
本文通过增强已标注行内注释数据集,比较七种ML模型与GPT 4的注释坏味分类性能,Random Forest以69%准确率和0.44 MCC建立基线。
2025-08-29 cs.SE
Empirical Characterization of Logging Smells in Machine Learning Code
Polytechnique Montréal(蒙特利尔理工学院)
本研究通过实证分析识别并描述机器学习系统中日志恶臭,旨在提供基于证据的理解,以改进日志记录实践。
2026-01-09 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
Crowdsmelling: The use of collective knowledge in code smells detection
代码气味被视为技术债务的主要来源,因此应该被检测和删除。然而,研究人员认为,代码气味检测过程的主观性是减轻气味感染代码问题的主要障碍。我们提出了基于监督机器学习技术的群众嗅觉方法,其中群众(软件开发人员)的智慧用于集体校准代码气味检测算法,从而减轻主观性问题。本文介绍了一个验证实验的结果,群众嗅的方法。在连续三年的软件工程课程的背景下,总共有大约100个团队的“人群”,每个团队平均有三名成员,将Java源代码中存在的3种代码气味(长方法,上帝类和功能嫉妒)分类。这些分类是用于训练六种机器学习算法的预言机的基础。生成并评估了100多个模型,以确定哪些机器学习算法在检测上述每种代码气味时具有最佳性能。God Class检测(Naive Bayes的ROC=0.896)和Long Method检测(AdaBoostM1的ROC=0.870)获得了良好的性能,但Feature Envy的性能要低得多(Random Forrest的ROC=0.570)。得到的结果表明,crowdsmelling是一种可行的方法,用于检测代码气味,但需要进一步的验证实验,以涵盖更多的代码气味,并增加外部有效性。
2020-12-23 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
Does Code Smell Frequency Have a Relationship with Fault-proneness?
本研究通过实证分析Apache和Eclipse生态系统中13种代码坏味频率与故障倾向性的相关性,发现低频坏味(如Anti Singleton)与故障倾向性强相关,高频坏味(如Complex Class)为中等相关,为重构优先级提供依据。
2023-04-28 cs.SE
Smells Depend on the Context: An Interview Study of Issue Tracking Problems and Smells in Practice
University of Hamburg(汉堡大学)
本文通过访谈研究,探讨了问题跟踪系统中问题和气味的上下文依赖性,揭示了团队在实际工作中遇到的挑战及潜在的工具解决方案。
2026-01-12 cs.SE
Automatic Detection of Five API Documentation Smells: Practitioners' Perspectives
API的学习和使用由官方文档支持。与源代码一样,API文档本身也是一个软件产品。一些研究结果表明,API文档中糟糕的设计会使API功能的重用变得困难。事实上,与代码气味或代码反模式类似,设计不良的API文档也会表现出“气味”。这种文档气味可以被描述为不好的文档风格,不一定会产生不正确的文档,但仍然使文档难以正确理解和使用。最近对API文档的研究集中在发现API文档中的内容不准确性,并使用外部资源(例如,众共享代码示例)。我们知道没有研究专注于自动检测API文档气味。本文有两个贡献。首先,我们通过查阅有关API文档表示问题的文献,生成了一个包含五种API文档气味的目录。我们创建了一个包含1,000个API文档单元的基准数据集,通过详尽和手动验证Java官方API参考和说明文档中五种气味的存在。其次,我们对21名专业软件开发人员进行了调查,以验证目录。开发人员一致认为,他们经常在API官方文档中遇到所有五种气味,其中95.2%的人报告说,文档气味的存在对他们的生产力产生了负面影响。参与者希望工具支持自动检测和修复API官方文档中的气味。我们开发了一套基于规则的,深度和浅层的机器学习分类器来自动检测气味。性能最好的分类器BERT是一种深度学习模型,其F1得分为0.75 - 0.97。
2021-02-16 cs.SE
SACS: A Code Smell Dataset using Semi-automatic Generation Approach
本文提出SACS数据集,通过半自动方法生成高质量代码异味样本,涵盖Long Method、Large Class和Feature Envy三种常见代码异味,为未来研究提供大规模基准。
2026-10-11 cs.SE
An Empirical Study on Predictability of Software Code Smell Using Deep Learning Models
BITS Pilani, Hyderabad Campus(BITS Pilani海得拉巴校区);Curtin University(科廷大学)
代码异味,类似于一种难闻的气味,是某种污染的表面迹象,但在软件编写实践方面。此度量表明代码中存在更深层次的问题,并且与具有可接受编码实践的经验丰富的软件开发人员突出的问题相关联。最近的研究经常观察到,具有代码气味的代码通常倾向于在软件开发周期中发生更改的可能性更高。在本文中,我们开发的代码气味预测模型的帮助下,从源代码中提取的特征来预测八种类型的代码气味。我们的工作还提出了应用数据采样技术来处理类不平衡问题和特征选择技术来找到相关的特征集。以前的研究利用了朴素贝叶斯和随机森林等技术,但没有探索深度学习方法来预测代码气味。总共有576个不同的深度学习模型使用上述特征和数据集进行了训练。该研究得出的结论是,使用合成少数民族过采样技术数据的深度学习模型在准确性方面给出了更好的结果,某些模型的准确性从88.47提高到96.84。
2021-08-08 cs.AI cs.LG cs.SE
Do the Test Smells Assertion Roulette and Eager Test Impact Students' Troubleshooting and Debugging Capabilities?
为了确保软件系统的质量,开发人员执行称为单元测试的活动,其中他们编写代码(称为测试用例)来验证组成系统的各个软件单元。与生产代码一样,测试用例也会受到不良编程实践的影响,这些实践被称为测试气味,会损害维护活动。大多数维护活动的一个重要部分是程序理解,这涉及到开发人员阅读代码以了解其行为,以修复问题或更新功能。在这项研究中,我们进行了一个对照实验,96名本科计算机科学的学生调查的影响,两种常见类型的测试气味,即断言轮盘赌和渴望测试,对学生的能力,调试和故障排除测试用例失败。我们的研究结果表明,当相关测试用例中存在气味时,学生需要更长的时间来纠正生产代码中的错误,特别是断言轮盘赌。我们设想我们的研究结果支持学术界更好地为学生提供编写和维护高质量测试用例的知识和资源。我们的实验材料可在线获取:https://wajdialjedaani.github.io/testsmellstd/
2023-03-07 cs.SE
Clean Code, Better Models: Enhancing LLM Performance with Smell-Cleaned Dataset
本文首次系统研究代码坏味对LLM输入输出质量的影响,提出清理工具SmellCC并构建清理后数据集微调模型,验证其在代码补全与搜索任务中的价值。
2025-08-16 cs.SE
Rapid quality assurance with Requirements Smells
在软件开发生命周期中,糟糕的需求质量会导致昂贵的后果,特别是如果迭代很长并且反馈很晚的话。%--发现问题越快,修复成本越低。这使得明确的需要一个轻量级的需求质量违规检测机制。我们的目标是一个轻量级的静态需求分析方法,允许快速检查时,立即写下来的要求。我们将代码气味的概念作为需求气味转移到需求工程中。为了评估的好处和局限性,我们定义的要求气味,实现我们的概念,在一个原型称为Smella的气味检测和应用Smella在一系列的情况下提供的三个工业和一所大学的背景。自动检测的平均精度为59%,平均召回率为82%,具有高变异。在实际环境中的评价表明,如质量缺陷的意识的增加的好处。然而,有些气味并不明显。轻量级的气味检测可以以合理精确的方式发现许多实际相关的需求缺陷。虽然有些气味需要更清楚地定义,但气味检测提供了一种有用的方法来支持需求工程中的质量保证,例如,作为评审的补充。
2016-11-27 cs.SE
Your Build Scripts Stink: The State of Code Smells in Build Scripts
North Carolina State University(北卡罗来纳州立大学)
本文通过实证研究分析构建脚本中的代码异味问题,开发静态分析工具Sniffer,识别13种代码异味类别,揭示Maven、Gradle、CMake和Makefile中常见异味及关联模式。
2025-10-31 cs.SE
How Do Communities of ML-Enabled Systems Smell? A Cross-Sectional Study on the Prevalence of Community Smells
本研究通过分析188个开源ML仓库,发现社区异味(如Prima Donna Effects和Sharing Villainy)的流行度及时间变化,为ML项目经理改善团队协调提供支持。
2025-04-24 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
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
Locating Community Smells in Software Development Processes Using Higher-Order Network Centralities
本文基于MOGen高阶网络模型开发了一组中心性度量,用于定位传统静态网络分析无法发现的软件开发过程中的社区异味,并在genua GmbH团队中成功识别出两个关键异味,得到访谈验证。
2023-09-14 cs.CY cs.SE cs.SI
A survey on test practitioners' awareness of test smells
开发测试代码可能是一项耗时的任务,通常需要大量的工作和成本,特别是在手动完成时。此外,在这个过程中,开发人员和测试人员很可能会采用糟糕的设计选择,这可能会导致在测试代码中引入所谓的测试气味。测试气味是实现或设计测试代码的糟糕解决方案。随着带有测试气味的测试代码的大小增加,这些测试可能会变得更加复杂,因此更难理解和正确地发展。因此,测试气味可能会对测试代码的质量和维护产生负面影响,也可能会损害整个软件测试活动。在此背景下,本研究旨在了解测试专业人员是否无意中插入测试气味。我们进行了一项专家调查,以分析一组测试气味的使用频率。来自不同公司的60名专业人士参加了调查。我们从文献中选择了14种广泛研究的气味,这些气味也在现有的测试气味检测工具中实现。产生的结果表明,有经验的专业人员在日常编程任务中引入测试气味,即使他们使用的是公司的标准化实践,而不仅仅是他们的个人假设。另一个相关的证据是,开发人员的专业经验不能被认为是在测试代码中插入测试气味的根本原因。
2020-03-12 cs.SE
Towards Semantic Detection of Smells in Cloud Infrastructure Code
云应用程序的自动化部署和管理依赖于其部署拓扑的描述,通常称为基础架构代码。随着应用程序及其部署模型的复杂性增加,开发人员无意中将软件气味引入到这些代码规范中,例如,违反良好的编码实践,模块化结构等。本文提出了一种知识驱动的方法,使开发人员能够识别部署描述中的上述气味。我们检测气味与SPARQL基于模式的OWL 2知识图谱捕获部署模型的规则。我们展示了我们的方法的可行性与原型和三个案例研究。
2020-07-04 cs.SE
The Influence of Code Smells in Efferent Neighbors on Class Stability
University of Auckland(奥克兰大学)
本研究探讨了代码异味在传出邻居中的影响对类稳定性的作用,考虑了代码异味的互相关和相互作用因素。
2026-10-26 cs.SE
Prevalence of Code Smells in Reinforcement Learning Projects
该研究从软件工程视角分析了24个流行的基于RL的Python项目,发现这些项目普遍存在代码坏味(平均占3.95%),尤其是长方法和长方法链,显著影响了项目的可维护性,并揭示了智能体定义与交互中的职责分离及抽象问题。
2023-08-03 cs.SE
Towards the Systematic Testing of Virtual Reality Programs (extended version)
软件测试是确保软件符合其规范的关键活动。然而,目前的软件测试活动往往是不完全有效的,当应用在特定的软件领域在虚拟现实(VR),具有几种新的类型的功能,如图像,声音,视频,和差异化的互动,这可能成为新的故障的来源。本文概述了可能对验证、确认和测试(VV&T)产生影响的主要VR特征。此外,它还分析了一些最成功的VR开源项目,以了解缺乏软件测试活动的危险。我们比较了开源VR项目中软件测试实践的现状,并评估了缺乏测试如何损害产品的开发。我们评估了代码气味的发生率,并验证了这些项目如何表现出故障的倾向。结果表明,软件测试的实践在虚拟现实应用程序的开发中还没有得到广泛的应用。研究还发现,VR项目中代码气味的发生率很高。关于故障倾向,结果显示,在VR项目中分析的类中,约有12.2%是故障倾向。关于软件测试技术在VR项目中的应用,据观察,只有少数项目关注为VR项目开发测试用例,可能是因为我们仍然没有必要的工具来帮助这一方向。关于气味,我们得出的结论是,在VR项目中有很高的发生率,特别是在实施气味方面,这种高发生率可能会对故障产生重大影响。最后,与故障倾向相关的研究指出,缺乏软件测试活动是项目成功的一个重大风险。
2020-09-18 cs.SE
Smelling out Code Clones: Clone Detection Tool Evaluation and Corresponding Challenges
软件克隆在过去的二十年里一直是一个活跃的研究领域。然而,尽管现在有许多克隆检测工具,但只有一小部分文献专注于工具评估,这实际上仍然是一个悬而未决的问题。这主要是由于标准的信息检索指标,如查全率和查准率,需要系统中已经存在的克隆的先验知识。检测工具通常还具有大量参数,这些参数难以针对特定软件系统上的最佳性能进行微调,并且由不同工具产生的不同输出增加了将一个工具与另一个工具进行比较的复杂性。在本文中,我们进一步探讨了工具评估仍然是一个开放挑战的原因,并介绍了旨在缓解这些问题的当前工具和框架,重点介绍了用于评估现代克隆检测工具的当前标准基准,并介绍了一种最近的方法旨在找到最佳工具配置。
2015-03-02 cs.SE