Do Mobile Developers Ask on Q&A Sites About Error Codes Thrown by a Cross-Platform App Development Framework? An Empirical Study
在过去的几年中,开发框架已经出现,使跨平台移动应用程序的开发和维护变得更加容易。Xamarin框架就是其中之一:它接受用C#编写的应用程序作为输入,并为Android,iOS和Windows Mobile平台生成本地代码。在使用Xamarin时,开发人员可能会遇到框架抛出的代码错误。不幸的是,Xamarin官方文档并没有提供所有这些代码的完整描述,解决方案或解决方案。本文分析了两个与Xamarin相关的问题和答案网站,以找到提到这些错误代码的问题。我们发现在这两个网站上都有开发人员写的关于Xamarin错误的问题,其中大多数至少有一个答案。我们的直觉是,这些发现的信息可能有助于为Xamarin开发人员提供支持。
2018-01-22 cs.SE
Can instability variations warn developers when open-source projects boost?
尽管已经使用各种度量标准研究和测量了架构不稳定性,但仍然需要更深入地分析哪些项目部分不稳定以及这种不稳定性如何随时间变化。虽然拥有更多关于架构不稳定性的信息通常对任何软件开发项目都很有用,但在开发过程的监督更难以实现的开源软件(OSS)项目中尤为重要。特别是,当OSS项目从一个小的受控环境(即,大教堂阶段)到社区驱动的项目(即,市场阶段)。在这样的过渡中,项目经常在软件规模和贡献开发人员的数量方面爆炸。因此,新添加的功能的复杂性以及提交和文件修改的频率可能会导致类和包结构的不稳定性的显著变化。因此,在这份注册报告中,我们提出了分析开放源码软件项目不稳定性的方法,特别是在社区驱动的敏感阶段。我们打算提出一些方法来预测在几个OSS项目的不稳定性的演变。我们的初步结果表明,在项目过度增长之前,似乎可以提供对OSS团队有用的有意义的估计。
2022-04-11 cs.SE
CodeA11y: Making AI Coding Assistants Useful for Accessible Web Development
针对新手使用 GitHub Copilot 时忽视、遗漏且无法验证无障碍要求的问题,本文提出 CodeA11y 扩展,通过合规代码建议和手动验证提醒提升 AI 辅助 Web 开发的无障碍质量。
2025-02-15 cs.HC cs.SE
Beyond the Commit: Developer Perspectives on Productivity with AI Coding Assistants
Carnegie Mellon University(卡内基梅隆大学);BNY Mellon(纽约梅隆银行)
本研究通过混合方法分析了AI代码助手对开发者生产力影响的多维评估因素,强调长期指标的重要性,为未来研究和工业实践提供参考。
2026-02-03 cs.SE
Recommending Code Improvements Based on Stack Overflow Answer Edits
背景:次优代码在软件系统中普遍存在。开发人员可能会由于许多原因编写低质量的代码,例如缺乏技术知识,缺乏经验,时间压力,管理决策,甚至不快乐。一旦次优代码在不知不觉中(或有意)集成到软件系统的代码库中,其积累可能会导致大量的维护成本和技术债务。Stack Overflow是一个程序员提问和分享代码片段的流行网站。Stack Overflow的众包和协作性质创造了大量的编程知识来源,可以用来帮助开发人员进行日常活动。目的:在本文中,我们提出了一个探索性的研究,以评估基于Stack Overflow答案的编辑推荐代码改进的有用性。方法:我们提出了Matcha,一个代码推荐工具,利用Stack Overflow代码片段与版本历史和代码克隆搜索技术来识别软件项目中的次优代码,并建议其优化版本。通过使用SOTorrent和GitHub数据集,我们将定性定量地研究\textsc{Matcha}向开发人员提供的建议的有用性,这些建议使用手动分类的建议和接受开源项目的拉式请求。
2022-04-14 cs.SE
Breaks and Code Quality: Investigating the Impact of Forgetting on Software Development. A Registered Report
本注册报告提出实证研究,探究开发者活动中断时长、项目活动量及不同活动模式对代码质量的影响,为判断并行多项目开发或减少参与项目数哪种更有益提供依据。
2023-08-28 cs.SE
Using CognitIDE to Capture Developers' Cognitive Load via Physiological Activity During Everyday Software Development Tasks
本文提出使用基于 IntelliJ 的插件 CognitIDE,在开发者执行日常软件开发任务时收集、映射并可视化其生理活动数据,以无干扰地捕获认知负荷,实验证明该插件能有效支持长达一小时的数据收集并反映任务期间的认知负荷变化。
2025-03-05 cs.SE
Evaluating LLM-Generated Code: A Benchmark and Developer Study
IU Internationale Hochschule Bad Honnef(德国国际高等教育学院)
本文提出了一种定制的树折评估方法,用于评估大语言模型生成的代码,弥补了现有基准在代码质量和可操作性方面的不足,并通过对比三个通用大语言模型展示了其有效性。
2026-06-11 cs.SE
An empirical evaluation of the usefulness of Tree Kernels for Commit-time Defect Detection in large software systems
在提交签入时进行缺陷检测可以防止缺陷引入软件系统。目前的缺陷检测方法依赖于基于度量的模型,这些模型不是很准确,并且其结果对开发人员没有直接的用处。我们提出了一种方法来检测bug诱导提交通过比较传入的更改与项目中所有过去的提交,同时考虑那些引入缺陷和那些没有。我们的方法在方法级的粒度上单独考虑提交中的单个更改。这样做有助于开发人员,因为他们被告知需要进一步关注的特定方法,而不是被告知整个提交都有问题。我们的方法将源代码表示为抽象语法树,并使用树内核来估计代码与以前提交的相似性。我们使用子树内核(STK),子集树内核(SSTK)或部分树内核(PTK)进行实验。然后使用K-NN分类器对过去的更改进行分类。我们使用NiCad克隆检测器作为基线,在BigCloneBench基准和Technical Debt数据集上评估我们的方法。我们的BigCloneBench基准测试的实验表明,树内核的方法可以检测克隆与NiCad的MAP相当。此外,在使用Technical Debt数据集进行缺陷检测时,树核的效率最低,MRR、F分数和准确度分别为0.87、0.80和0.82。
2021-06-21 cs.SE
Revizor: A Data-Driven Approach to Automate Frequent Code Changes Based on Graph Matching
开发人员在其项目中所做的许多代码更改都是重复的,并构成了经常性的更改模式。从开放源代码库的版本历史中收集这些模式并建议其中最有用的模式作为快速修复是很有意义的。在本文中,我们介绍了Revizor-一个旨在为流行的Python IDE PyCharm构建自定义插件的工具。基于Revizer的插件可以采用更改模式,并在开发人员的代码编辑器中突出显示其应用程序的潜在位置。如果开发人员接受快速修复,插件会自动执行编辑。我们的方法使用基于图形的代码更改表示,这使得它能够支持复杂的分布式代码模式。经验丰富的开发人员也积极评价了这种基于Revizer的插件的可用性和性能。该工具的源代码和测试插件原型可在GitHub上获得:www.example.com。带有简短工具描述的演示视频可以在YouTube上找到:www.example.com。
2021-08-25 cs.SE
Leveraging Game-Based Platform to Teach Code Refactoring: An Experience with Refactoria
Stevens Institute of Technology(史蒂文斯理工学院)
本文通过课堂实验评估了基于游戏的工具 Refactoria 在教授代码重构和代码异味识别方面的效果,结果显示其感知有用性高,并能有效促进学生对重构概念的理解。
2026-10-01 cs.SE
Exploring the Advances in Identifying Useful Code Review Comments
本文系统梳理了代码评审评论有用性研究的发展,涵盖定义、数据集、开发者感知、影响因素和机器学习自动预测,并指出未来面临的开放问题与挑战。
2023-07-06 cs.SE
On Learning Meaningful Assert Statements for Unit Test Cases
软件测试是软件生命周期的重要组成部分,需要大量的时间和精力。据估计,软件开发人员花费近50%的时间来测试他们编写的代码。由于这些原因,研究界的一个长期目标是(部分)自动化软件测试。虽然已经提出了一些技术和工具来自动生成测试方法,但最近的工作批评了它们生成的断言语句的质量和有用性。因此,我们采用神经机器翻译(NMT)为基础的方法称为Atlas(自动学习断言语句)自动生成有意义的断言语句的测试方法。给定测试方法和焦点方法(即,测试中的主要方法),Atlas可以预测一个有意义的断言语句,以评估焦点方法的正确性。我们将Atlas应用于GitHub项目中的数千个测试方法,当只考虑前1个预测的断言时,它能够在31%的情况下预测开发人员手动编写的确切断言语句。当考虑前5个预测的断言语句时,Atlas能够在50%的情况下预测精确匹配。这些有希望的结果暗示了我们的方法作为(i)自动测试用例生成技术的补充,以及(ii)对开发人员的代码完成支持的潜在有用性,这些开发人员在编写测试代码时可以从推荐的断言语句中受益。
2020-02-19 cs.SE
"Go Home Copilot, You're Drunk": Understanding Developer Responses to Agent-Generated Code Review Comments
University of Saskatchewan(萨斯喀彻温大学);Singapore Management University(新加坡管理大学);Monash University(蒙纳士大学)
研究开发者对智能体生成的代码审查评论的回应,分析五个智能体在342个Python仓库生成的54791条评论,探讨解决率、开发者经验及影响评论有用性的特征,发现不同智能体解决率有差异,还确定未解决评论原因及影响因素,为改进相关反馈提供见解。
2026-07-31 cs.SE
On Usefulness of the Deep-Learning-Based Bug Localization Models to Practitioners
背景:开发人员花费了大量的时间和精力来定位bug。在文献中,许多研究人员提出了最先进的错误定位模型,以帮助开发人员轻松定位错误。另一方面,实践者期望bug定位工具满足某些标准,例如可信度、可伸缩性和效率。目前的模式无法满足这些标准,因此更难在实践中采用这些模式。最近,文献中已经提出了基于深度学习的错误定位模型,其表现出比最先进的模型更好的性能。目的:在这项研究中,我们想调查深度学习模型是否符合从业者的期望。方法:我们构建了一个卷积神经网络和一个简单的Logistic模型,以检查它们在定位错误的有效性。我们在五个用Java编写的开源项目上对这些模型进行训练,并将它们的性能与在这些数据集上训练的其他最先进模型的性能进行比较。结果如下:我们的实验表明,尽管深度学习模型的性能优于经典的机器学习模型,但它们仅部分满足从业者设定的采用标准。结论:这项工作提供的证据表明,从业者在将当前最先进的模型用于生产级用例时应该谨慎。它还强调了性能基准标准化的必要性,以确保错误定位模型得到公平和现实的评估。
2019-07-19 cs.SE
An Empirical Study of Usages, Updates and Risks of Third-Party Libraries in Java Projects
第三方库是开发软件系统的核心构建块。然而,过时的第三方库通常被使用,开发人员通常不太了解潜在的风险。因此,对第三方图书馆的使用、更新和风险进行定量和全面的研究,可以为可持续地改善生态系统提供实践性的见解。在本文中,我们在Java生态系统中进行了这样的研究。具体而言,我们进行库使用分析(例如,使用强度和过时性)和库更新分析(例如,更新强度和延迟)使用806个开源项目。这两项分析旨在从开源项目和第三方库的角度全面量化使用和更新实践。然后,我们进行库风险分析(例如,潜在的风险和开发人员的反应)的错误与15个常用的第三方库。该分析旨在量化使用过时库的潜在风险以及开发人员对风险的响应。我们从三个分析中得出的结论为开发人员和研究人员提供了关于维护第三方库(例如,智能警报和自动更新过时的库)。为了证明我们的研究结果的有用性,我们提出了一个错误驱动的警报系统,以帮助开发人员在更新第三方库版本时做出自信的决定。我们已经发布了我们的数据集,以促进有价值的应用程序和改善生态系统。
2020-02-25 cs.SE
Influence of Technical and Social Factors for Introducing Bugs
[This由于arXiv(arXiv:1811.01918)上的最新研究,论文已被作者撤回。随着现代开源范式使软件项目的贡献变得更加容易,参与这些项目的开发人员数量不断增加。开发人员数量的增长使得处理有害贡献变得更加困难。最近的研究发现,技术和社会因素可以预测GitHub上开源项目的成功。然而,这些研究并没有研究这些因素与引入错误之间的关系。我们的研究旨在调查技术(如开发人员的经验)和社会(如追随者的数量)因素对引入错误的影响,使用来自GitHub上托管的14个项目的信息。了解这些因素的影响可能对开发人员,代码审查人员和研究人员有用。例如,代码审查者可能希望仔细检查开发人员提交的与bug相关的因素。我们发现,技术因素在引入错误时具有一致的影响。另一方面,社会因素在bug引入中存在影响迹象,这需要更多的数据来进行适当的评估。此外,我们发现GitHub挖掘中存在的风险可能会影响因素结果。
2020-04-11 cs.SE
Infrastructure in Code: Towards Developer-Friendly Cloud Applications
云技术的普及导致了专门针对云环境的新型应用程序的开发。这些应用程序需要大量的云基础设施来运行,这带来了基础设施即代码方法,其中基础设施也使用与主应用程序并行的单独语言进行编码。在本文中,我们提出了一个新的概念代码中的基础设施,基础设施是从应用程序代码本身推导出来的,而不需要单独的规范。我们描述了这个概念,讨论了现有的解决方案,这些解决方案可以归类为代码中的基础设施及其局限性,然后介绍了我们自己的框架Kotless -一个可扩展的与云无关的Kotlin无服务器框架,支持两个云提供商,三个DSL和两个运行时。最后,我们通过展示Kotless在将现有应用程序迁移到无服务器环境中的效率来展示Kotless的有用性。
2021-08-17 cs.DC cs.SE
A Controlled Experiment of Different Code Representations for Learning-Based Bug Repair
最近,在源代码上训练深度学习模型获得了巨大的吸引力。由于这种模型是关于数字向量的推理,因此在向量化之前,需要将源代码转换为代码表示。已经提出了许多方法来表示源代码,从令牌序列到抽象语法树。然而,目前还没有系统的研究来了解代码表征对学习成绩的影响。通过一个对照实验,我们研究了在基于深度学习的程序修复中,各种代码表示对模型准确性和有用性的影响。我们训练了21种不同的生成模型,这些模型建议修复基于名称的错误,包括14种不同的同构代码表示,4种用于错误和修复代码的混合表示,以及3种不同的嵌入。我们评估模型在各种代码表示中产生的修复建议是否可自动修补,这意味着它们可以转换为有效的代码,可以应用于错误代码以修复它。我们还进行了开发人员研究,以定性评估不同代码表示中推断修复的有用性。我们的研究结果突出了代码表示的重要性及其对学习和有用性的影响。我们的发现表明:(1)虽然代码抽象有助于学习过程,但从开发人员的角度来看,它们可能会对推断修复的有用性产生不利影响;这强调了需要从从业者的角度来看待生成的补丁,这在文献中经常被忽视,(2)混合表示可以优于同构代码表示,(3)错误类型可以影响不同代码表示的有效性;尽管当前技术针对所有错误类型使用单个代码表示,但是不存在适用于所有错误类型的单个最佳代码表示。
2022-07-15 cs.SE
Assisted Specification of Code Using Search
我们描述了一个智能助手的基础上挖掘现有的软件存储库,以帮助开发人员交互式地创建可检查的规范的代码。最有用的是,我们在子系统级别应用它,即1000-10000行的代码块,可以独立或集成到现有应用程序中以提供额外的功能或能力。最终的规范包括应该编写什么的语法描述和应该做什么的语义规范,最初以测试用例的形式。所生成的规范被设计用于使用已经提出的各种技术(包括机器学习、代码搜索和程序合成)的自动代码生成。我们的研究目标是使这些技术能够有效地用于创建子系统,而不需要开发人员从头开始编写详细的规范。
2022-09-20 cs.SE
Building the perfect game -- an empirical study of game modifications
游戏开发商不能总是满足游戏社区不断增长和变化的需求,因为开发商的时间表往往已经超负荷。所谓的modder可以帮助游戏开发者满足玩家的需求。Moders是为游戏提供修改或全新内容的爱好者。通过支持模组,游戏开发者可以满足玩家群快速增长和不断变化的需求。Moders有可能在延长游戏寿命方面发挥作用,从而节省游戏开发人员的时间和金钱,并为他们的玩家群带来更好的整体游戏体验。在本文中,我们实证研究了Nexus Mods分发平台上20款最受欢迎游戏的9,521个mods的元数据。我们的目标是从定量的角度为Nexus Mods分发平台的modding社区提供有用的见解,并为研究人员提供未来探索游戏mods的坚实基础。通过这样做,游戏开发人员可以潜在地减少开发时间和成本,因为通过mods增加了游戏的可重玩性。我们发现,提供官方支持的MOD可以有利于感知质量的游戏的MOD。此外,MOD用户愿意为MOD提交错误报告,但他们通常无法使用Nexus Mods平台的错误报告工具系统地完成此操作,导致难以解决的低质量错误报告。根据我们的研究结果,我们建议那些希望为自己的游戏建立一个活跃的改装社区的游戏开发者为改装社区提供官方支持的改装工具。此外,我们建议MOD发行平台,如Nexus Mods,改进其错误报告系统,以接收更高质量的错误报告。
2021-03-12 cs.SE
Unsafe and Unused? A History of Utility Code in Mature Open Source Projects
Rochester Institute of Technology(罗切斯特理工学院)
研究分析了七个成熟开源项目中实用代码的使用、复杂度、协作和安全性的相关性,发现实用代码可能更容易涉及漏洞,旨在帮助开发者避免创建不安全的实用代码。
2026-04-30 cs.SE
What Characteristics Make ChatGPT Effective for Software Issue Resolution? An Empirical Study of Task, Project, and Conversational Signals in GitHub Issues
本文研究了ChatGPT在软件问题解决中的有效性特征,发现其在代码生成和工具推荐方面表现较好,但代码解释能力较弱,且更受欢迎的项目和经验丰富的开发者从中受益更多。
2025-09-29 cs.SE
Gistable: Evaluating the Executability of Python Code Snippets on GitHub
软件开发人员在线创建和共享代码,以演示程序设计语言概念和编程任务。代码段是解释和演示编程概念的有用方法,但可能并不总是直接可执行的。代码段可能包含分析错误,或者在环境包含未满足的依赖项时无法执行。本文对通过GitHub gist系统共享的Python代码片段的可执行状态以及熟悉软件配置的开发人员正确配置和运行它们的能力进行了实证分析。我们发现,75.6%的GIST需要非平凡的配置,以克服缺少的依赖关系,配置文件,依赖于特定的操作系统,或其他一些环境配置。我们的研究还表明,开发人员在解决配置错误时对资源名称的自然假设只有不到一半的正确率。我们还介绍了Gistable,一个建立在GitHub的gist系统上的数据库和可扩展框架,它提供了可执行的代码片段,以便在软件工程中进行可重复的研究。Gistable包含10,259个代码片段,其中大约5,000个带有Dockerfile,用于配置和执行它们而不会发生导入错误。Gistable可在https://github.com/gistable/gistable上公开获取。
2018-08-14 cs.SE
Factors and actors leading to the adoption of a JavaScript framework
随着JavaScript的日益普及,出现了各种各样的JavaScript框架,旨在帮助开发人员解决编程任务。然而,JavaScript框架的数量已经迅速上升到数千个版本。对从业人员来说,确定最适合其需要的框架并开发适合这些需要的新框架是一项挑战。此外,缺乏关于是什么驱使开发人员做出选择的知识。本文探讨了导致选择JavaScript框架的因素和参与者。我们对半结构化访谈进行了定性解释研究。我们采访了18位决策者关于JavaScript框架的选择,直到达到理论饱和。通过编码的采访回应,我们提供了一个理想的JavaScript框架采用因素的模型。这些因素被分为几类,这些类别是通过接受和使用技术的统一理论得出的。这些因素是性能预期(性能,规模),努力预期(自动化,可学习性,复杂性,可理解性),社会影响(竞争对手分析,合议建议,社区规模,社区响应),促进条件(适用性,更新,模块化,隔离,可扩展性)和价格价值。四个参与者的组合,即客户、开发人员、团队和团队领导者,导致了选择。我们的模型有助于通过软件工程师的技术相关的知识体系。作为一个实际的含义,我们的模型是有用的决策者时,评估JavaScript框架,以及开发人员生产理想的框架。
2018-03-09 cs.SE
Just-in-Time Code Duplicates Extraction
重构是软件维护中的一项关键任务,通常用于执行更好的设计和编码实践,同时处理设计缺陷。提取方法重构广泛用于将重复的代码片段合并为一个新方法。一些研究尝试推荐使用不同技术的提取方法重构机会,包括程序切片、程序依赖图分析、更改历史分析、结构相似性和特征提取。然而,不管是哪种方法,大多数现有的方法都会干扰开发人员的工作流程:它们要求开发人员停止编码并分析建议的机会,并且还考虑整个项目中的所有重构建议,而不关注开发上下文。为了提高提取方法重构的采用率,在本文中,我们的目标是研究机器学习和深度学习算法在维护开发人员工作流程的同时对其推荐的有效性。所提出的方法依赖于挖掘先前应用的提取方法重构并提取其特征以训练深度学习分类器,该分类器在用户的代码中检测它们。我们将我们的方法实现为IntelliJ IDEA的插件,称为AntiCopyPaster。为了开发我们的方法,我们在来自13个开源Apache项目的18,942个代码片段的数据集上训练和评估了各种流行的模型。结果表明,最佳模型是卷积神经网络(CNN),它推荐了适当的提取方法重构,F度量为0.82。我们还进行了定性研究与72开发人员评估的有用性开发的插件。结果表明,开发人员倾向于欣赏这种方法的想法,并对插件操作的各个方面感到满意。
2023-02-07 cs.SE
The Value of Effective Pull Request Description
University of Zurich(苏黎世大学);INESC TEC(葡萄牙科技研究所)
研究探讨了PR描述对代码审查的影响,发现目的和代码解释对开发者有帮助,而明确反馈类型预测更改接受度。
2026-02-16 cs.SE
SONAR: Task-Aware Code Summary Evaluation for LLM Consumers Without References
University of Virginia(弗吉尼亚大学)
该研究提出无需参考摘要的SONAR框架,从四个维度评估代码摘要,发现正确性、抽象性对LLM性能影响显著,简洁性、流畅性影响微弱,还明确了不同LLM在各维度的优劣。
2026-08-06 cs.SE
Understanding Emojis :) in Useful Code Review Comments
研究通过分析代码审查评论中表情符号的情感与语义,结合表情符号特征与预训练嵌入构建模型,显著提升了评论有用性评估的准确率。
2024-01-23 cs.SE
Is this Build Failure Related to my Patch? An Empirical Study of Unrelated Build Failures in Continuous Integration
University of Otago School of Computing(奥塔哥大学计算机学院);Royal Military College of Canada Department of Mathematics and Computer Science(加拿大皇家军事学院数学与计算机科学系)
研究通过分析77354个CI构建失败,探讨开发者判断构建失败是否与当前补丁相关的过程,提出基于PU学习模型的预测方法,提升识别无关构建失败的效率。
2026-05-07 cs.SE
Cognitive-Driven Development Helps Software Teams to Keep Code Units Under the Limit!
本文研究了巴西科技公司团队使用认知驱动开发(CDD)从零构建学习管理工具的经验,发现CDD能有效控制代码单元规模并简化测试,但开发者会根据实际复杂性适当放宽限制。
2023-05-24 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
Characterizing the Usefulness of Code Review Comments in Scientific Software for Software Quality and Scientific Rigor
University of Central Arkansas(阿肯色中央大学);University of Tennessee(田纳西大学)
本文研究科学开源软件中代码审查评论的有用性,发现其与通用软件有相似特征,但部分评论无用,且正负情绪反应相关性不一。
2026-04-26 cs.SE
Providing Real-time Assistance for Repairing Runtime Exceptions using Stack Overflow Posts
漏洞(RE)是代码开发过程中经常出现的一类重要的bug。传统的自动程序修复(APR)工具在这种“开发中”用例中的使用有限,因为它们需要一个测试套件作为修补Oracle。因此,开发人员通常倾向于手动解决他们在开发中的RE,通常通过参考技术论坛,如Stack Overflow(SO)。为了自动化这个手动过程,我们扩展了我们以前的工作,MAESTRO,为开发人员提供实时的【形】帮助,通过推荐一个相关的补丁建议SO帖子,并从这个帖子合成一个修复补丁来修复开发人员代码中的RE,来修复Java RE。MAESTRO利用了一个半自动地从SO帖子中挖掘的异常异常模式(REP)库,通过一个相对便宜的一次性增量过程。REP是触发给定RE的语句的抽象序列。REP用于索引SO帖子,检索与开发人员代码展示的RE实例最相关的帖子,然后调解从SO帖子中提取具体修复的过程,抽象出特定于帖子的细节,并将修复具体化到开发人员的错误代码。我们评估MAESTRO上公布的RE基准组成的78个实例。MAESTRO能够在27%的病例中在顶部位置生成正确的修复补片,在40%的病例中在前3位内生成正确的修复补片,并且在81%的病例中总体返回有用的伪影。此外,使用REP证明有助于MAESTRO的性能的各个方面,从排名和搜索SO职位合成补丁从一个给定的职位。特别是,45%的正确补丁生成的MAESTRO不能产生的基线技术不使用REP,即…
2022-02-09 cs.SE
On the Possibility of Breaking Copyleft Licenses When Reusing Code Generated by ChatGPT
本文通过大规模实验(生成超7万个方法实现)研究ChatGPT推荐代码时复现copyleft代码的风险,发现增大上下文会提高复现概率,而提高温度参数可缓解该问题。
2025-02-07 cs.SE
Rationale Dataset and Analysis for the Commit Messages of the Linux Kernel Out-of-Memory Killer
本文构建了 Linux 内核 OOM Killer 组件提交信息的带标签数据集,分析理由信息的存在、演变与结构,发现 98.9% 的提交包含理由且经验丰富开发者约 60% 的句子报告理由。
2024-02-06 cs.SE
Visual Notations in Container Orchestrations: An Empirical Study with Docker Compose
上下文:支持基础设施即代码的容器编排工具允许开发人员和操作人员之间进行新形式的协作。尽管如此,它们基于文本的性质允许天真的错误,并且随着复杂性的增加而更难阅读。我们可以找到一些用于定义容器编排的低代码方法的示例,并且似乎缺乏实证研究来显示这些方法的优点和局限性。目标和方法:我们假设,基于Docker的编排的完整视觉符号可以减少工作量、出错率和开发时间。因此,我们开发了一个工具,该工具具有用于Docker Compose配置的可视化符号,并且我们在新手开发人员的对照实验中对其进行了经验评估。结果如下:结果显示,在定义Docker Compose文件时,开发时间和错误倾向显着减少,支持我们的假设。与会者还认为原型更容易使用和有用,并希望在未来使用它。
2022-07-19 cs.SE
Improving Code Review with GitHub Issue Tracking
软件质量对于技术公司来说是一个重要的问题,因为它极大地影响了最终产品的效率,有用性和可维护性;因此,代码审查是软件开发人员必须做的活动。在代码审查过程中,高级工程师监视其他开发人员的工作,以发现可能的问题并执行编码标准。GitHub是使用最广泛的开源软件平台之一,吸引了数百万开发人员使用它来存储他们的项目。本研究旨在从代码审查的角度分析GitHub上的代码质量。我们使用GitHub的Issues Tracker检查了代码审查过程,该跟踪器允许团队成员在批准之前评估,讨论和分享他们对拟议代码的意见。基于我们的分析,我们提出了一种新的方法,通过促进规律性和社区参与来改善代码审查过程。
2022-10-10 cs.SE cs.SI
What You Need is What You Get: Theory of Mind for an LLM-Based Code Understanding Assistant
本文提出一个基于LLM的代码理解对话助手,通过推断用户心理状态实现个性化交互,并在十四名初学者的受试者内研究中验证了其有效性,为相关工具设计提供了见解。
2024-08-08 cs.SE
The Impact Of Bug Localization Based on Crash Report Mining: A Developers' Perspective
本文通过18个月、三个团队的实践,评估基于崩溃报告分组的缺陷定位方法,发现开发者选择候选缺陷时考虑多种因素,该方法精确度约80%,并收集了开发者对可疑文件实用性的反馈。
2024-03-16 cs.IR cs.SE
Explaining Software Bugs Leveraging Code Structures in Neural Machine Translation
提出基于transformer的生成模型Bugsplainer,利用源代码结构信息和缺陷模式自动生成软件缺陷的自然语言解释,评估与开发者研究表明其优于多个基线。
2025-01-28 cs.SE
DevBench: A Realistic, Developer-Informed Benchmark for Code Generation Models
California Institute of Technology(加州理工学院);Microsoft(微软公司)
DevBench通过真实开发者数据和生成模型合成,构建了包含六种编程语言和任务的1800个实例,评估大语言模型在代码补全任务中的表现,揭示模型在语法精度、语义推理和实用价值上的差异。
2026-05-16 cs.AI cs.LG cs.SE
TOUR: Dynamic Topic and Sentiment Analysis of User Reviews for Assisting App Release
The Chinese University of Hong Kong(香港中文大学);Harbin Institute of Technology(哈尔滨工业大学);Singapore Management University(新加坡管理大学)
应用程序评论提供用户意见和新出现的问题(例如,新的bug)有关的应用程序发布.由于应用评论的动态性,评论的主题和情绪会随着应用发布版本而变化。虽然有几项研究专注于通过分析用户对应用程序功能的情绪来总结用户意见,但没有发布实用的工具。大量的评论和干扰词也需要一个自动化的工具来监控用户评论。在本文中,我们介绍了旅游动态主题和情感分析的用户评论。TOUR能够(i)检测和总结应用程序版本中出现的应用程序问题,(ii)识别用户对应用程序功能的看法,以及(iii)优先考虑重要的用户评论,以便于开发人员进行检查。TOUR的核心技术包括在线主题建模方法和情感预测策略。TOUR为开发人员提供了自定义超参数的入口,并以交互方式呈现结果。我们通过对15名开发人员进行的开发人员调查来评估TOUR,所有人都确认了TOUR推荐的功能更改的实用性。
2021-08-20 cs.CL cs.SE
Can Developers Prompt? A Controlled Experiment for Code Documentation Generation
本研究通过受控实验发现,开发者在代码文档生成中缺乏提示工程技能,临时提示效果不如预定义提示,需进一步研究其提示偏好与支持需求。
2024-08-01 cs.AI cs.HC cs.SE
Automated Identification of On-hold Self-admitted Technical Debt
现代软件是在相当大的时间压力下开发的,这意味着当涉及到编写良好的代码和完成工作的代码时,开发人员往往不得不采取妥协。在过去的几十年里,这导致了“技术债务”的概念,这是一种短期的黑客行为,可能会产生长期的维护问题。自我承认的技术债务(SATD)是技术债务的一种特殊形式:开发人员有意识地执行黑客行为,但也通过添加注释作为提醒(或作为认罪)在代码中记录它。我们专注于一种特定类型的SATD,即“暂停”SATD,其中开发人员在其评论中记录了由于其工作范围之外的条件(例如,在可以实现功能之前,必须关闭打开的问题)。我们提出了一种基于正则表达式和机器学习的方法,该方法能够检测代码注释中引用的问题,并将检测到的实例自动分类为"On-hold"(引用问题是为了表明在完成任务之前需要等待其解决),或作为"交叉引用",(该问题被引用以记录代码,例如解释实现选择背后的基本原理)。我们的方法还挖掘项目的问题跟踪器,以检查是否保持SATD实例是"多余的"并且可以被移除(即,引用的问题已关闭,但SATD仍在代码中)。我们的评估证实,我们的方法确实可以识别相关的情况下,等待SATD。我们通过识别原始开发人员确认的开源项目中多余的暂停SATD实例来说明其有用性。
2020-09-28 cs.SE
Using Machine Intelligence to Prioritise Code Review Requests
Ericsson AB(爱立信公司);Blekinge Institute of Technology(布莱金厄理工学院)
现代代码审查(MCR)是审查需要与现有代码库合并的新代码更改的过程。作为开发人员,每天可能会收到许多代码审查请求,即,需要对审查请求进行优先排序。手动确定审查请求的优先级是一个具有挑战性且耗时的过程。为了解决上述问题,我们在爱立信进行了一项工业案例研究,旨在开发一种名为Pineapple的工具,该工具使用贝叶斯网络来优先考虑代码审查请求。为了验证我们的方法/工具,我们将其部署在爱立信的实时软件开发项目中,其中有150多名开发人员开发电信产品。我们专注于评估我们的方法的预测性能,可行性和实用性。结果表明,菠萝具有良好的预测性能(RMSE = 0.21和MAE = 0.15)。此外,大约82.6%的Pineapple用户认为该工具可以通过提供可靠的结果来支持代码审查请求优先级,大约56.5%的用户认为它有助于减少代码审查的交付时间。作为未来的工作,我们计划通过纵向调查评估菠萝的预测性能,有用性和可行性。
2021-02-11 cs.AI cs.SE
Analyzing Prompt Influence on Automated Method Generation: An Empirical Study with Copilot
University of Milano - Bicocca(米兰比可卡大学)
本文系统研究八种提示词特征对Copilot生成Java代码质量的影响,发现示例和方法目的摘要等特征能显著提升生成结果的正确性、复杂度、规模和相似度。
2024-02-13 cs.AI cs.SE
A Survey of Web Application Security Tutorials
McGill University(麦吉尔大学)
本文调研132个免费安全教程,发现大多数教程来自供应商,侧重高层解释而非具体实现指导,缺乏可运行代码示例和权威资源链接。
2026-03-23 cs.CR cs.SE
Leveraging Unsupervised Learning to Summarize APIs Discussed in Stack Overflow
Carleton University(卡尔顿大学)
自动源代码摘要是一项任务,它生成有关方法和类的目的、用法和/或实现的摘要信息,以支持对这些代码实体的理解。针对代码摘要中的监督学习和无监督学习,已经提出了多种方法和技术,然而,它们大多集中于为一段代码生成摘要。此外,很少有作品利用非官方文档。本文提出了一种自动和新颖的方法来总结堆栈溢出中讨论的Android API方法,我们认为这是本研究中的非官方文档。我们的方法将API方法的名称作为输入,并基于该API方法的Stack Overflow讨论生成一个自然语言摘要。我们对16位Android开发人员进行了一项调查,以评估我们自动生成的摘要的质量,并将其与官方Android文档进行比较。我们的研究结果表明,虽然开发人员发现官方文档更有用的一般,生成的摘要也有竞争力,特别是提供实施细节,并可以用作指导开发人员在软件开发和维护任务的补充来源。
2021-11-27 cs.LG cs.SE
Towards Full-line Code Completion with Neural Language Models
Peking University(北京大学)
代码完成系统在给出部分完成的代码片段的情况下向开发者建议未来的代码元素。代码完成是集成开发环境(IDE)中最有用的功能之一。目前,大多数代码完成技术一次预测单个令牌。在本文中,我们进一步讨论了直接完成整行代码而不是单个令牌的概率。我们相信,建议更长的代码序列可以进一步提高开发人员的效率。最近,神经语言模型已被采用作为代码完成的首选方法,我们相信这些模型仍然可以应用于整行代码完成一些改进。我们在两个真实世界的Python语料库上进行实验,并基于源代码标记或语法动作评估现有的神经模型。结果表明,神经语言模型可以在我们的任务上取得可接受的结果,具有显著的改进空间。
2020-09-18 cs.CL cs.SE
Towards Enhancing the Reproducibility of Deep Learning Bugs: An Empirical Study
Dalhousie University(达尔豪斯大学);Polytechnique Montreal(蒙特利尔理工学院)
本文通过构建668个深度学习缺陷数据集并复现其中165个缺陷,识别出十种编辑操作和五类有用信息,使开发者缺陷复现率提升22.92%、复现时间缩短24.35%,为提升深度学习缺陷可复现性提供了实证依据。
2024-10-22 cs.LG cs.SE
Closing the Gap: A User Study on the Real-world Usefulness of AI-powered Vulnerability Detection & Repair in the IDE
Department of Computer Science, Iowa State University(计算机科学系,爱荷华州立大学);Microsoft Data & AI(微软数据与人工智能)
本文研究了AI驱动的漏洞检测与修复工具在IDE中的实际有用性,通过17名专业开发者使用DeepVulGuard工具的实证研究发现,尽管该工具前景广阔,但高误报率和不可应用的修复使其尚未能用于实际场景。
2025-04-25 cs.CR cs.LG cs.SE
Understanding the Limits of Automated Evaluation for Code Review Bots in Practice
Bilkent University(比尔肯特大学)
研究探讨了在工业环境中自动化评估LLM驱动的代码审查机器人评论的可行性及限制,发现不同模型和评估方法在与人类标签的一致性上表现不一,揭示了静态 artifacts 难以捕捉上下文约束和优先级决策的挑战。
2026-04-27 cs.AI cs.SE
Precision in Practice: Knowledge Guided Code Summarizing Grounded in Industrial Expectations
School of Computer Science, Wuhan University, China(武汉大学计算机科学学院);Department of Computer Science and Engineering, The Hong Kong University of Science and Technology, China(香港科学与技术大学计算机科学与工程系);Department of Computer Science(计算机科学系)
ExpSum 通过整合元数据抽象和领域知识检索,生成符合工业期望的代码摘要,显著提升摘要质量与实用性。
2026-02-03 cs.AI cs.SE