An Empirical Evaluation of Code Smell Detection in Angular Applications
Federal University of Ceará(塞阿拉联邦大学);Federal University of Bahia(巴伊亚联邦大学)
本文通过灰色文献综述识别出11种Angular代码异味,其中6种也存在于React系统中,展示了自动化工具在检测代码异味中的高准确性与有效性。
2026-04-30 cs.SE
Are Multi-language Design Smells Fault-prone? An Empirical Study
如今,现代应用程序是使用以不同程序设计语言编写的组件开发的。这些系统引入了若干优点。然而,随着语文数量的增加,与开发和维护这些系统有关的挑战也随之增加。在这种情况下,开发人员可能会引入设计气味(即,反模式和代码气味),这是糟糕的设计和实现选择的症状。设计气味被定义为糟糕的设计和编码选择,尽管满足功能需求,但会对软件程序的质量产生负面影响。对单语言系统的研究表明,设计气味的存在会影响代码的理解,从而使系统更难维护。然而,这些研究只针对单语言系统,并没有考虑不同的程序设计语言之间的相互作用。在本文中,我们提出了一种方法来检测JNI系统的上下文中的多语言设计气味。然后,我们调查这些设计气味的流行程度。具体来说,我们在9个开源JNI项目的98个版本中检测到15种设计气味。我们的研究结果表明,设计气味是普遍的,在选定的项目,并坚持在整个版本的系统。我们观察到,在分析的系统中,33.95%的文件涉及Java和C/C++之间的通信包含多语言设计气味的发生。有些气味比其他气味更普遍,例如,未使用的参数,太多的分散,未使用的方法声明。我们的结果表明,具有多语言设计气味的文件通常比没有这些气味的文件与错误的关联更大,并且特定气味比其他气味与错误倾向的关联更大。
2020-11-02 cs.SE
Empirical Study of the Docker Smells Impact on the Image Size
该研究实证分析14种Docker坏味道对镜像大小的影响,通过修复万余个开源Dockerfile中的坏味道验证体积增幅,结合开发者反馈证实修复坏味道的减容效果与接受度。
2024-03-12 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
Cache-Related Smells in GitLab CI/CD: Comprehensive Catalog, Automated Detection, and Empirical Evidence
University of Vienna(维也纳大学)
本文研究GitLab CI/CD中的缓存问题,提出十种缓存相关问题的全面目录,并通过CROSSER工具自动检测其中七种,实证显示这些问题在大量项目中普遍存在。
2026-04-20 cs.SE
Android Code Smells: From Introduction to Refactoring
面向对象代码气味是软件工程中的一个众所周知的概念,它指的是软件系统中常见的糟糕的设计和开发实践。随着移动应用程序的出现,研究社区已经将新的代码气味类别确定为移动特定的代码气味。这些代码气味是重要性能问题或瓶颈的症状。尽管对这些新的代码气味进行了多项实证研究,但它们的扩散和演变仍然不清楚。我们在这篇文章中提出了一个大规模的实证研究,检查Android代码气味的引入,演变和去除。这项研究依赖于从324个应用程序中提取的数据,对561个去除气味的提交的手动分析,以及与25个Android开发人员的讨论。我们的研究结果表明,手机特有的代码气味的高度扩散并不是释放压力的结果。我们还发现,这些代码气味的去除通常是维护活动的副作用,因为开发人员即使意识到它们也不会重构气味实例。
2020-10-14 cs.SE
Fixing Dockerfile Smells: An Empirical Study
背景容器化技术在DevOps工作流中被广泛采用。最常用的是Docker,它要求开发人员定义一个规范文件(Dockerfile)来构建用于创建容器的镜像。编写Dockerfiles有几个最佳实践规则,但开发人员并不总是遵循它们。违反这种做法,称为Dockerfile气味,可能会对Docker映像的可靠性和性能产生负面影响。之前的研究表明,Dockerfile气味广泛传播,并且缺乏支持开发人员修复它们的自动工具。然而,目前还不清楚开发人员修复了Dockerfile的哪些气味,以及开发人员愿意在多大程度上首先修复气味。Objective.我们的探索性研究有两个目的。首先,我们想了解Dockerfiles的气味受到开发人员的更多关注,即,在开源项目的历史上更频繁地被修复。其次,我们想检查开发人员是否愿意接受旨在修复Dockerfile气味的更改(例如,由自动化工具生成),以了解他们是否关心他们。法在研究的第一部分中,我们将在由940万个独特的Dockerfiles组成的最先进的数据集上评估Dockerfile气味的生存能力。我们依靠最先进的工具(hadolint)来检测Dockerfile的气味在Dockerfiles的演变过程中消失,我们将手动分析大量此类案例,以了解开发人员是否修复了它们,以及他们是否意识到了气味。在第二部分中,我们将在一组GitHub项目中检测有异味的Dockerfi…
2022-08-19 cs.SE
An empirical study into the relationship between class features and test smells
虽然大量的先前研究已经调查了生产代码的形式和性质,但相对较少关注测试代码的特性,特别是测试代码中的测试气味。在本文中,我们探讨了生产代码属性(在类级别)和一组测试气味之间的关系,在五个开源系统。具体来说,我们检查生产类的复杂性属性是否可以用作相关单元测试中测试气味存在的预测因子。我们的结果,来自975个生产类单元测试对的分析,表明生产类的圈复杂度(CC)和加权方法(WMC)是其相关的单元测试中存在气味的强有力的指标。生产类中方法缺乏内聚(LCOM)似乎也是测试气味存在的一个很好的指示器。也许更重要的是,所有这三个指标似乎都是特定测试气味的良好指标,特别是Eager Test和Duplicated Code。另一方面,遗传树的深度(DIT)与测试气味的发生率没有显着相关。这些结果对大规模软件开发具有重要意义,特别是在组织越来越多地使用、采用或改编开源代码作为其开发战略的一部分,并且需要确保类和方法尽可能简单的情况下。
2021-03-27 cs.SE
Logging Practices with Mobile Analytics: An Empirical Study on Firebase
软件日志在工业和开源项目中都有很大的价值。移动分析日志使开发人员能够从终端用户设备上运行的应用程序远程收集日志,但需要通过互联网记录日志并将其传输到集中式基础设施。本文使用广泛采用的移动分析日志库(即Firebase Analytics)来描述日志记录实践的第一步。我们通过研究代码库的演变,对Firebase Analytics在57个开源Android应用程序中的使用进行了实证评估,以了解:a)推动从业者在移动设备上采用日志记录实践的共同需求,以及b)开发人员使用本地和远程日志记录方式的差异。我们的研究结果表明,移动分析日志比传统的日志记录代码更不普及,维护更少。根据我们的分析,我们认为与传统日志记录相比,使用移动分析的日志记录更以用户为中心,后者主要用于记录调试信息。
2021-04-06 cs.SE
Empirical Investigation of the Relationship Between Design Smells and Role Stereotypes
本文通过统计分析和无监督学习方法,基于30个GitHub仓库的11,350个类,实证揭示了设计异味与角色定型之间的关联,发现桌面应用比移动应用更易出现设计异味,且服务提供者和信息持有者角色定型尤为突出,为软件团队预防和纠正设计异味提供了指导。
2024-06-27 cs.SE
An Empirical Study of Interaction Smells in Multi-Turn Human-LLM Collaborative Code Generation
本文通过分析真实用户-大语言模型交互数据,揭示多轮协作代码生成中的交互恶臭现象,提出InCE框架以提升交互质量。
2026-03-30 cs.SE
PyNose: A Test Smell Detector For Python
与生产代码类似,代码气味也出现在测试代码中,它们被称为测试气味。测试气味不仅对测试代码,而且对正在测试的生产代码都有不利影响。到目前为止,大多数关于测试气味的研究都集中在程序设计语言上,比如Java和Scala。然而,没有可用的自动化工具来支持Python测试气味的识别,尽管近年来Python的流行度迅速增长。在本文中,我们努力将研究扩展到Python,建立一个工具来检测这种语言的测试气味,并在Python项目中进行测试气味的实证分析。我们首先从现有的研究中收集了一系列测试气味,并选择了可以被认为与语言无关或在Python的标准Unittest框架中具有类似功能的测试气味。我们总共确定了17种不同的测试气味。此外,我们通过挖掘频繁的代码更改模式来搜索Python特定的测试气味,这些模式可以被视为修复或引入测试气味。基于这些变化,我们提出了我们自己的测试气味,称为次优断言。为了检测所有这些测试气味,我们开发了一个名为PyNose的工具,它是PyCharm(一个流行的Python IDE)的插件。最后,我们进行了一项大规模的实证调查,旨在分析Python代码中测试气味的流行程度。我们的研究结果表明,98%的项目和84%的测试套件在研究数据集中包含至少一个测试气味。我们提出的次优断言气味在多达70.6%的项目中被检测到,使其成为列表中有价值的补充。
2021-08-10 cs.SE
Predicting Software Defects through SVM: An Empirical Approach
软件缺陷预测是软件预防性维护的一个重要方面。许多技术已经被用来通过缺陷预测来提高软件质量。本文介绍了一种基于代码气味的机器学习算法--支持向量机(SVM)的缺陷预测方法。基于支持向量机的缺陷预测模型被用于预测Eclipse软件后续版本中的缺陷。结果表明气味在预测软件缺陷中的作用。结果可以进一步用作基线,以进一步研究气味在预测缺陷中的作用。
2018-03-08 cs.SE
From Anatomy to Smells: An Empirical Study of SKILL.md in Agent Skills
University of California, Irvine(加州大学尔湾分校)
对238个真实Agent技能的SKILL.md文件进行定性分析,构建语义组件分类法,通过多源文献综述识别最佳实践并定义技能气味,开发自动检测器发现超过99%的文件存在气味且难以消除。
2026-07-03 cs.SE
Watts This Smell: A Comprehensive Taxonomy of Software Energy Smells
Dalhousie University(达尔豪斯大学)
本文提出了一种全面的软件能耗异味分类,通过系统文献综述和雪球抽样,将320种低效模式分类为12种主要能耗异味和65种根本原因。通过实证验证,发现71%的样本存在多种共存的异味,内存相关异味的修复节能效果最高。
2026-07-09 cs.SE
Exploring the Effectiveness of LLMs in Automated Logging Generation: An Empirical Study
本文首次实证研究大语言模型在自动化日志语句生成中的有效性,构建 LogBench 数据集并评估 11 个 LLMs,发现其最高 BLEU 仅 0.249,同时揭示提示构造和上下文等因素的重要性,并为未来研究提供启示。
2024-04-01 cs.SE
Refactoring Assertion Roulette and Duplicate Assert test smells: a controlled experiment
测试气味会降低开发人员与测试代码交互的能力。重构测试代码提供了一种安全的策略来处理测试气味。然而,手动重构活动并不是一个简单的过程,它通常是乏味的并且容易出错。本研究旨在评估RAIDE,一个自动识别和重构测试气味的工具。我们提出了RAIDE的实证评估,在其中,我们分析了它在重构断言轮盘赌和重复断言测试气味的能力,并将结果与手动重构和最先进的方法进行了比较。结果表明,RAIDE提供了一个更快,更直观的方法来处理测试气味比使用自动化的气味检测工具结合手动重构。
2022-07-12 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
Do AI Coding Agents Log Like Humans? An Empirical Study
Queen’s University(女王大学);ETS - Québec University(魁北克大学ETS)
研究通过分析4550个代理拉取请求,发现代理在58.4%的仓库中更改日志频率低于人类,但日志密度更高。明确的日志指令稀缺且无效,人类在72.5%的情况下修复日志问题,表明自然语言指令存在不足,需引入确定性限制以确保一致性。
2026-04-10 cs.SE
Automated Logging Is Language-Sensitive: A Multilingual Benchmark and Empirical Study of LLMs
The Chinese University of Hong Kong(香港中文大学);Singapore Management University(新加坡管理大学)
本文通过多语言基准MultiLogBench研究自动化日志记录的跨语言有效性,发现框架锚点匹配是最敏感的组件,模型排名在顶级稳定,但需多语言验证以确保鲁棒性。
2026-08-06 cs.SE
An Empirical Study of Gemini 3 for Detecting Natural Language Test Smells in Manual Test Cases
UFCG(联邦农村塞阿拉大学);UFAL(阿拉戈斯联邦大学);University of Salerno(萨莱诺大学);IFAL(阿拉戈斯联邦学院)
研究使用 Gemini-3-Pro-Preview 通过整体测试用例分析策略检测手动测试用例中的七种测试异味,相比小型语言模型性能更优,并发现平均每步近一个异味。
2026-10-15 cs.SE
Characterizing Requirements Smells
本研究针对自然语言软件规格说明中的需求坏味问题,访谈安全关键领域企业的10名资深从业者,从频率、严重性等维度刻画12种需求坏味的特征,得出相关经验教训,为后续实证研究奠定基础。
2024-04-17 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
When Code Smells Meet ML: On the Lifecycle of ML-specific Code Smells in ML-enabled Systems
本研究针对ML赋能系统质量保障方法不足的问题,提出研究计划,将通过构建新型检测器CodeSmell,分析337个项目的40余万次提交,探究ML特定代码异味的 prevalence、引入移除机制及存活周期。
2024-03-13 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
Dependency Smells in JavaScript Projects
现代软件开发中的依赖管理为希望保持最新功能和修复同时确保向后兼容性的开发人员带来了许多挑战。项目维护人员选择了各种各样的,有时是相互冲突的方法来维护他们的依赖关系。选择不合适的方法可能会给项目带来bug和漏洞,引入破坏性的更改,导致无关的安装,并降低依赖性的可理解性,使其他人更难有效地做出贡献。在本文中,我们经验性地研究了经常性的依赖管理问题(依赖气味)的证据。我们查看了1,146个活动JavaScript存储库的数据集的提交数据,以分类,量化和理解依赖气味。通过对从业者的一系列调查,我们确定并量化了七种受欢迎程度不同的依赖气味,并调查了为什么它们会在整个项目历史中被引入。我们的研究结果表明,依赖气味在JavaScript项目中很普遍,80%的项目中出现了两种或两种以上不同的气味,但它们通常会感染项目的少数依赖项。我们的观察表明,依赖气味的数量往往会随着时间的推移而增加。实践者认为依赖气味会带来许多问题,包括安全威胁、bug、依赖破坏、运行时错误和其他维护问题。这些气味通常是在开发人员对依赖不当行为和npm生态系统的缺点做出反应时引入的。
2021-08-18 cs.SE
xNose: A Test Smell Detector for C#
本文针对 C# 测试坏味检测工具缺乏的问题,开发了 xNose 工具,识别 16 种测试坏味并分析其在 xUnit 项目中的分布,精确率和召回率分别达 96.97% 和 96.03%,以帮助开发者维护代码质量。
2024-05-07 cs.SE
Performance Smells in ML and Non-ML Python Projects: A Comparative Study
本研究对比分析了300个基于Python的GitHub项目,发现由于ML工作流的计算和数据密集型特性,ML项目比非ML项目更易出现性能坏味,且主要集中在数据处理阶段,为开发者提供了针对性的优化建议。
2025-04-28 cs.SE
Design Smells in Deep Learning Programs: An Empirical Study
Polytechnique Montréal(蒙特利尔理工学院)
如今,我们正在见证许多行业越来越多地采用基于深度学习(DL)的软件系统。设计深度学习程序需要构建深度神经网络(DNN),然后在数据集上训练它。这个过程要求开发人员进行多个架构(例如,层的类型、大小、数量和顺序)和配置(例如,优化器、正则化方法和激活函数)选择,这些选择影响DL模型的质量,并因此影响软件质量。一个未充分指定或设计不良的DL模型可能会成功地进行训练,但在部署到生产中时可能会表现不佳。DL程序中的设计气味是在DL组件开发期间做出的糟糕的设计和/或配置决策,这些决策可能对性能产生负面影响(即,预测精度),然后是基于DL的软件系统的质量。在本文中,我们提出了一个流行的DL架构,即深度前馈神经网络,这是广泛应用于工业应用的8个设计气味的目录。通过对DL设计现有文献的回顾和对659个存在性能问题和设计效率低下的DL程序的手动检查,确定了设计气味。气味是通过描述它们的上下文、后果和推荐的重构来指定的。为了提供经验证据的相关性和感知的影响,建议的设计气味,我们进行了一项调查,81 DL开发。一般来说,开发人员认为所提出的设计气味反映了设计或实现问题,一致性水平在47%和68%之间变化。
2021-07-07 cs.LG cs.SE
On the Interplay of Smells Large Class, Complex Class and Duplicate Code
坏味道被定义为描述代码中的潜在问题,可能指出重构的机会。一些实证研究强调,气味对理解和可维护性有负面影响。因此,已经提出了几种方法来检测和重组它们。然而,在源代码中不同类型的气味发生的相互关系的研究仍然缺乏,特别是那些集中在这种相互关系的量化。在这项工作中,我们的目标是了解和量化的可能的相互关系的气味大类- LC,复杂的类- CC和重复代码- DC。特别是,我们调查模式的LC和CC的存在或不存在的重复代码。我们对五个开源项目进行了定量研究,并进行了定性分析,以测量和了解特定气味的关联。作为主要结果之一,我们强调,有“发生模式”之间的这些气味,例如:无论是在复杂类或在大类和复杂类的共同出现,克隆往往是更普遍的高度复杂的类比不太复杂的类。发现的模式可以用于提高检测工具的性能,甚至有助于重构任务。
2021-07-20 cs.SE
Improving Change Prediction Models with Code Smell-Related Information
代码气味代表了开发人员在开发软件系统时应用的次优实现选择。代码气味的负面影响在过去已经得到了广泛的研究:除了开发人员的生产力和理解源代码的能力之外,研究人员还根据经验表明,代码气味的存在严重影响了受影响类的更改倾向。基于这些研究结果,在本文中,我们推测,代码气味相关的信息可以有效地利用,以提高性能的变化预测模型,即模型的目标是,向开发人员指出哪些类更有可能在未来发生变化,使他们可以采取预防性维护行动。具体来说,我们利用所谓的强度指数-一个先前定义的度量,捕捉代码气味的严重程度-并评估其贡献时,添加作为额外的功能的上下文中的三个国家的最先进的变化预测模型的基础上的产品,过程和开发人员为基础的功能。我们还比较了所提出的模型实现的性能与一个替代技术,考虑到以前定义的反模式度量,即一组指标计算考虑历史的文件中的代码气味。我们的研究结果报告说,(i)强度包括模型的预测性能在统计上优于基线,(ii)强度是一个更强大的度量相对于替代气味相关的。
2019-05-26 cs.SE
Towards Heuristics for Supporting the Validation of Code Smells
代码气味的识别在很大程度上被认为是一项主观任务。因此,现有的自动检测工具不足以处理任务中涉及的整个主观性,需要人工验证。然而,开发人员可能遵循不同但互补的观点来手动验证相同的代码气味。基于这种情况下,我们的研究旨在表征一个全面的和优化的一组特征,用于指导开发人员验证自动检测工具报告的代码气味的发生率。为此,我们进行了实证研究,与12个经验丰富的软件开发人员。在这项研究中,我们邀请开发人员单独验证来自开源Java项目的24个代码片段中代码气味的发生率。对于每个验证,开发人员应该提供支持他们决策的参数。研究结果显示,开发人员倾向于从不同的角度看待问题,即使他们同意代码气味的发生率。在将303个参数编码并提炼之后,我们组成了一组优化的验证项目,用于指导开发人员手动验证八种类型的代码气味的发生率:数据类,上帝类,投机性一般性,中间人,拒绝遗赠,原始痴迷,长参数列表和功能嫉妒。我们目前正计划与专家一起进行调查,以确定改进所提议的验证项目集的机会。
2021-10-06 cs.SE
Does Code Smell Frequency Have a Relationship with Fault-proneness?
本研究通过实证分析Apache和Eclipse生态系统中13种代码坏味频率与故障倾向性的相关性,发现低频坏味(如Anti Singleton)与故障倾向性强相关,高频坏味(如Complex Class)为中等相关,为重构优先级提供依据。
2023-04-28 cs.SE
Empirical Analysis on Effectiveness of NLP Methods for Predicting Code Smell
BITS Pilani(印度理工学院 Pilani 分校);BITS Pilani, Hyderabad Campus(印度理工学院 Pilani 分校海得拉巴校区)
代码气味是系统中固有问题的表面指标,通常是由于开发人员在开发阶段偏离了标准编码实践。研究发现,与不包含代码气味的代码相比,代码气味使代码更容易被要求修改和更正。在开发的早期阶段重新构造代码可以节省大量的工作,而这些工作需要以指数级增长的方式来解决这些代码气味所产生的问题。我们不使用传统的特征来检测代码气味,而是使用用户注释来手动构造特征来预测代码气味。我们使用三个极限学习机器内核超过629包,以确定八个代码气味,利用功能工程方面和使用采样技术。我们的研究结果表明,径向基函数核表现最好的三个核方法的平均精度为98.52。
2021-08-08 cs.AI cs.LG 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
Hearing the voice of experts: Unveiling Stack Exchange communities' knowledge of test smells
本研究通过分析Stack Exchange社区的讨论数据,探究开发者对测试坏味道的认知、对应的修正措施及重构挑战,发现开发者更关注他人实操经验,且更常询问测试坏味道的实践优劣而非重构建议。
2023-05-05 cs.SE
From Code Smells to Best Practices: Tackling Resource Leaks in PyTorch, TensorFlow, and Keras
Polytechnique Montréal(蒙特利尔理工学院);Ecole de Technologie Superieure – ETS(高等技术学院)
本文研究了PyTorch、TensorFlow和Keras中导致资源泄漏的代码异味,通过实证分析识别出30种PyTorch相关和16种TensorFlow/Keras相关异味,并提出50种最佳实践以减少资源泄漏和提高效率。
2025-11-26 cs.SE
On the Prevalence, Evolution, and Impact of Code Smells in Simulation Modelling Software
本文对 GitHub 上 155 个仿真项目和 327 个传统项目进行静态分析与版本演化研究,揭示仿真软件中代码异味的分布、存续特征及其与缺陷的关系。
2024-09-06 cs.SE
Comparing ML-Specific and General Python Code Smells Across Project Characteristics
通过分析279个GitHub上的开源机器学习项目,研究项目特征(如规模、年龄、贡献者、提交频率、CI/CD采用和领域)与ML特定及通用Python代码异味的关系,发现ML代码异味频率远低于通用Python异味,且提交频率和领域与ML特定质量显著相关,而通用Python异味与项目特征无关,表明需要针对不同异味类型制定定制化质量策略。
2026-06-01 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
Copy-and-Paste? Identifying EVM-Inequivalent Code Smells in Multi-chain Reuse Contracts
本文首次实证研究多链复用合约中的EVM不等价代码异味,定义六类异味并开发EquivGuard工具,通过静态污点分析和符号执行实现自动检测,在六大区块链90余万份合约中发现平均17.70%的异味出现率,警示开发者避免复制粘贴式复用。
2025-04-11 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
AI builds, We Analyze: An Empirical Study of AI-Generated Build Code Quality
University of Michigan-Deaborn(密歇根大学迪尔伯恩分校);University of Michigan-Flint(密歇根大学弗林特分校)
本研究通过分析AI生成的构建代码质量,探讨其在构建系统中的影响,并发现AI生成代码既可能引入质量问题,也部分消除了现有问题,同时大部分代理提交被开发者接受。
2026-01-23 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
Studying Logging Practice in Machine Learning-based Applications
日志记录是传统软件开发中的常见做法。已经进行了几项研究工作来调查传统软件系统中日志记录实践的不同特征(例如,Android应用程序、JAVA应用程序、C/C++应用程序)。如今,我们目睹了越来越多的基于机器学习的应用(基于ML的应用)的发展。今天,有许多流行的库可以促进和促进这些应用程序的开发,其中我们可以提到:Pytorch,Tensorflow,Theano,MXNet,Scikit-Learn,Caffe和Keras。尽管ML很流行,但我们对ML应用程序中的日志记录实践并没有清晰的了解。在本文中,我们的目标是填补这一知识空白,并帮助ML从业者了解基于ML的应用程序中日志记录的特征。特别是,我们进行了实证研究110开源ML为基础的应用程序。通过定量分析,我们发现,在基于ML的应用程序中的日志记录的做法是不那么普遍的传统应用程序,包括Android,JAVA和C/C++应用程序。此外,在基于ML的应用程序中,大多数日志记录语句都在info和warn级别,与传统应用程序相比,在C/C++应用程序中,info是日志记录语句的主要部分,而在Android应用程序中,debug、error级别构成了日志记录语句的主要部分。我们还对日志语句的随机样本进行了定量和定性分析,以了解ML开发人员将大多数日志语句放在哪里,并检查他们为什么以及如何使用日志。这些分析导致了以下观察结果:(i)ML开发…
2023-01-10 cs.SE
The Sense of Logging in the Linux Kernel
日志记录在软件工程中起着至关重要的作用,因为它是执行各种任务(包括调试、性能分析和异常检测)的关键。尽管日志数据很重要,但日志做法仍然缺乏共同准则和最佳做法。最近的研究调查了C/C++和Java开源系统中的日志记录。在本文中,我们补充这些研究进行了第一次实证研究,在Linux内核中的日志记录的做法,在计算机行业中最详细的开源开发项目之一。我们分析了22个Linux版本,重点关注三个主要方面:Linux中日志记录的普遍性,日志记录语句的更改类型以及这些更改背后的原理。我们的研究结果表明,日志代码占Linux内核源代码总数的3.73%,分布在72.36%的Linux文件中。我们还发现,Linux子系统及其组件之间的日志记录语句的分布差异很大,没有明显的原因,这表明开发人员在日志记录时使用不同的标准。此外,我们观察到v4.3和v5.3之间日志减少的使用缓慢下降了9.27%。日志代码中的大多数更改都是为了修复语言问题、修改日志级别以及升级日志代码以使用新的日志库,总体目标是提高日志输出的精度和一致性。许多建议都来自我们的发现,例如使用静态分析工具来检测日志相关问题,采用常见的写作风格来提高日志消息的质量,制定公约来指导开发人员选择日志级别,建立审查会议来审查日志代码,等等。
2022-08-13 cs.SE
Follow Your Nose -- Which Code Smells are Worth Chasing?
The Hebrew University(希伯来大学)
本文实证研究了代码异味与代码质量的因果关系,通过分析677个GitHub仓库中31,687个Java文件,发现CheckStyle检测的151种异味中不到20%具有潜在因果性,开发者往往移除容易而非有效的异味。
2024-01-15 cs.LG cs.SE
An Empirical Study on Logging Evolution On Stack Overflow: Trends, Topics, and Challenges
Department of Computer Engineering and Software Engineering Polytechnique Montreal(蒙特利尔理工大学计算机工程与软件工程系)
基于 Stack Overflow 上的 216,094 篇帖子,使用大语言模型分类方法,识别出 11 个日志相关主题,并发现容器化环境中的日志记录是最具挑战性的主题。
2026-05-27 cs.PL cs.SE
Detecting UX smells in Visual Studio Code using LLMs
LIFIA, Fac. Informática, Univ. Nac. La Plata(拉普拉塔国立大学计算机科学学院 LIFIA);LIFIA, Fac. Informática, Univ. Nac. La Plata & CONICET(拉普拉塔国立大学计算机科学学院 LIFIA 与阿根廷国家科学研究委员会)
本文提出利用LLMs检测Visual Studio Code中用户体验问题的方法,通过分析用户报告的问题发现信息性、清晰性、直观性和效率是主要的用户体验问题所在。
2026-02-25 cs.HC cs.SE
GLITCH: Automated Polyglot Security Smell Detection in Infrastructure as Code
基础架构即代码(IaC)是通过可编程配置文件(也称为IaC脚本)管理IT基础架构的过程。与其他软件工件一样,IaC脚本可能包含安全气味,这是可能导致安全漏洞的编码模式。存在用于检测IaC脚本中安全气味的自动分析工具,但它们专注于特定技术,如Puppet,Ansible或Chef。这意味着,当在其中一个工具中实现新气味的检测时,它不能立即用于其他工具支持的技术-唯一的选择是重复工作。本文提出了一种方法,使一致的安全气味检测不同的IaC技术。我们进行了一项大规模的实证研究,分析了包含196,755个IaC脚本和12,281,251个IaC脚本的三个大型数据集的安全气味。我们发现,所有类别的安全气味在所有数据集,我们确定了一些气味,可能会影响许多IaC项目。为了进行这项研究,我们开发了GLITCH,这是一种新的技术不可知的框架,通过将IaC脚本转换为中间表示,可以定义不同的安全气味检测器,从而实现自动化的多语种气味检测。GLITCH目前支持在Ansible、Chef或Puppet编写的脚本中检测九种不同的安全气味。我们将GLITCH与最先进的安全气味探测器进行比较。实验结果表明,GLITCH不仅可以减少编写多种IaC技术的安全气味分析的工作量,而且比当前最先进的工具具有更高的准确率和召回率。
2022-09-07 cs.CR 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
Making OpenAPI Documentation Agent-Ready: Detecting Documentation and REST Smells with a Multi-Agent LLM System
Sidia Institute of Technology(西迪亚理工学院)
研究通过多代理LLM系统检测OpenAPI文档和REST相关问题,发现2450个气味,揭示微服务环境中结构有效性不保证语义准备性,推动API治理流程改进。
2026-05-14 cs.SE
Further Investigation of the Survivability of Code Technical Debt Items
背景:技术债务(TD)讨论了为满足软件开发速度需求而做出的次优决策的负面影响。代码技术债务项(TDI)是TD的原子元素,可以在代码工件中观察到。开源系统的实证结果表明,代码气味,这只是一种类型的TDI,是如何引入和“生存”在发布周期。然而,关于代码气味的生存性的结果是否适用于其他类型的代码TDI(即,缺陷和漏洞)和工业环境中。目标:通过分析Apache基金会的两个工业案例和31个开源系统进行实证研究,了解代码TDI的生存能力。方法:我们分析了SonarQube检测到的133,670个代码TDI(35,703个来自工业系统)(193,196次提交),以使用生存性模型评估其生存性。结果如下:一般来说,代码TDI往往会在开源系统中保留并停留很长时间,而在工业系统中它们会更快地被删除。超过一定阈值的代码TDI往往会保持更长的时间,这证实了以前的结果。我们的研究结果还表明,bug往往会更快地被删除,而代码气味和漏洞往往会存活更长时间。
2021-11-02 cs.SE
Security Smells in Ansible and Chef Scripts: A Replication Study
上下文:安全气味是重复出现的编码模式,表明存在安全漏洞,需要进一步检查。由于基础设施即代码(IaC)脚本(如Ansible和Chef脚本)用于大规模配置基于云的服务器和系统,IaC脚本中的安全气味可用于使恶意用户能够利用所配置系统中的漏洞。目标:本文的目标是通过对Ansible和Chef脚本中的安全气味进行实证研究,帮助从业者在将基础设施开发为代码脚本时避免不安全的编码实践。方法学:我们进行了一项复制研究,我们对1,956个IaC脚本进行了定性分析,以确定用两种语言编写的IaC脚本的安全气味:Ansible和Chef。我们构建了一个名为Security Linter for Ansible and Chef scripts(SLAC)的静态分析工具,用于自动识别从813个开源软件库中收集的50,323个脚本中的安全气味。我们还提交了1,000个随机选择的气味事件的错误报告。结果:我们发现了两个在以前的工作中没有报道的安全气味:在case语句中缺少默认值和没有完整性检查。通过应用SLAC,我们识别出46,600次安全气味,其中包括7,849个硬编码密码。我们观察到94个bug报告中有65个是一致的,这表明Ansible和Chef脚本的安全气味与从业者之间的相关性。结论:我们观察到安全气味在Ansible和Chef脚本中普遍存在,类似于Puppet脚本。我们建议从业者使用(i)代码审查…
2020-06-20 cs.CR cs.SE