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
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
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
Assessing the Impact of Refactoring Energy-Inefficient Code Patterns on Software Sustainability: An Industry Case Study
本文通过大型应用行业案例研究,评估自动化工具识别并重构能源低效代码模式的效果,发现重构后每用户每月能耗降低29%。
2025-06-11 cs.SE
ActRef: Enhancing the Understanding of Python Code Refactoring with Action-Based Analysis
ActRef 提出基于代码变更操作的重构分析框架,覆盖变量到模块多粒度并支持多种重构类型,在 1,914 个实例上取得 0.80 精确率和 0.92 召回率,优于多个基线。
2025-05-10 cs.SE
Smells and Refactorings for Software Environmental Sustainability: A Systematic Literature Review
University of Pisa(比萨大学)
本系统文献综述识别了20种影响软件环境可持续性的绿色坏味道,并将其映射到相应的重构技术,为从业者提供实用指导并为可持续软件工程研究奠定基础。
2026-10-06 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
Evaluation of Software Quality Through Refactoring Commit-Impact Analysis
Islamic University of Technology(伊斯兰技术大学)
本研究通过检查重构提交前后代码变更的影响,结合软件度量与GitHub开源软件的静态代码分析,探究代码修改与软件质量的相关性。
2026-10-12 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
How does Object-Oriented Code Refactoring Influence Software Quality? Research Landscape and Challenges
软件重构旨在提高软件质量和开发人员的生产力。在过去的二十年里,已经进行了大量的实证研究,调查重构活动对软件质量的影响。目的:本研究旨在对现有的面向对象代码重构活动对软件质量属性影响的实证研究进行全面系统的映射研究。方法:我们遵循多阶段审查过程,选择了截至2017年12月发表的142项主要研究。根据几个方面对选定的初步研究进行进一步分类,以回答为这项工作定义的研究问题。此外,本研究亦利用投票统计法,将实证结果与原始研究的分析结果结合起来。结果如下:研究结果表明,在学术环境中进行的研究发现,重构对软件质量的积极影响比在行业中进行的研究。一般来说,重构活动导致所有质量属性的改善或降低,除了内聚性,复杂性,继承性,故障倾向和功耗属性。此外,个别的重构活动对主要研究中探索的大多数质量属性有不同的影响,这表明重构并不总是改善所有的质量属性。结论:本研究指出了几个需要进一步调查的开放问题,例如,缺乏工业验证,重构活动覆盖面较小,工具支持有限等。
2019-08-15 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
Relating Complexity, Explicitness, Effectiveness of Refactorings and Non-Functional Requirements: A Replication Study
本研究通过将项目数翻倍并验证8,408个重构实例复现Soares等人的研究,考察SAR的复杂性、显式性、有效性及其与非功能需求的关系,发现显式重构更复杂但通常更利于内部质量。
2025-05-12 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
How do Agents Refactor: An Empirical Study
University of Alberta(阿尔伯塔大学)
通过对比86个Java项目中智能体与开发者的重构拉取请求,发现智能体重构以注释修改为主,而Cursor是唯一显著增加代码味道的模型。
2026-05-24 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
Refactoring Deep Learning Code: A Study of Practices and Unsatisfied Tool Needs
本研究通过分析5个深度学习项目的4921项重构实践、调研159名从业者,揭示了深度学习代码重构的分布特点及现有工具的不足,为重构工具发展和开发实践提供了建议。
2025-08-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
MORCoRA: Multi-Objective Refactoring Recommendation Considering Review Availability
School of Computing, Tokyo Institute of Technology(东京工业大学理工学院)
MORCoRA通过多目标搜索推荐高代码质量和高审查可用性的重构序列及合适审查者。
2026-03-08 cs.SE
On the Influence of Refactoring Types on Merge Effort
Fluminense Federal University(弗鲁米嫩塞联邦大学);Colorado State University(科罗拉多州立大学);Pontifical Catholic University of Rio de Janeiro (PUC-Rio)(里约热内卢天主教大学);Veiga de Almeida University(维加·德阿尔梅达大学)
该研究通过分析64个开源Java项目,发现不同重构类型对合并工作量的影响强度不同,重构的数量、多样性及并行分支中重构的共现均会增加合并工作量。
2026-08-18 cs.SE
RefFilter: Improving Semantic Conflict Detection via Refactoring-Aware Static Analysis
针对协作软件开发中语义冲突检测误报率高的问题,提出感知重构的工具RefFilter,通过自动识别并剔除行为保持的代码重构降低误报,实验验证其精度提升显著,可有效优化合并支持。
2025-10-02 cs.SE
On the impact of Performance Antipatterns in multi-objective software model refactoring optimization
软件质量评估是一个具有挑战性和耗时的活动,模型是至关重要的,以面对现代软件应用程序的这种活动的复杂性。一个主要的挑战是,独特的质量属性的改进可能需要对应用程序进行对比的重构操作,如性能和可靠性之间的权衡。在这种情况下,多目标优化可以为设计师提供更广泛的观点,这些权衡,因此,可以导致确定适当的行动,考虑到独立的,甚至竞争的目标。在本文中,我们提出了一种方法,利用NSGA-II多目标进化算法搜索最佳的Pareto解决方案的软件重构边界,同时考虑的目标:i)性能变化,ii)可靠性,iii)性能反模式的数量,和iv)架构距离。该算法将随机生成的重构动作组合成解决方案(即,动作序列),并根据目标进行比较。我们已经在一个训练订票服务案例研究中应用了我们的方法,并且重点分析了性能反模式对解决方案质量的影响。事实上,我们观察到,当反模式进入多目标优化时,该方法可以找到更好的解决方案。特别是,性能反模式目标导致解决方案的性能提高了15%,相对于不考虑反模式的情况下,而不影响解决方案的质量对其他目标。
2022-12-16 cs.PF cs.SE
Refactoring $\neq$ Bug-Inducing: Improving Defect Prediction with Code Change Tactics Analysis
该研究提出 CAT 分析识别代码重构及其传播,修正 JIT-Defects4J 标注并增强六种 JIT-DP 基线,证明忽视重构会显著损害预测性能。
2025-07-25 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
Resolving code smells in software product line using refactoring and reverse engineering
软件产品线SPL被认为是软件开发中一种成功的复用方法,其目的是降低生产成本。这种方法允许产品在特定的特性和限制方面有所不同,以覆盖不同的市场。软件产品线工程是产品线中的生产过程。它利用软件产品之间的共性,但也保留了这些产品之间的功能变化的能力。有时,在此过程中不适当的SPL实现可能导致代码气味或代码异常。代码气味被认为是源代码中的问题,可能会影响SPL派生产品的质量。由于重用,SPL的许多派生产品中也会出现同样的问题。重构技术可以在不改变源代码外部行为的前提下改善源代码的内部结构,是解决这一问题的一种可能的方法.本文提出了一种从源代码构建SPL的方法,其目的是通过重构源代码来减少SPL中的代码气味.该方法的另一部分是基于逆向工程来设计SPL.
2020-11-29 cs.SE
Automated Refactoring of Legacy JavaScript Code to ES6 Modules
Athens University of Economics and Business(雅典经济与商业大学)
本文研究了将遗留ES5代码自动转换为ES6模块,通过命名导入/导出语言构造实现细粒度重用,减少模块耦合并增强模块依赖。
2021-07-21 cs.SE
Code Refactoring with LLM: A Comprehensive Evaluation With Few-Shot Settings
Dhaka University of Engineering & Technology(达卡工程技术大学);Tulane University(杜兰大学);University of Aizu(会津大学)
本研究提出基于LLM的多语言代码重构框架,通过少样本学习和提示工程提升重构准确性与效率,实验显示Java在正确性与可编译性上表现最佳。
2025-11-26 cs.SE
Interprocedural Semantic Change-Impact Analysis using Equivalence Relations
变更影响分析(CIA)是确定受程序变更影响的程序元素集的任务。Precise CIA有很大的潜力,可以避免对重构(语义保留)的(部分)更改进行昂贵的测试和代码审查。现有的CIA是不精确的,因为它是粗粒度的,只处理很少的重构模式,或者不知道更改语义。我们正式的概念变化的影响方面的两个程序版本的跟踪语义。我们展示了如何利用等价关系,使基于Challow-based CIA知道的变化语义,从而提高精度的语义保持变化的存在。我们提出了一个随时算法,允许应用昂贵的等价关系推理增量细化受影响的语句集。我们已经在SymDiff中实现了一个原型,并对先前研究使用的开源项目和基准程序的322个真实变化进行了评估。评估结果显示,与标准的基于XML的技术相比,受影响语句集的大小平均提高了35%。
2016-09-28 cs.SE
Toward Refactoring of DMARF and GIPSY Case Studies a Team 7 SOEN6471-S14 Project Report
软件体系结构被定义为一个结构良好的解决方案的过程,它满足所有的技术和操作要求,并提高系统的质量属性,如可读性,可靠性,可维护性和性能。它涉及一系列设计决策,这些决策可能对系统质量属性和应用程序的整体成功产生相当大的影响。在这项工作中,我们首先分析和调查两个开源软件(OSS)平台DMARF和GIPSY,主要是在Java中实现的。许多研究论文已经被研究,以获得更多的见解和清晰的背景,他们的架构,增强,演变,挑战和功能。随后,我们提取并找到他们的需求,高层次的要求,和架构结构,导致重要的设计决策,从而影响他们的质量属性。首先,我们逆向工程每个系统的源代码,以重建其领域模型和类图模型。我们试图实现需求和其他设计工件之间的可追溯性,以保持一致。此外,我们进行了手动和自动重构技术,以摆脱一些现有的代码气味,最终获得更可读和更易于理解的代码,而不会影响其可观察的行为。
2014-12-18 cs.SE
Automated Extract Method Refactoring with Open-Source LLMs: A Comparative Study
University of Groningen(格罗宁根大学)
本研究对比评估了5款3B-8B参数的开源LLM在Python代码提取方法重构任务中的表现,发现递归批评改进(RCI)提示策略效果优于单样本提示,最优模型测试通过率超0.8,开发者接受度超70%,并发布了开源基准。
2025-10-30 cs.SE
Do AI Agents Really Improve Code Readability?
National Institute of Technology, Nara College(奈良工业高等专门学校);Nara Institute of Science and Technology(奈良先端科学技术大学院大学)
研究探讨AI代理重构对代码可读性的影响,通过分析403个提交发现,AI主要改进逻辑复杂度和文档,但导致传统质量指标下降。
2026-03-14 cs.SE
How Does Microservice Granularity Impact Energy Consumption and Performance? A Controlled Experiment
Vrije Universiteit Amsterdam(阿姆斯特丹自由大学)
本文通过受控实验研究微服务粒度对能耗和性能的影响,发现粒度显著影响能耗和响应时间,且高负载进一步加剧能耗和响应时间,强调在微服务设计中需谨慎考虑粒度与系统规模的关系。
2025-11-26 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
A Study on the Impact of Fault localization Granularity for Repository-Scale Code Repair Tasks
Fujitsu Research of Europe(富士通欧洲研究院)
研究探讨了仓库级代码修复中故障定位粒度对修复效果的影响,提出框架验证不同粒度下的修复率,并指出任务依赖性可能影响最佳粒度。
2026-03-31 cs.AI cs.SE
LLM-Based Detection of Tangled Code Changes for Higher-Quality Method-Level Bug Datasets
University of Manitoba(曼尼托巴大学)
本研究利用LLM结合提交信息与代码差异,通过少样本和思维链提示检测方法级纠缠代码变更,F1达0.883,并验证了该方法对提升缺陷数据集质量的贡献。
2025-10-25 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
Orchestrating AI-Assisted Code Remediation: Socio-Technical Bottlenecks in a Large Industrial Repository
Ericsson AB(爱立信);Lund University(隆德大学);Mälardalen University(马勒尔谷大学);Carleton University(卡尔顿大学)
本研究通过15天工业案例,发现AI辅助代码修复中CI容量、审查精力和变更编排是主要瓶颈,需控制提交与批处理粒度并视语义变更集为一等工作单元。
2026-09-28 cs.SE
Beyond More Context: How Granularity and Order Drive Code Completion Quality
本研究针对代码补全中的上下文构建问题,通过文件级与块级检索实验,发现上下文数量与顺序显著影响性能,并提出基于静态分析的块级检索,在Python上较无上下文基线提升16%。
2025-10-08 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
Small Changes, Big Impacts: Leveraging Diversity to Improve Energy Efficiency
在过去的几年里,越来越多的研究提出了方法,技术和工具来支持开发人员构建消耗更少能量的软件。这些解决方案利用了多种方法,例如版本历史挖掘、分析模型、识别节能配色方案以及优化HTTP请求的打包。在本章中,我们提出了一种补充方法。我们提倡开发人员应该利用软件多样性来使软件系统更加节能。我们的主要观点是,非专业人员可以通过在开发时在第三方实现的现成的、多样化设计的软件之间进行交替来构建消耗更少能量的软件。这些软件片段在性质、粒度和质量属性上可能有所不同。示例包括用于线程管理和同步的数据结构和构造。
2020-12-07 cs.SE
Identification and Optimization of Redundant Code Using Large Language Models
本文研究利用大型语言模型自动检测和优化AI项目中的冗余代码,识别冗余模式及其成因,并提出LLM智能体以在保持功能的前提下实现大规模重构。
2025-05-07 cs.SE
Fault Prediction based on Software Metrics and SonarQube Rules. Machine or Deep Learning?
背景开发人员花费更多的时间来修复错误和重构代码,以增加可维护性,而不是开发新功能。研究人员调查了代码质量对错误倾向的影响,重点关注代码气味和代码度量。Objective.我们的目标是推进故障诱导提交预测的基础上SonarQube考虑每个规则和度量提供的贡献。法我们设计并进行了一个案例研究,在33个Java项目中使用SonarQube和SZZ进行分析,以识别错误诱导和错误修复提交。此外,我们使用机器和深度学习模型研究了每个SonarQube规则和度量的故障倾向。结果我们分析了77,932次提交,其中包含40,890个错误,并被超过174个SonarQube规则感染,违反了1900万次,在此基础上计算了该工具可用的24个软件指标。与机器学习模型相比,深度学习提供了更准确的故障检测精度,并允许我们准确地识别每个SonarQube规则的故障预测能力。结果表明,在174条违规规则中,有14条规则的重要性大于1%,约占总错误倾向重要性的30%,其余165条规则的错误倾向性可以忽略不计。结论未来的工作可能会考虑采用时间序列分析和异常检测技术,以更好,更准确地检测影响故障倾向的规则。
2021-03-21 cs.SE
SemaDiff: Identifying Semantic-Changing Commits with Generated Code and Tests
SnT, University of Luxembourg(卢森堡大学SnT分校);RIADI, ENSI, University of Manouba(突尼斯曼努巴大学RIADI与ENSI分校);Concordia University(康科德大学)
研究软件仓库挖掘中区分语义保留与变化提交的问题,提出SemaDiff方法,通过行为分析、生成额外调用方法及依赖类等,实现对提交的语义判断,实验表明该方法能较准确地区分,语义变化提交检测精度高。
2026-07-16 cs.AI cs.SE
Breaking Bad? Semantic Versioning and Impact of Breaking Changes in Maven Central
就像任何软件一样,库会不断发展,以包含新功能、错误修复、安全补丁和重构。然而,当一个库发展时,它可能会通过在其API中引入破坏性更改(Breaking Changes,BC)来打破以前与客户建立的合同。这些更改可能会在客户端代码中触发编译时、链接时或运行时错误。因此,客户端可能会犹豫是否要升级其依赖项,从而引发安全问题,并使未来的升级更加困难。了解库如何演变有助于客户端开发人员了解哪些更改以及在何处进行更改,库开发人员也可以了解这些更改可能对客户端产生的影响。在迄今为止最广泛的研究中,Raemaekers等人调查了托管在Maven Central Repository(MCR)上的Java库的开发人员在多大程度上遵循语义版本控制约定,以表明BC的引入以及这些变化如何影响客户端项目。他们的研究结果表明,BC是普遍的,而不考虑语义版本,对客户端的显着影响。在本文中,我们进行了外部和差异化的复制研究,他们的工作。我们确定并解决了原始协议的一些局限性,并将分析扩展到一个新的语料库,跨越七年的MCR。我们还提出了一种新的静态分析工具,Java字节码,Maracas,它为我们提供了:(i)两个版本的库之间的所有BC的集合;和(ii)在客户端代码中的位置的一组受个别BC的影响。我们的主要发现来自对119879个库升级和293817个客户端的分析,与最初的研究形成对比,并显示这些升级中有83.4%…
2021-10-15 cs.SE
Does Code Smell Frequency Have a Relationship with Fault-proneness?
本研究通过实证分析Apache和Eclipse生态系统中13种代码坏味频率与故障倾向性的相关性,发现低频坏味(如Anti Singleton)与故障倾向性强相关,高频坏味(如Complex Class)为中等相关,为重构优先级提供依据。
2023-04-28 cs.SE
Evidence is All We Need: Do Self-Admitted Technical Debts Impact Method-Level Maintenance?
本文通过分析49个开源项目中的774,051个方法,实证研究了自承认技术债务对方法级软件维护的影响,发现SATD会降低代码质量与可读性、增加缺陷和变更倾向,并长期未解决,从而强调早期识别与主动管理的必要性。
2025-02-05 cs.SE
The Vision of Software Clone Management: Past, Present, and Future
重复代码或代码克隆是一种代码气味,对软件系统的开发和维护既有积极的影响,也有消极的影响。过去的软件克隆研究主要集中在代码克隆的检测和分析上,而近年来的研究扩展到了克隆管理的整个领域。在过去的十年中,三个调查出现在文献中,其中包括检测,分析和代码克隆的进化特征。本文对克隆管理的最新技术进行了全面调查,并深入调查了克隆管理活动(例如,跟踪、重构、成本效益分析)。这是第一次调查克隆管理,我们指出的成就,到目前为止,并揭示了必要的进一步研究走向一个综合的克隆管理系统的途径。我们相信,我们在调查克隆管理领域方面做得很好,这项工作可以作为该领域未来研究的路线图
2020-05-03 cs.SE
A Longitudinal Study of Identifying and Paying Down Architectural Debt
架构债是一种技术债,它源于系统的架构设计“应该”与“现状”之间的差距。我们以两种方式度量架构债:1)根据系统范围的耦合度量,以及2)根据架构缺陷的数量和严重性。在最近的工作中,已经表明架构债的数量对软件的可维护性和演化有着巨大的影响。因此,检测和减少债务有望使软件更容易改变。本文报告的纵向研究的医疗保健通信产品创建的鱿鱼安全通信公司这家初创公司正面临着典型的权衡问题,希望响应变化的请求,但要避免不断增加的努力,积累的快速和肮脏的变化最终招致。在研究的第一阶段,我们分析了“之前”系统的状态,这表明了变更请求的影响。这项初步研究激发了对建筑债务的更深入分析。分析的结果被用来激励软件系统的全面重构。研究的第三阶段是对建筑债务进行后续分析,对所取得的改进进行量化。使用这种定量的证据,通过对Squid的建筑师进行深入采访收集的定性证据,我们提出了在实践中偿还建筑债务的成本和收益的经验教训。
2018-11-30 cs.SE
Auto-SPT: Automating Semantic Preserving Transformations for Code
Google(谷歌);Google, U. Wisconsin–Madison(谷歌,威斯康星大学麦迪逊分校);U. Wisconsin–Madison, Google(威斯康星大学麦迪逊分校,谷歌)
Auto-SPT通过生成多样化的语义保持变换来提升代码克隆检测模型的鲁棒性。
2025-12-05 cs.AI 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