Operation-based Refactoring-aware Merging: An Empirical Evaluation
在版本控制系统中处理合并冲突对于软件开发人员来说是一项具有挑战性的任务。解决合并冲突是一个耗时且容易出错的过程,会分散开发人员对重要任务的注意力。最近的工作表明,重构经常涉及合并冲突,并且与重构相关的冲突往往更大,使它们更难解决。在文献中,有两种重构感知的合并技术声称可以自动解决重构相关的冲突;然而,这两种技术从未进行过实证比较。在本文中,我们提出了RefMerge,一个复兴的基于Java的设计和实现的第一种技术,这是一个基于操作的重构感知合并算法。我们将RefMerge与Git和最先进的基于图形的重构感知合并工具IntelliMerge进行比较,这些工具来自20个开源项目的2,001个合并场景,其中包含与重构相关的冲突。我们发现,RefMerge解决或减少了497(25%)合并方案中的冲突,而增加冲突,只有214(11%)的情况下。另一方面,我们发现IntelliMerge解决或减少了478(24%)合并方案中的冲突,但增加了597(30%)合并方案中的冲突。此外,我们还对三种合并算法之间的差异进行了定性分析,并提供了每个工具的优点和缺点的见解。我们发现,虽然IntelliMerge在排序和格式冲突方面做得很好,但它在类级别的重构和具有几个重构的场景中挣扎。另一方面,RefMerge对合并场景中的重构数量有弹性,但我们发现RefMerge在反转与移动相关的重构时会引入冲突。
2022-08-09 cs.SE
An Empirical Study on Refactoring-Inducing Pull Requests
背景资料:基于拉式的开发塑造了现代代码审查(MCR)的实践,其中审查者可以通过拉式请求(PR)中的注释和提交来贡献代码改进,例如重构。过去的MCR研究统一对待所有的PR,不管它们是否引起重构。我们将PR定义为重构诱导,即在初始提交后执行重构编辑,这是审阅者之间讨论的结果,也是PR开发人员自发采取的行动。目的:这项混合研究(定量和定性)探讨了代码审查相关的方面,旨在表征重构诱导PR。方法:我们假设,重构诱导PR有不同的特点比非重构诱导的,因此值得特别关注和治疗的研究人员,从业者和工具建设者。为了研究我们的假设,我们从GitHub中挖掘了1,845个Apache合并PR的样本,挖掘了这些PR中的重构编辑,并对重构诱导PR和非重构诱导PR进行了比较研究。我们还手动检查了2,096条评论,并从228个重构诱导PR中检测到1,891个重构。结果如下:我们在我们的样本中发现了30.2%的重构诱导PR,它们在提交数量、代码流失、文件更改数量、审查评论数量、讨论长度和合并时间方面与非重构诱导PR有显著差异。然而,我们没有发现统计证据表明,评论者的数量与重构诱导有关。我们的定性分析显示,至少有一个重构编辑引起的审查133(58.3%)的重构诱导PR检查。结论:我们的研究结果为研究人员,从业者和工具构建者提供了方向,以改善基于拉式代码审查的实践。
2021-08-24 cs.SE
An Empirical Study of Refactoring Engine Bugs
本文首次系统分析了Eclipse、IntelliJ IDEA和Netbeans三种重构引擎的缺陷,按类型、症状、原因和触发条件归纳出12项发现,并在最新版本中发现130个新缺陷,为缺陷检测与调试提供指导。
2024-09-22 cs.SE
An Empirical Study on the Code Refactoring Capability of Large Language Models
本研究实证评估StarCoder2在30个Java项目中的代码重构能力,发现其比开发者多减少20.1%代码坏味道,结合一次性提示与多重构方案可显著提升性能。
2024-11-04 cs.SE
An Empirical Study on the Impact of Change Granularity in Refactoring Detection
School of Computing, Institute of Science Tokyo(东京科学大学计算学院)
通过实证研究32个Java项目,发现跨提交的粗粒度重构和短暂重构普遍存在,并分析了其特征、成因及提交消息关联,建议扩展检测器以识别粗粒度重构。
2026-09-09 cs.SE
Code Review Practices for Refactoring Changes: An Empirical Study on OpenStack
现代代码审查是工业和开源项目中广泛使用的技术,用于提高软件质量,共享知识,并确保遵守编码标准和指南。在代码评审期间,开发人员可能会在合并代码库中的代码更改之前讨论重构活动。到目前为止,代码审查已被广泛研究,以探索其一般挑战,最佳实践和结果,以及社会技术方面。然而,很少有人知道重构是如何被审查的,以及开发人员在审查重构代码时关心什么。因此,在这项工作中,我们提出了一个定量和定性的研究,以了解什么是主要的标准,开发人员依靠制定一个决定接受或拒绝提交的重构代码,是什么使这个过程具有挑战性。通过对分布在OpenStack开源项目中的11,010个重构和非重构审查的案例研究,我们发现,就代码审查工作而言,与重构相关的代码审查需要更长的时间才能得到解决。此外,在对重构代码审查讨论的重要样本进行主题分析后,我们建立了一个由28个重构审查标准组成的综合分类法。我们设想我们的研究结果重申了开发准确和有效的工具和技术的必要性,这些工具和技术可以帮助开发人员在重构的情况下进行审查。
2022-03-27 cs.SE
How Do I Refactor This? An Empirical Study on Refactoring Trends and Topics in Stack Overflow
作为软件维护和演化的重要组成部分,重构由开发人员执行,无论技术或领域如何,以提高系统的内部质量,并减少其技术债务。然而,选择合适的重构策略并不总是那么简单,这导致开发人员寻求帮助。虽然重构的研究已经很成熟,有几项研究在检测重构机会和建议适当的代码更改之间进行了改变,但对它们在实践中的采用知之甚少。分析开发人员的认知对于更好地理解开发人员认为代码中存在的问题以及他们如何处理这些问题至关重要。此外,需要通过提取更适合开发人员实际情况的常见重构意图,来弥合研究重构与实际应用之间的差距。在这项研究中,我们通过一系列定量和定性的实验,分析重构讨论堆栈溢出。我们的研究结果表明,堆栈溢出是由一组不同的开发人员用于重构援助的各种技术。我们的观察显示了开发人员在重构时通常需要帮助的五个方面--代码优化、工具和IDE、体系结构和设计模式、单元测试和数据库。我们设想我们的研究结果更好地桥接重构的传统(或学术)方面与其现实世界的适用性之间的支持,包括更好的工具支持。
2021-10-23 cs.SE
Making refactoring decisions in large-scale Java systems: an empirical stance
决定重构哪些类充满了困难。识别候选类的问题变得尖锐时,面对大型系统,包括数百或数千类。在本文中,我们描述了一个度量的关键类,因此重构的候选人,可以确定。从三个大型Java系统的源代码中提取了量化两种形式的耦合,继承和聚合,以及其他两个类的功能(方法和属性的数量)的使用的措施。我们的研究表明,从其他研究领域的度量可以适应软件工程过程。每个系统在所确定的关键类别方面存在很大差异,因此这些系统之间重构这些类别的机会也各不相同。
2003-06-16 cs.SE
How do Agents Refactor: An Empirical Study
University of Alberta(阿尔伯塔大学)
通过对比86个Java项目中智能体与开发者的重构拉取请求,发现智能体重构以注释修改为主,而Cursor是唯一显著增加代码味道的模型。
2026-05-24 cs.SE
Agentic Refactoring: An Empirical Study of AI Coding Agents
Nara Institute of Science and Technology(奈良先端科学技术大学院大学);Queen's University(女王大学)
本文基于 AIDev 数据集对真实 Java 项目中 AI 智能体生成的重构进行大规模实证研究,揭示了智能体重构以低层次一致性编辑为主、主要关注可维护性与可读性,并能带来小幅但显著的结构质量改进。
2026-10-28 cs.SE
An Empirical Study on the Impact of Refactoring Activities on Evolving Client-Used APIs
背景:重构被认为是维护不断发展的软件系统的有效实践。对于软件库,我们研究了库开发人员如何重构他们的应用程序编程接口(API),特别是当它通过破坏库的API而影响客户端用户时。目标:我们的工作旨在了解使用库API的客户端如何受到重构活动的影响。我们的目标是可能影响更多图书馆客户端用户的流行图书馆。方法:我们根据客户端使用情况(称为客户端使用的API)来区分库API,以了解API损坏与重构的相关程度。我们基于工具的方法允许跨八个图书馆进行大规模研究(即,共有183个连续版本),客户项目约900个。结果:我们发现库维护者不太可能破坏客户端使用的API类。定量地说,我们发现重构活动破坏了不到37%的客户端使用的API。在更定性的分析中,我们展示了两个记录在案的案例,其中非重构API破坏性更改是由其他维护问题引起的(即,bug修复和新特性),并涉及更复杂的重构操作。结论:使用我们的自动化方法,我们发现库开发人员不太可能破坏API,并且在解决这些维护问题时倾向于破坏客户端使用的API。
2017-09-28 cs.SE
How does Object-Oriented Code Refactoring Influence Software Quality? Research Landscape and Challenges
软件重构旨在提高软件质量和开发人员的生产力。在过去的二十年里,已经进行了大量的实证研究,调查重构活动对软件质量的影响。目的:本研究旨在对现有的面向对象代码重构活动对软件质量属性影响的实证研究进行全面系统的映射研究。方法:我们遵循多阶段审查过程,选择了截至2017年12月发表的142项主要研究。根据几个方面对选定的初步研究进行进一步分类,以回答为这项工作定义的研究问题。此外,本研究亦利用投票统计法,将实证结果与原始研究的分析结果结合起来。结果如下:研究结果表明,在学术环境中进行的研究发现,重构对软件质量的积极影响比在行业中进行的研究。一般来说,重构活动导致所有质量属性的改善或降低,除了内聚性,复杂性,继承性,故障倾向和功耗属性。此外,个别的重构活动对主要研究中探索的大多数质量属性有不同的影响,这表明重构并不总是改善所有的质量属性。结论:本研究指出了几个需要进一步调查的开放问题,例如,缺乏工业验证,重构活动覆盖面较小,工具支持有限等。
2019-08-15 cs.SE
Deciphering Refactoring Branch Dynamics in Modern Code Review: An Empirical Study on Qt
本研究通过定量与定性分析 Qt 项目中 2,154 次审查,揭示了 Refactor 分支中重构代码审查的流程、开发者关注点及面临的挑战,并构建了包含 12 项审查标准的分类体系。
2025-01-30 cs.SE
An Empirical Study on the Impact of Code Duplication-aware Refactoring Practices on Quality Metrics
本文通过分析128个开源Java项目中332个重构提交,实证研究了代码重复消除重构操作对设计质量指标的影响,发现多数指标能捕捉开发者去重意图,但部分指标未能完全反映。
2025-02-06 cs.SE
In Search of Metrics to Guide Developer-Based Refactoring Recommendations
本文提出一项实证研究,通过量化产品和过程度量标准来把握开发者执行重构的动机,从而为基于开发者的重构推荐器设计提供度量标准目录。
2024-07-25 cs.SE
State of Refactoring Adoption: Better Understanding Developer Perception of Refactoring
本研究提出自我确认重构(SAR)概念与分类识别方法,结合评审调查和工业案例,揭示重构评审难点,给出文档化流程建议,为重构相关研究与实践提供支持。
2023-06-09 cs.SE
The Effectiveness of Supervised Machine Learning Algorithms in Predicting Software Refactoring
重构是在不改变软件外部行为的情况下改变软件内部结构以提高其质量的过程。经验研究一再表明,重构对软件系统的可理解性和可维护性有积极的影响。然而,在执行重构活动之前,开发人员需要识别重构机会。目前,重构机会识别严重依赖于开发人员的专业知识和直觉。在本文中,我们调查的有效性机器学习算法在预测软件重构。更具体地说,我们训练了六种不同的机器学习算法(即,逻辑回归,朴素贝叶斯,支持向量机,决策树,随机森林和神经网络),数据集包含来自Apache,F-Droid和GitHub生态系统的11,149个真实项目的超过200万次重构。结果模型预测了类、方法和变量级别的20种不同重构,准确率通常高于90%。我们的研究结果表明,(i)随机森林是预测软件重构的最佳模型,(ii)过程和所有权度量似乎在创建更好的模型中发挥了至关重要的作用,(iii)模型在不同的环境中推广良好。
2020-09-11 cs.SE
How Do Developers Structure Unit Test Cases? An Empirical Study from the "AAA" Perspective
本研究基于435个真实单元测试用例,实证分析了开发者遵循AAA模式的情况,发现了三种反模式和四种设计缺陷,并通过提交18项重构提案获得78%正面反馈,揭示了投资回报率是开发者重构的关键考量。
2025-01-31 cs.SE
RePOR: Mimicking humans on refactoring tasks. Are we there yet?
重构是一种维护活动,旨在提高设计质量,同时保持系统的行为。已经提出了几种(半)自动化的方法,以支持开发人员在此维护活动的基础上,纠正反模式,这是“穷人”的解决方案,经常性的设计问题。然而,很少有定量的证据存在的影响,自动重构的代码对程序的理解,在这种情况下,自动重构可以有效的手动重构。利用RePOR,一种基于偏序约简技术的自动重构方法,我们进行了一项实证研究,以调查自动重构代码结构是否会影响系统在理解任务中的可理解性。(1)我们调查了80名开发人员,要求他们从一组20个重构更改中识别出它们是由开发人员还是由工具生成的,并根据它们的设计质量对重构更改进行评级;(2)我们要求30名开发人员在10个由自由职业者或自动重构工具重构的系统上完成代码理解任务。为了使比较公平,对于引入新代码实体的重构操作子集,只向从业者提供合成标识符。我们使用NASA任务负荷指数来衡量开发人员的表现,包括他们的努力、他们执行任务所花费的时间以及他们正确答案的百分比。我们的研究结果表明,尽管目前的技术限制,这是合理的期望重构工具,以匹配开发人员的代码。
2019-05-17 cs.SE
Do Design Metrics Capture Developers Perception of Quality? An Empirical Study on Self-Affirmed Refactoring Activities
背景重构是软件维护中的一项关键任务,通常用于执行最佳设计和实现实践或处理设计缺陷。一些研究试图通过挖掘软件存储库来检测重构活动,从而收集、分析和获得有关软件项目中重构实践的可操作数据驱动见解。瞄准我们的目标是确定,在文献中提出的各种质量模型,更符合开发人员的质量优化的愿景,当他们明确提到,他们正在重构,以改善他们。法我们从3,795个策划的开源Java项目中提取了大量与设计相关的重构活动,这些活动由开发人员在日常更改中应用和记录。特别是,我们提取了一个大规模的语料库的结构度量和反模式增强的变化,从中我们确定了1,245质量改进提交与其相应的重构操作,由软件工程师认为。此后,我们实证分析这些重构操作对一组常见的最先进的设计质量指标的影响。结果对所得结果的统计分析表明:(i)一些最先进的指标比其他指标更受欢迎;(ii)一些指标比其他指标更受重视。结论.我们验证了有各种各样的结构度量,可以代表不同程度的改进和软件质量的退化的内部质量属性。映射到主要质量属性的大多数度量确实捕获了提交消息中报告的开发人员质量改进的意图。
2019-07-10 cs.IR cs.SE
Why We Refactor? Confessions of GitHub Contributors
重构是一种广泛的实践,可以帮助开发人员提高代码的可维护性和可读性。然而,有一个有限数量的研究经验调查背后的实际动机,具体的重构操作应用的开发人员。为了填补这一空白,我们监控了GitHub上托管的Java项目,以检测最近应用的重构,并要求开发人员解释他们决定重构代码的原因。通过对收集到的回复进行主题分析,我们为12种著名的重构类型编制了一个44种不同动机的目录。我们发现,重构活动主要是由需求的变化驱动的,而很少是由代码气味驱动的。提取方法是最通用的重构操作,有11种不同的用途。最后,我们发现有证据表明开发人员使用的IDE会影响自动化重构工具的采用。
2016-07-08 cs.SE
Relating Complexity, Explicitness, Effectiveness of Refactorings and Non-Functional Requirements: A Replication Study
本研究通过将项目数翻倍并验证8,408个重构实例复现Soares等人的研究,考察SAR的复杂性、显式性、有效性及其与非功能需求的关系,发现显式重构更复杂但通常更利于内部质量。
2025-05-12 cs.SE
Android Code Smells: From Introduction to Refactoring
面向对象代码气味是软件工程中的一个众所周知的概念,它指的是软件系统中常见的糟糕的设计和开发实践。随着移动应用程序的出现,研究社区已经将新的代码气味类别确定为移动特定的代码气味。这些代码气味是重要性能问题或瓶颈的症状。尽管对这些新的代码气味进行了多项实证研究,但它们的扩散和演变仍然不清楚。我们在这篇文章中提出了一个大规模的实证研究,检查Android代码气味的引入,演变和去除。这项研究依赖于从324个应用程序中提取的数据,对561个去除气味的提交的手动分析,以及与25个Android开发人员的讨论。我们的研究结果表明,手机特有的代码气味的高度扩散并不是释放压力的结果。我们还发现,这些代码气味的去除通常是维护活动的副作用,因为开发人员即使意识到它们也不会重构气味实例。
2020-10-14 cs.SE
Search Budget in Multi-Objective Refactoring Optimization: a Model-Based Empirical Study
该研究针对多目标软件模型重构优化中搜索预算(时间限制)的影响展开实证,通过两个不同案例测试三种遗传算法,发现预算限制会降低解质量,且算法选择对结果有关键作用。
2022-12-16 cs.SE
Build Code Needs Maintenance Too: A Study on Refactoring and Technical Debt in Build Systems
本文研究了开源项目中构建脚本的重构及其对技术债务的解决情况,提出了首个构建系统重构分类法,并开发了基于GPT-4o的自动化检测工具BuildRefMiner。
2025-04-02 cs.SE
MANTRA: Enhancing Automated Method-Level Refactoring with Contextual RAG and Multi-Agent LLM Collaboration
MANTRA是一个基于LLM智能体的方法级重构框架,结合上下文RAG、多智能体协作和口头强化学习,在703个实例上达到82.8%的成功率,显著优于基线,并被认为与人类代码同等可读可重用。
2025-03-27 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
Together We Go Further: LLMs and IDE Static Analysis for Extract Method Refactoring
本文提出结合LLM与IDE静态分析的Extract Method重构方法EM-Assist,通过消除LLM幻觉并利用程序切片排序建议,在1752个场景中召回率达53.4%,获81.3%工业开发者认可。
2024-04-24 cs.SE
Hearing the voice of experts: Unveiling Stack Exchange communities' knowledge of test smells
本研究通过分析Stack Exchange社区的讨论数据,探究开发者对测试坏味道的认知、对应的修正措施及重构挑战,发现开发者更关注他人实操经验,且更常询问测试坏味道的实践优劣而非重构建议。
2023-05-05 cs.SE
Impermanent Identifiers: Enhanced Source Code Comprehension and Refactoring
本文针对当代软件开发挑战提出以临时标识符为核心的创新代码增强方法,通过实证检验评估其在开发者中的采用与接受度,为代码增强开辟新方向并推动软件开发实践改进。
2024-06-14 cs.SE
Proactive Empirical Assessment of New Language Feature Adoption via Automated Refactoring: The Case of Java 8 Default Methods
随着时间的推移,程序设计语言和平台不断改进,有时会产生新的语言功能,提供许多好处。然而,尽管有这些好处,开发人员可能并不总是愿意在他们的项目中采用它们。在本文中,我们描述了一个实证研究,我们评估通过一个特定的新的语言功能。研究开发人员如何使用(或不使用)新的语言功能在程序设计语言研究和工程中很重要,因为它使设计人员了解语言的可用性,从而用该语言创建有意义的程序。反过来,这些知识可以推动该领域未来的创新。在这里,我们探索Java 8默认方法,它允许接口包含(实例)方法实现。默认方法可以简化接口的演化,使某些普遍存在的设计模式变得多余,并提高模块性和可维护性。这项工作的重点是通过科学的方法和新的技术,发现开发人员发现这些构造有用的情况,以及它们没有的原因。虽然有几项研究围绕着评估新的语言特征,但据我们所知,这种结构以前没有被考虑过。尽管有这些好处,但我们发现开发人员并不是在所有情况下都采用默认方法。我们的研究包括提交pull request,将语言特性引入19个真实世界的开源Java项目,而不改变原始程序语义。这种新颖的评估技术是主动的,因为采用是由自动重构方法驱动的,而不是等待开发人员自己发现和集成功能。通过这种方式,我们提出了更早而不是更晚有效使用语言功能的最佳实践和模式,并且能够指导(不久的)未来的语言发展。我们预见这种技术在评估其他新的语言特性、设计模式和其他编程习惯方面是有用…
2018-03-27 cs.PL cs.SE
How Developers Extract Functions: An Experiment
创建函数是编写计算机程序的核心。但是,关于如何做到这一点以及开发人员使用的考虑因素是什么,几乎没有实证研究。我们设计了一个实验,在这个实验中,我们可以比较多个开发人员在完全相同的条件下做出的决定。该实验基于现有的生产代码,将其“扁平化”为单个单片函数,然后让开发人员承担重构它的任务,以通过提取函数来实现更好的设计。结果表明,开发人员倾向于基于结构线索提取功能,例如“if”或“try”块。虽然不同开发人员执行的重构之间存在显著的相关性,但在重构的程度上也存在显著差异。例如,提取的函数数量在3到10之间,提取到函数中的代码量在37%到95%之间。
2022-09-02 cs.SE
Smells in System User Interactive Tests
测试气味被认为是糟糕的开发实践,反映了软件测试中糟糕的设计和实现选择。在过去的十年中,测试气味被大量研究,以衡量其流行程度和对测试可维护性的影响。然而,这些研究主要集中在单元级别,直到今天,通过图形用户界面与被测系统交互的系统测试工作仍然有限。为了填补这一空白,我们对系统用户交互测试(SUIT)中出现的测试气味进行了探索性分析。首先,基于多声文献综述,我们提出了一个目录的35套特定的气味。然后,我们进行了实证分析,以评估这些气味在48个工业测试套件和12个开源项目的流行和重构。我们发现,相同类型的气味往往出现在工业和开源项目中,但症状并没有以相同的方式得到解决。气味,如模糊的测试,偷偷摸摸的检查,并在超过70%的测试显示症状。然而,重构操作的频率要低得多,只有不到50%的受影响测试经历过重构。有趣的是,虽然重构动作很少见,但一些气味,如自恋,通过删除旧的症状测试和引入不呈现这些症状的新测试而消失。
2021-11-03 cs.SE
What Were You Thinking? An LLM-Driven Large-Scale Study of Refactoring Motivations in Open-Source Projects
University of Oulu(奥卢大学);University of Salerno(萨勒诺大学);University of Milano-Bicocca(米兰-布雷塞大学)
本研究利用大型语言模型分析开源项目版本控制数据,识别开发者重构动机,发现LLM与人类判断80%一致但与文献动机仅47%一致,其价值在于提供局部解释,可与软件度量结合形成混合方法以系统化重构优先级。
2025-09-09 cs.AI cs.PL cs.SE
Model Contribution Rate Theory: An Empirical Examination
本文提出 mhMCR 方法,通过聚类、提交时间差和贡献规模识别持续开发工作,并在多个商业仓库中验证其能更准确地衡量开发者生产率。
2024-12-08 cs.SE
An Empirical Framework for Evaluating Semantic Preservation Using Hugging Face
CUNY, the Graduate Center(纽约大学研究生中心);CUNY, Hunter College(纽约大学亨特学院)
本文提出基于Hugging Face的语义保持评估经验框架,通过分析模型演化数据,揭示语义漂移检测方法及重构模式,为构建更可信的ML系统提供基础。
2025-12-08 cs.AI cs.SE
An Empirical Study of Untangling Patterns of Two-Class Dependency Cycles
本研究通过分析38个开源项目的数百个案例,总结出开发者解决两类依赖循环的五种常用模式及三种反直觉方案,指出循环设计上下文的重要性,为开发者认知提升和自动重构工具优化提供参考。
2023-12-17 cs.SE
Empirical Study of Co-Renamed Identifiers
背景:程序标识符的重命名是最常见的重构操作。由于某些标识符彼此相关,因此开发人员可能需要将相关标识符一起重命名。目的:为了理解开发人员如何同时重命名多个标识符,有必要考虑程序中标识符之间的关系以及不相同但语义相似的标识符的简短匹配。方法:我们调查的共同重命名的标识符之间的关系,并确定其关系的类型,有助于提高推荐使用超过1M的重命名实例从开源软件项目的历史收集。我们还评估和比较的影响,共同更名和标识符之间的关系时,在标识符中的单词发生的屈折变化被考虑在内。结果如下:我们揭示了在共同重命名的标识符中经常发现的几种标识符关系,例如同一个类中的方法的标识符,或者定义变量的标识符和用于初始化变量的标识符,这取决于重命名标识符的类型。此外,考虑屈折变化并不影响关系的趋势。结论:这些结果表明了一种方法,优先级的标识符被推荐取决于它们的类型和重命名的标识符的类型。
2022-12-05 cs.SE
Are We All Using Agents the Same Way? An Empirical Study of Core and Peripheral Developers Use of Coding Agents
University of Saskatchewan(萨斯喀彻温大学)
本文通过实证研究发现,核心和边缘开发者在使用编码代理时存在差异,核心开发者更关注文档和测试,而边缘开发者更频繁使用代理进行任务分配。
2026-01-27 cs.SE
Empirical Study on the Characteristics and Evolution of AI-usage in GitHub Repositories: Evidence from Code Comments
Missouri University of Science and Technology(密苏里科技大学);Drexel University(德雷塞尔大学)
通过分析35,361条提及AI的GitHub代码注释及后续提交,发现开发者主要用LLM实现代码,随后频繁重构、集成和修复,AI引用从代码生成转向知识支持和代码增强。
2026-06-05 cs.SE
Empirical Investigation of the Relationship Between Design Smells and Role Stereotypes
本文通过统计分析和无监督学习方法,基于30个GitHub仓库的11,350个类,实证揭示了设计异味与角色定型之间的关联,发现桌面应用比移动应用更易出现设计异味,且服务提供者和信息持有者角色定型尤为突出,为软件团队预防和纠正设计异味提供了指导。
2024-06-27 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
How Do OSS Developers Reuse Architectural Solutions from Q&A Sites: An Empirical Study
该研究通过挖掘GitHub项目数据与调查从业者的混合方法,探究开源软件开发者复用问答网站架构解决方案的场景、类型、实施方式及挑战,填补了相关领域研究空白。
2025-05-18 cs.SE
On the Relation between Code Quality and Machine Learning Performance: A Large-scale Empirical Study
Univ. Lille(里尔大学);Inria(法国国家信息与自动化研究所);CNRS(法国国家科学研究中心);Centrale Lille(里尔中央理工学院);UMR 9189 CRIStAL(UMR 9189 里尔计算机、信号与自动控制实验室)
本研究通过分析Kaggle上265,363个Python笔记本,发现通用代码质量与机器学习性能无关,而机器学习特定违规与性能呈小负相关,流行度和代码专业知识不指示质量或性能,竞赛专业知识则与更好性能相关。
2026-09-11 cs.LG cs.SE