Closing the Loop for Software Remodularisation -- REARRANGE: An Effort Estimation Approach for Software Clustering-based Remodularisation
通过聚类对软件进行二次开发是提高软件内部质量的一种常用方法。然而,只有开发人员遵循推荐的重构建议,软件集群的真正好处才能实现,这可能是复杂和耗时的。简单地产生聚类结果不足以实现重新建模的好处。为了让推荐的重构操作产生影响,开发人员必须坚持到底。然而,由于某些重构操作的复杂性和耗时性,这通常是一项困难的任务。
2023-03-11 cs.SE
RefDiff: Detecting Refactorings in Version Histories
重构是一种众所周知的技术,被软件工程师广泛采用,以改进设计并使系统能够进化。了解在代码更改中应用了哪些重构操作对于理解软件演化、调整软件组件、合并代码更改和其他应用程序是有价值的信息。在本文中,我们提出了RefDiff,这是一种自动化方法,可以识别git存储库中两个代码修订之间执行的重构。RefDiff采用了基于静态分析和代码相似性的方法来检测13种常见的重构类型。在使用分布在7个Java项目中的448个已知重构操作的Oracle进行的评估中,我们的方法实现了100%的精确度和88%的召回率。此外,我们的评估表明,RefDiff比现有的最先进的方法具有更高的精度和召回率。
2017-04-05 cs.SE
Why Developers Refactor Source Code: A Mining-based Study
重构的目的是在不修改代码外部行为的情况下改进代码的非函数属性。以前的研究通过调查开发人员来调查重构背后的动机。为了概括和补充他们的研究结果,我们提出了一个大规模的研究,定量和定性地调查为什么开发人员在开源项目中执行重构。首先,我们挖掘了150个系统历史上执行的287,813次重构操作。使用这个数据集,我们研究了重构操作和过程之间的相互作用(例如,先前的改变/修复)和产品(例如,质量度量)度量。然后,我们手动分析了551个合并的拉取请求,这些合并的拉取请求实现了重构操作,并对所实现的重构背后的动机进行了分类(例如,删除代码重复)。我们的研究结果导致(i)定量证据的关系存在于某些过程/产品指标和重构操作和(ii)一个详细的分类,概括和补充现有的文献中的动机,推动开发人员重构源代码。
2021-01-05 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
Code Review Practices for Refactoring Changes: An Empirical Study on OpenStack
现代代码审查是工业和开源项目中广泛使用的技术,用于提高软件质量,共享知识,并确保遵守编码标准和指南。在代码评审期间,开发人员可能会在合并代码库中的代码更改之前讨论重构活动。到目前为止,代码审查已被广泛研究,以探索其一般挑战,最佳实践和结果,以及社会技术方面。然而,很少有人知道重构是如何被审查的,以及开发人员在审查重构代码时关心什么。因此,在这项工作中,我们提出了一个定量和定性的研究,以了解什么是主要的标准,开发人员依靠制定一个决定接受或拒绝提交的重构代码,是什么使这个过程具有挑战性。通过对分布在OpenStack开源项目中的11,010个重构和非重构审查的案例研究,我们发现,就代码审查工作而言,与重构相关的代码审查需要更长的时间才能得到解决。此外,在对重构代码审查讨论的重要样本进行主题分析后,我们建立了一个由28个重构审查标准组成的综合分类法。我们设想我们的研究结果重申了开发准确和有效的工具和技术的必要性,这些工具和技术可以帮助开发人员在重构的情况下进行审查。
2022-03-27 cs.SE
SOAR: A Synthesis Approach for Data Science API Refactoring
随着开源源数据科学界的发展,数据科学库的数量和同一库的版本数量都在迅速增加。为了与这些库中不断发展的API相匹配,开源组织通常必须手动重构代码库中使用的API。此外,由于类似的开源库非常丰富,从事某个应用程序的数据科学家可能有大量的库可供选择、维护和迁移。API之间的手动重构是一项繁琐且容易出错的任务。尽管最近的研究工作是在不同语言之间执行自动API重构,但以前的工作依赖于使用收集的成对训练数据进行统计学习以进行API匹配和迁移。使用大型统计数据进行重构并不理想,因为这样的训练数据将不可用于新的库或相同库的新版本。我们介绍了一种新的技术,不需要训练数据就可以实现API的迁移和重构。SOAR仅依赖于库发布时随时可用的文档来学习API表示和库之间的映射。使用程序合成,SOAR自动计算API参数的正确配置以及调用这些API所需的任何粘合代码。在运行重构代码时,SOAR还使用解释器的错误消息来生成逻辑约束,这些约束可用于修剪搜索空间。我们的实证评估表明,SOAR可以成功重构80%的基准测试,对应于多达44层的深度学习模型,平均运行时间为97.23秒,90%的数据争用基准测试,平均运行时间为17.31秒。
2021-02-12 cs.SE
RAID: Tool Support for Refactoring-Aware Code Reviews
代码评审是一种关键的开发实践,有助于提高软件质量和促进开发人员之间的知识共享。然而,代码审查通常需要时间,并且需要对文本差异进行详细而耗时的分析。特别是,在代码审查期间检测重构不是一个简单的任务,因为它们没有显式地表示在差异中。例如,移动函数重构由删除的(-)和添加的(+)行代码表示,这些代码可以位于不同的源代码文件中。为了解决这个问题,我们引入了RAID,一个重构感知和智能比较工具。除了提出RAID架构外,我们还实现了一个支持我们解决方案的Chrome浏览器插件。然后,我们进行了现场实验,8名专业开发人员谁使用RAID三个月。我们的结论是,RAID可以减少检测和审查文本差异中的重构所需的认知努力。除了在差异中记录重构之外,RAID还减少了检查这些操作所需的行数。例如,在移动重构的情况下,要查看的行的中位数从14.5减少到2行,在提取的情况下,从113减少到55行。
2021-03-21 cs.SE
Using Automatic Refactoring to Improve Energy Efficiency of Android Apps
移动电话的日益普及给软件开发生命周期带来了额外的挑战。移动应用程序(简称app)应该提供与传统软件相同的功能集,但资源有限:例如有限的处理能力、存储、屏幕以及同样重要的电源。虽然能源效率是一个有价值的要求,但开发人员往往缺乏最佳实践的知识。在本文中,我们研究自动重构是否可以帮助开发人员发布节能应用程序。我们利用一个工具,Leafactor,有五种能源代码气味,往往会被忽视。我们使用Leafactor分析了140个免费和开源应用程序中的代码气味。因此,我们在45个应用程序中检测并修复了代码气味,其中40%已成功将我们的更改合并到官方存储库中。
2018-03-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
Behind the Intent of Extract Method Refactoring: A Systematic Literature Review
本文通过系统性文献综述梳理83项提取方法重构研究,构建分类框架,发现该领域多聚焦代码克隆、工具常结合人工决策且基准难以标准化,为后续研究指明方向。
2023-12-19 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
Refactoring for Dockerfile Quality: A Dive into Developer Practices and Automation Potential
本研究利用 358 个开源项目的 600 个 Dockerfile,通过上下文学习与评分演示选择策略,实现自动化重构,平均减少镜像大小 32%、构建时长 6%,并显著提升可理解性与可维护性,为 CI/CD 中 Dockerfile 质量优化奠定基础。
2025-01-23 cs.SE
Quality and Security Signals in AI-Generated Python Refactoring Pull Requests
University of Michigan-Flint(密歇根大学弗林特分校);University of Michigan-Dearborn(密歇根大学戴尔本分校)
本研究通过分析AIDev数据集中的Python重构拉取请求,探讨了AI生成代码对代码质量和安全性的影响,发现AI提交在22.5%的案例中提升了质量属性,但同时也引入了新的代码问题,提出了24种重构操作的分类和安全门控的重要性。
2026-05-20 cs.AI cs.SE
An automatic architecture reconstruction and refactoring framework
各种各样的来源已经注意到,相当一部分重要的软件系统由于不受阻碍的架构侵蚀而失败。这种设计退化导致可维护性低、可测试性差和开发速度降低。软件系统的侵蚀通常是由于对所需的实现架构的理解、文档编制和维护不足造成的。如果期望的架构丢失或恶化加剧,则期望的架构的重建以及该期望的架构与物理架构的重新对准都需要大量的人工分析和实现工作。本文描述了一个自动软件体系结构重构和源代码迁移框架的初步开发。该框架提供了重构软件系统的概念体系结构和自动地将软件系统的物理体系结构迁移到概念体系结构模型的可能性。该方法是实现在一个概念原型,这是能够分析java系统和重构这些系统的概念架构,以及重构系统的概念架构的证明。
2014-07-23 cs.SE
A Dissection of the Test-Driven Development Process: Does It Really Matter to Test-First or to Test-Last?
背景:测试驱动开发(TDD)是一种重复与测试交错的短编码周期的技术。开发人员首先编写所需功能的单元测试,然后编写必要的产品代码,并重构代码。许多实证研究忽略了与TDD迭代性质相关的独特过程特征。目的:我们制定了四个过程特征:顺序,粒度,一致性和重构工作。我们研究这些特性如何影响TDD和相关变体的质量和生产力。方法:我们分析了从39名专业人士收集的82个数据点,每个数据点都捕获了执行特定开发任务时使用的过程。我们建立了回归模型来评估过程特性对质量和生产率的影响。质量通过功能正确性来衡量。结果:质量和生产率的提高主要与粒度和均匀度呈正相关。测试和生产代码编写的顺序,没有重要的影响。重构努力与这两个结果呈负相关。我们解释了意外的负相关性与质量的可能流行的混合重构。结论:TDD声称的好处可能不是由于其独特的测试优先动态,而是由于类似TDD的过程鼓励细粒度的,稳定的步骤,以改善焦点和流程。
2016-11-18 cs.SE
Refactoring with LLMs: Bridging Human Expertise and Machine Understanding
Department of Computer Engineering and Software Engineering(计算机工程与软件工程系)
本研究参考Martin Fowler重构指南设计多种指令策略,提升LLM自动执行61种重构任务的能力,实验验证其可完成所有基准重构并保留语义,聚焦整体目标的指令效果更优。
2025-10-04 cs.AI cs.SE
To What Extent Cognitive-Driven Development Improves Code Readability?
认知驱动开发(CDD)是一种编码设计技术,旨在减少开发人员在理解给定代码单元(例如,类)。通过遵循CDD设计实践,预计编码单元将更小,因此更容易维护和发展。然而,到目前为止还不知道这些使用CDD标准编码的较小代码单元是否确实更容易理解。在这项工作中,我们的目标是评估CDD如何提高代码的可读性。为了实现这一目标,我们进行了两个阶段的研究。我们首先邀请专业软件开发人员投票(并证明他们的理由)最可读的代码片段对(从一组10对);其中一对是使用CDD实践编码的。共收到133个回复。在第二阶段,我们将最先进的可读性模型应用于10对CDD指导的重构。我们观察到一些相互矛盾的结果。一方面,开发人员认为(10个中的)7个CDD引导的重构比它们的对应重构更具可读性;对于另外两个CDD引导的重构,开发人员尚未决定,而只有在一个CDD引导的重构中,开发人员更喜欢原始代码片段。另一方面,我们注意到只有一个CDD引导的重构具有更好的性能可读性,由最先进的可读性模型评估。我们的研究结果提供了初步的证据,CDD可能是一个有趣的软件设计方法。
2022-06-21 cs.SE
A GNN-Based Approach for Code Smell Detection and Refactoring Opportunity Identification
Waseda University(早稻田大学)
本文提出基于图神经网络的代码异味重构方法,设计两类输入图并结合图分类和节点分类任务,针对长方法、大类和特征 envy 三种代码异味进行重构,实验表明方法在传统和先进深度学习方法中表现优异。
2026-10-20 cs.SE stat.ME
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
Towards the Assisted Decomposition of Large-Active Files
紧密耦合和相互依赖的系统要求开发人员仔细协调他们的更改,甚至在修改应该相互独立的子系统时也是如此,从而抑制了生产力。糟糕的体系结构决策经常导致出现大型的、易更改的源文件,这些文件是复杂的技术债务的中心。这种技术债务通过协调成本和错误倾向很快引起了人们的兴趣。在本文中,我们提出了一种新的方法来分解这些“大型活动”文件,以偿还关键的技术债务。我们将我们的方法打包为一个重构推荐系统。每个建议都是通过分析文件之间的共同更改和相互依赖的模式来确定的。每个建议对应于大型活动文件相对于系统其余部分的责任。通过将推荐的功能从大型活动文件移动到较小的文件中,开发人员可以减少负债累累的文件的影响,并阐明其基本职责。与以前的工作相比,这种方法的一个关键优势是我们可以更好地集中精力;我们避免了花费开发人员的精力来重构那些只是表面上有问题的代码。我们通过将修订历史纳入确定和排名建议来实现这一点。每个建议都对应于一些易于更改的职责。我们提出了一些这种方法在行动中的例子,并概述了我们未来的计划。
2023-02-17 cs.SE
Uma técnica para a quantificação do esforço de merge
使用版本控制系统的开发人员可以与其他开发人员并行工作,然后合并他们的版本。有时这些合并会失败,需要手动干预来解决冲突。一些研究旨在分析合并失败,然而,在文献中缺乏工具的支持,以衡量合并的努力,危及这种分析。在本文中,我们提出了一种技术及其配套工具,用于分析Git存储库并提供与合并工作相关的指标。我们在五个项目中评估了我们的工具,结果显示返工和浪费工作发生在大约10%到30%的项目中。此外,这些努力的平均行动几乎相同。
2018-11-22 cs.SE
Modern Software Engineering in the LAMMPS Molecular Dynamics Software Package: Development Process, Refactoring, Testing, and Deployment
Institute for Computational Molecular Science, Temple University(天普大学计算分子科学研究所)
本文回顾了LAMMPS软件包近年来的开发流程改进,包括源代码管理、自动化测试、代码重构、现代C++采用等,这些改进提升了代码质量并促进了软件的持续流行。
2026-06-23 cs.SE physics.comp-ph
On the Correctness of Software Merge
National Institute of Advanced Industrial Science and Technology(产业技术综合研究所);Chiba Institute of Technology(千叶工业大学)
研究软件合并正确性,提出基于句法标准的新结构合并工具,要求结果可解析且通用,经大规模实验对比现有工具,发现新工具无错误结果,揭示结构合并优缺点,为开发可靠合并工具奠定基础。
2026-07-10 cs.SE
An Empirical Study on the Amount of Changes Required for Merge Request Acceptance
本研究针对GitLab合并请求场景下代码审查工作量研究不足的问题,基于23600余个MR定义并量化审查工作量,构建多维度可解释机器学习模型实现0.84-0.88的AUC表现,验证了用机器学习预判审查工作量的可行性。
2025-07-31 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
Model Contribution Rate Theory: An Empirical Examination
本文提出 mhMCR 方法,通过聚类、提交时间差和贡献规模识别持续开发工作,并在多个商业仓库中验证其能更准确地衡量开发者生产率。
2024-12-08 cs.SE
LastMerge: A language-agnostic structured tool for code integration
本文提出语言无关的结构化代码合并工具LastMerge,并通过与jDime、Spork及Mergiraf对比,证明通用结构化合并在准确率和运行时上可替代语言专用工具。
2025-07-25 cs.SE
Analyzing DevOps Practices Through Merge Request Data: A Case Study in Networking Software Company
本文基于网络软件公司 26.7k 个 MR,分析疫情、OpenShift 迁移及评审行为对 DevOps 效率的影响,揭示协作、生产力与代码评审优化模式。
2025-03-18 cs.SE
Comprehending Python Repetition Structures: An Eye-Tracking Study with Novice Developers
Federal University of Campina Grande(坎皮纳格兰德联邦大学);State University of Paraíba(帕拉伊巴州立大学);Federal University of Alagoas(阿拉戈阿斯联邦大学)
本研究通过眼动实验对比Python的for循环、while循环、递归、列表推导式的理解难度,发现不同重复结构视觉投入模式不同,为代码可读性等提供过程层面证据。
2026-08-11 cs.SE
How the adoption of feature toggles correlates with branch merges and defects in open-source projects?
背景:分支在版本控制中被广泛采用,以支持协作软件开发。然而,分支造成的隔离可能会对即将到来的合并过程带来挑战。最近,像谷歌、微软、Facebook和Spotify等公司已经采用了基于主干的开发以及功能切换。此策略支持协作,而无需通过分支进行隔离,从而可能减少合并的挑战。然而,文献缺乏证据的好处和限制功能切换协作软件开发。目的/方法:在本文中,我们研究的影响,应用功能切换949个开源项目写在6个不同的程序设计语言。我们首先确定了每个项目采用功能切换框架的时刻。然后,我们观察采用是否意味着分支合并的频率或复杂性以及缺陷数量的显着变化,以及修复它们的平均时间。最后,我们比较了从一组控制项目,不使用功能切换框架获得的结果。结果/结论:我们可以观察到,在采用特性切换框架之后,平均合并工作量减少,修复缺陷所需的平均总时间增加。然而,我们无法确认这种增加是受到使用功能切换的影响。
2021-09-12 cs.SE
Generative AI for Test Driven Development: Preliminary Results
本研究针对测试驱动开发(TDD)应用成本高、依赖经验开发者的问题,提出结合生成式AI的协作与全自动两种TDD自动化模式,经ChatGPT实验验证其可提升TDD效率,但需监督代码质量以防误导非专业开发者。
2024-05-17 cs.SE
CLARA: A Developer's Companion for Code Comprehension and Analysis
CLARA是一个浏览器扩展,利用先进推理模型帮助开发者和研究人员进行代码理解、重构和质量检测,经用户研究验证其有用、准确且实用。
2025-09-11 cs.SE
Early Prediction for Merged vs Abandoned Code Changes in Modern Code Reviews
Bangladesh University of Engineering and Technology(孟加拉国工程技术大学);University of California, Davis(加利福尼亚大学戴维斯分校);University of Calgary(卡尔加里大学)
现代代码评审过程是当前软件开发实践的一个组成部分。这里付出了相当大的努力来检查代码更改,发现缺陷,提出改进建议,并处理评审人员的建议。在代码审查过程中,通常会进行多次迭代,作者提交代码更改,审查者提供反馈,直到乐于接受更改。在大约12%的情况下,更改被放弃,最终浪费了所有的努力。在这项研究中,我们的目标是设计一个工具,可以预测代码更改是否会在早期阶段被合并或放弃,以减少所有利益相关者(例如,程序作者、评审员、项目管理人员等)涉案Fan等人的一项研究正式确定了现实世界对此类工具的需求。[1]。我们已经从三个大型和流行的开源软件的代码审查中挖掘了146,612个代码更改,并训练和测试了一套基于浅层和深度学习的监督机器学习分类器。在模型的训练和测试过程中,我们在每次代码更改中总共考虑了25个功能。性能最好的模型名为PredCR(预测代码审查),一个基于LightGBM的分类器平均达到约85%的AUC分数,并相对提高了14- 23%的最新技术水平。在我们对来自三个软件项目的146,612个代码更改的实证研究中,我们发现(1)PredCR中引入的审阅者维度等新功能信息量最大。(2)与基线相比,PredCR更有效地减少了对新开发者的偏见。(3)PredCR使用代码评审存储库中的历史数据,因此,随着软件系统使用新的和更多的数据而发展,PredCR的性能也会提高。
2021-08-30 cs.LG cs.SE
Software engineering to sustain a high-performance computing scientific application: QMCPACK
本文概述了针对高性能计算开源代码 QMCPACK 的软件工程实践,包括扩展 CI、减少内存泄漏、引入 Docker 容器及代码重构,并通过指标验证了向预测性可持续维护方法的转变。
2023-07-21 cs.DC cs.SE physics.comp-ph
"Good" and "Bad" Failures in Industrial CI/CD -- Balancing Cost and Quality Assurance
针对工业 CI/CD 中任务失败导致的成本上升与效率下降问题,通过研究 4 家企业的实践经验,揭示 CI/CD 混淆现象及合并前阶段早期失败预防的重要性,为平衡成本与质量保障提供行业参考。
2025-04-16 cs.SE
Toward Instructions-as-Code: Understanding the Impact of Instruction Files on Agentic Pull Requests
École de Technologie Supérieure
通过分析148个项目的15549个智能体PR,发现指令文件对合并率、代码变更量和合并工作量无一致正面影响,但成功项目指令文件更长且结构更清晰,提出“指令即代码”研究方向。
2026-06-12 cs.AI cs.SE
Do These Violent Delights Have Violent Ends? Measuring the Post-Merge Fate of Agentic Code
University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);George Washington University(乔治华盛顿大学)
研究代理代码合并后的命运,通过对182个仓库实证分析,发现其虽与人工维护率相似,但需更高纠正性维护率,还引入更多问题,且维护负担与仓库特征有关,强调评估设计代理工具要兼顾安全性与可维护性。
2026-07-14 cs.AI cs.SE
Not All Agents Are Equal: Code Quality and Post-Merge Maintenance Across Five Autonomous Coding Agents in the Wild
Texas Tech University(德克萨斯理工大学)
本研究分析五个商业编码智能体的3.7万余个真实PR,发现代码质量因供应商而异,Codex回滚率低于人类,Devin高于人类,且智能体代码安全异味更少,审查负担分布不均。
2026-09-17 cs.SE
On The Impact of Merge Request Deviations on Code Review Practices
TELUS(TELUS(泰勒斯))
该研究识别出占比37.02%的七类合并请求偏差,提出准确率91%的小样本检测方法,证实排除偏差可提升评审分析模型性能,为优化代码评审提供支持。
2025-06-11 cs.AI cs.LG cs.SE
An ensemble meta-estimator to predict source code testability
Iran University of Science and Technology(伊朗科技大学)
与大多数其他软件质量属性不同,可测试性不能仅仅基于源代码的特性进行评估。测试套件的有效性和分配给测试的预算极大地影响了被测代码的可测试性。测试集的大小决定了测试工作量和成本,而覆盖度量则表明了测试的有效性。因此,考虑到测试预算,可测试性可以根据测试套件提供的测试用例的覆盖率和数量来衡量。本文提供了一个新的方程来估计一个给定的测试套件的大小和覆盖率的可测性。该公式已被用于标记属于110个Java项目的23,000个类及其可测试性度量。使用262个度量对标记的类进行向量化。标记的向量被送入一系列有监督的机器学习算法,回归,以预测源代码度量的可测试性。回归模型预测的R2为0.68,均方误差为0.03,适用于实践的可测试性。15个软件度量高度影响可测试性预测确定使用的学习模型上的特征重要性分析技术。与预测分支覆盖率作为测试标准的相关研究相比,由于采用了新的标准、度量和数据,所提出的模型将平均绝对误差提高了38%。作为可测试性预测的一个应用,它表明,42个臭Java类的自动重构,旨在提高15个有影响力的软件度量,可以提高其可测试性的平均86.87%。
2022-08-24 cs.LG cs.SE