On Multi-Modal Learning of Editing Source Code
Columbia University(哥伦比亚大学)
近年来,神经机器翻译器(NMT)在自动编辑源代码方面显示出了希望。典型的基于NMT的代码编辑器只考虑需要更改的代码作为输入,并建议开发人员从修补代码的排名列表中进行选择-其中正确的代码可能并不总是位于列表的顶部。虽然基于NMT的代码编辑系统生成了一系列看似合理的补丁,但正确的补丁取决于开发人员的需求,并且通常取决于应用补丁的上下文。因此,如果开发人员提供一些提示,使用自然语言,或提供补丁上下文,NMT模型可以从中受益。作为概念的证明,在这项研究中,我们利用三种形式的信息:编辑位置,编辑代码上下文,提交消息(作为开发人员的自然语言的提示代理)自动生成NMT模型的编辑。为此,我们构建了MODIT,一个基于多模态NMT的代码编辑引擎。通过深入的调查和分析,我们表明,开发人员的提示作为一种输入方式可以缩小搜索空间的补丁,并优于国家的最先进的模型生成正确的补丁代码的前1位。
2021-08-15 cs.LG cs.PL 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
Next Edit Prediction: Learning to Predict Code Edits from Context and Interaction History
为弥补代码补全与聊天式编辑的不足,本文提出Next Edit Prediction任务,通过从交互历史推断开发者意图来预测后续代码编辑的位置与内容,并构建了数据集与基准进行模型微调与评估,奠定了主动协作的代码编辑新范式。
2025-09-14 cs.LG cs.SE
NES: An Instruction-Free, Low-Latency Next Edit Suggestion Framework Powered by Learned Historical Editing Trajectories
Ant Group, China(蚂蚁集团,中国);UNSW Sydney(悉尼新南威尔士大学)
NES通过学习历史编辑轨迹,为代码编辑提供无指令、低延迟的建议,实现75.6%的定位准确率和27.7%的精确匹配率,已在蚂蚁集团服务超2万名开发者。
2026-04-01 cs.LG cs.SE
GrACE: Generation using Associated Code Edits
Microsoft(微软);University of Pennsylvania(宾夕法尼亚大学);Microsoft Research(微软研究院)
本文提出 GrACE 方法,通过将先前相关代码编辑知识注入预训练代码大语言模型,在 Codex 和 CodeT5 上显著提升了代码编辑预测性能,top-1 正确编辑代码分别比现有符号和神经方法提高 29% 和 54%。
2023-09-20 cs.LG cs.SE
Forest: Structural Code Editing with Multiple Cursors
软件开发人员经常重构代码。通常,单个逻辑重构更改涉及更改源代码库中的多个相关组件,例如重命名变量或函数的每次出现。虽然许多代码编辑器可以执行这种常见和通用的重构,但它们不支持更复杂的重构或特定于给定代码库的重构。对于这些,作为一种灵活的(尽管交互性较低)替代方案,开发人员可以编写重构脚本,通过操纵程序的树表示来实现任意复杂的逻辑。在这项工作中,我们提出了森林,结构化的代码编辑器,旨在弥合代码编辑器的交互性和重构脚本的表现力之间的差距。虽然结构化编辑器作为通用代码编辑器占据了一席之地,但这项工作的关键见解是,它们实现了一种新颖的结构化多光标设计,使Forest能够达到与重构脚本类似的表现力; Forest允许在多个程序位置同时执行单个操作,从而支持复杂的重构。为了支持交互性,Forest提供了文本代码编辑器的典型功能,例如通过其文本表示编写和显示程序。我们的评估表明,森林允许执行类似于那些从重构脚本的编辑,同时仍然是交互式的。我们尝试使用Forest对48个真实的重构脚本进行编辑,发现其中11个是可行的,而另外17个添加了新功能也是可行的。我们相信,多光标设置发挥了结构化编辑的优势,因为它受益于可靠和富有表现力的命令。我们的研究结果表明,多光标结构化编辑器可以用于执行小规模的专门重构。
2022-10-20 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
Smart Paste: Automatically Fixing Copy/Paste for Google Developers
Google(谷歌)
本文提出Smart Paste,通过迭代开发和扩展,为Google开发者环境提供粘贴后编辑建议,显著提升代码效率,接受率高达45%。
2026-04-13 cs.HC cs.LG cs.SE
Does Collaborative Editing Help Mitigate Security Vulnerabilities in Crowd-Shared IoT Code Examples?
工作背景:随着众包开发人员论坛的激增,软件开发人员越来越多地在论坛中与其他人分享更多的编程问题的编码解决方案。网站上知识共享的分散性引起了人们对共享安全脆弱代码的关注,这些代码可以被重用到关键任务软件系统中,从而使这些系统在此过程中变得脆弱。在Stack Overflow等论坛中引入了协作编辑,以提高共享内容的质量。目的:在本文中,我们通过分析三个Stack Exchange站点(Stack Overflow、Arduino和Raspberry Pi)中的IoT代码片段及其修订版,研究代码编辑是否可以减轻共享的易受攻击代码示例。方法:我们分析了共享IoT C/C++代码片段中存在的漏洞,因为C/C++是关键任务设备和低功耗IoT设备中使用最广泛的语言之一。我们进一步分析了对这些代码片段所做的修改及其影响。结果:在740个代码片段中发现了CWE 788 - Access of Memory Location After End of Buffer等漏洞。然而,我们发现绝大多数帖子没有修改,或者没有对代码片段本身进行修改(740个中的598个)。我们还发现,修改最有可能导致代码片段中的漏洞数量没有变化,而不是恶化或改进代码片段。结论:我们的结论是,目前的协作编辑系统在论坛上可能不足以帮助减轻共享代码中的漏洞。
2022-09-28 cs.SE
ConE: A Concurrent Edit Detection Tool for Large Scale Software Development
Microsoft Research(微软研究院);Delft University of Technology(代尔夫特理工大学);Facebook
现代复杂的软件系统正在不断扩展和调整。负责此任务的开发人员可能来自不同的团队或组织,并且可能分布在世界各地。这可能使跟踪其他开发人员正在做什么变得困难,这可能导致多个开发人员同时编辑相同的代码区域。反过来,这可能导致难以合并的更改,甚至合并冲突,难以检测的逻辑错误,重复工作和浪费开发人员的生产力。为了解决这个问题,我们探讨了这个问题的程度在拉请求为基础的软件开发模型。我们研究了微软六个大型存储库半年的变化,其中每个月至少创建1,000个拉取请求。我们发现在不同拉取请求中同时编辑的文件更有可能引入错误。基于这些发现,我们设计、实现和部署了一个名为ConE(并发编辑检测器)的服务,该服务可以主动检测包含并发编辑的拉取请求,以帮助缓解由它们引起的问题。ConE被设计成可扩展的,并且在仍然标记相关的并发编辑的文件的同时最小化错误警报。ConE的关键概念包括检测拉取请求之间的重叠程度,以及识别很少并发编辑的文件。为了评估ConE,我们报告了它在Microsoft内部234个存储库上的操作部署。ConE评估了26,000个拉取请求,并就冲突的更改提出了775条建议,这些建议在超过70%(554)的案例中被评为有用。从对48名用户的采访中,我们了解到他们认为ConE可以节省解决冲突和避免重复工作的时间,超过90%的人打算继续每天使用该服务。
2021-09-25 cs.LG cs.PL cs.SE
An Empirical Study of Java Code Improvements Based on Stack Overflow Answer Edits
Faculty of Information and Communication Technology, Mahidol University(马希达大学信息与通信技术学院);State University of Ceara (UECE)(塞阿拉州立大学)
本研究通过分析Stack Overflow的Java回答编辑,识别可改进的开源Java代码,发现近7%的采纳回答有多次修订,近半数编辑代码可应用于开源项目,11个bug修复方案被接受。
2026-08-25 cs.SE
CROCODIL: Cross-Model Code Editing with LLMs
The University of Texas at Austin(德克萨斯大学奥斯汀分校);Cisco Research(思科研究院)
本研究针对多LLM协作时的外来代码过度编辑问题,提出CROCODIL后训练框架,通过相似度奖励与执行奖励的乘积优化,在保证功能正确的同时减少了不必要的代码编辑。
2026-09-04 cs.CL cs.SE
git2net - Mining Time-Stamped Co-Editing Networks from Large git Repositories
来自软件仓库的数据已经成为软件工程过程实证研究的重要基础。存储库挖掘文献中反复出现的主题是开发人员网络的推断,例如从项目的提交历史中捕获协作,协调或通信。大多数研究的网络是基于在文件,模块或包的水平上定义的软件制品的合著。虽然这种方法导致了对软件开发的社会方面的见解,但它忽略了关于代码更改和代码所有权的详细信息,例如,哪些开发人员编写了哪些代码行,这些信息包含在软件项目的提交日志中。为了解决这个问题,我们引入了git2net,这是一个可扩展的python软件,可以帮助提取大型git存储库中的细粒度协同编辑网络。它使用文本挖掘技术来分析文件中文本修改的详细历史。这些信息使我们能够构建定向、加权和时间戳网络,其中链接表示一个开发人员编辑了最初由另一个开发人员编写的源代码块。我们的工具应用于开源和商业软件项目的案例研究。我们认为,它为人类协作模式的高分辨率数据开辟了一个巨大的新来源。
2019-03-25 cs.CY cs.SE cs.SI
A Large Scale Empirical Study of the Impact of Spaghetti Code and Blob Anti-patterns on Program Comprehension
上下文:几项研究调查了反模式的影响(即,在维护活动期间,经常出现的设计问题的“糟糕”解决方案),并报告说反模式严重影响了开发人员编辑文件所需的工作。但是,在开发人员编辑文件之前,他们必须了解系统的源代码。这些源代码必须易于开发人员理解。目的:在这项工作中,我们提供了一个完整的评估两个实例的两个反模式,斑点或意大利面条代码,对程序的理解的影响。方法:我们通过在蒙特利尔理工学院(加拿大)进行的三项实证研究分析了这两种反模式的影响,有24名参与者;在卡尔顿大学(加拿大)有30名参与者;在巴西利卡塔大学(意大利)有79名参与者。结果:我们收集了来自三所大学的133名不同参与者的372项任务的数据。我们使用三个指标来评估开发人员对源代码的理解:(1)完成每个任务的持续时间;(2)正确答案的百分比;(3)NASA任务负荷指数。结论:我们报告说,虽然单次出现的Blob或Spaghetti代码反模式对代码理解的影响不大,两次出现的Blob或Spaghetti代码显着增加了开发人员的时间花在他们的任务,减少他们的正确答案的百分比,并增加他们的努力。因此,我们建议开发人员对这两种反模式都采取行动,只要有可能,就应该从源代码中重构出来。我们还建议进一步研究反模式的组合,而不是一次一个地研究单个反模式。
2020-09-05 cs.SE
NCQ: Code reuse support for node.js developers
代码重用是软件开发的重要组成部分。代码重用实践的采用在Node.js开发人员中尤其普遍。Node.js包管理器NPM索引了超过100万个包,开发人员经常寻找包来解决编程任务。由于软件包数量众多,选择合适的软件包既困难又耗时。为了提高通过第三方包大量重用代码的开发人员的生产力,我们提出了节点代码查询(NCQ),一个读取-评估-打印-循环环境,允许开发人员1)使用自然语言查询搜索NPM包,2)搜索与这些包相关的代码片段,3)自动纠正这些代码片段中的错误,4)快速设置新的环境来测试这些片段,以及5)在搜索和编辑模式之间转换。在两项共有20名参与者的用户研究中,我们发现参与者使用NCQ比基线方法更快地开始编程并更快地完成任务,并且他们喜欢搜索代码片段和包等功能。我们的研究结果表明,NCQ使Node.js开发人员在重用代码方面更有效率。
2023-01-02 cs.SE
Analysing Time-Stamped Co-Editing Networks in Software Development Teams using git2net
来自软件仓库的数据已经成为软件工程过程实证研究的重要基础。存储库挖掘文献中反复出现的主题是开发人员网络的推断,例如从项目的提交历史中捕获协作,协调或通信。大多数研究的网络是基于软件人工制品的合著。因为这忽略了代码更改和代码所有权的详细信息,我们引入了git 2net,一个可扩展的python软件,它有助于在大型git仓库中提取细粒度的协同编辑网络。它使用文本挖掘技术来分析文件中文本修改的详细历史。我们将我们的工具应用于两个案例研究,使用多个开源的GitHub存储库以及商业软件项目。具体来说,我们使用超过120万次提交和超过25'000名开发人员的数据来测试软件团队中开发人员生产力和共同编辑模式之间关系的假设。我们认为,git 2net开辟了一个巨大的高分辨率的人类协作模式的数据,可用于推进理论在经验软件工程,计算社会科学和组织研究的新来源。
2019-11-21 cs.MA cs.SE cs.SI
NLP2Code: Code Snippet Content Assist via Natural Language Tasks
开发人员越来越多地利用互联网将代码片段集成到他们的程序中。为了节省开发人员从开发环境切换到Web浏览器以寻找合适的代码片段所需的时间,我们引入了NLP 2Code,这是一个代码片段的内容帮助。与相关工具不同,NLP 2Code直接集成到源代码编辑器中,并为开发人员提供内容辅助功能,以缩小开发人员需求与代码片段Meta数据之间的词汇差距。我们对NLP 2Code的初步评估表明,大多数调用都会导致用户认为有用的代码片段,并且该工具能够支持广泛的任务。
2017-08-02 cs.SE
Understanding and Evaluating Developer Behaviour in Programming Tasks
本研究通过MIMESIS插件记录开发者IDE交互,经三项实验分析其代码访问、关联与编辑行为,并采用行为抽象以比较个体差异,支持自动评估。
2024-03-13 cs.SE
Neural Networks for Modeling Source Code Edits
Google Brain(谷歌大脑)
程序设计语言正在成为机器学习的一个具有挑战性和有趣的领域。一个核心任务,这是近年来受到极大的关注,是建立源代码的生成模型。然而,据我们所知,以前的生成模型一直是在生成代码的静态快照方面构建的。在这项工作中,我们将源代码视为动态对象,并解决软件开发人员对源代码文件进行编辑的建模问题。这需要从先前的编辑中提取意图并利用它来生成后续编辑。我们开发了几个神经网络,并使用合成数据来测试它们学习具有挑战性的编辑模式的能力,这些模式需要很强的泛化能力。然后,我们在Google源代码的大规模数据集上收集和训练我们的模型,该数据集由数千名Python开发人员的数百万次细粒度编辑组成。从建模的角度来看,我们的主要结论是,注意力和指针网络组件的新组合提供了最佳的整体性能和可扩展性。从应用程序的角度来看,我们的研究结果提供了初步的证据,开发工具,学习预测未来的编辑的可行性。
2019-04-04 cs.CL cs.LG cs.SE
Automated Code Editing with Search-Generate-Modify
本文提出SARGAM工具,通过模拟开发者搜索-生成-修改的代码编辑行为,结合代码搜索、生成与修改的混合方法,在编辑生成和程序修复任务上优于现有最先进技术。
2024-02-26 cs.PL cs.SE
EDIT-Bench: Evaluating LLM Abilities to Perform Real-World Instructed Code Edits
Carnegie Mellon University(卡内基梅隆大学);UC Berkeley(加州大学伯克利分校)
针对AI编码助手的指令式代码编辑能力缺乏真实世界基准的问题,本文提出基于真实场景构建的EDIT-Bench基准,评估40个LLM后发现其具有挑战性且上下文对性能影响显著,为该能力评估提供了有效工具。
2025-11-17 cs.SE
RECAP: An End-to-End Platform for Capturing, Replaying, and Analyzing AI-Assisted Programming Interactions
Carnegie Mellon University(卡内基梅隆大学)
RECAP通过记录和回放开发者与AI编程助手的交互,分析其行为模式和策略演变,为软件工程教育提供支持。
2026-05-01 cs.CL cs.HC cs.SE
Pre-Filtering Code Suggestions using Developer Behavioral Telemetry to Optimize LLM-Assisted Programming
ITMO University(ITMO大学)
通过开发者行为 telemetry 预过滤代码建议,提升 LLM 协助编程的接受率和效率
2025-11-24 cs.AI cs.HC cs.SE
Cascaded Code Editing: Large-Small Model Collaboration for Effective and Efficient Code Editing
The Chinese University of Hong Kong(香港中文大学);The University of Hong Kong(香港大学);Hong Kong University of Science and Technology(香港科技大学);Tencent(腾讯)
本文提出级联代码编辑框架,通过大型模型生成修改草图和小型模型应用草图,提升代码编辑的效率与准确性。
2026-04-21 cs.SE
Learning Project-wise Subsequent Code Edits via Interleaving Neural-based Induction and Tool-based Deduction
Shanghai Jiao Tong University(上海交通大学);National University of Singapore(新加坡国立大学);Bytedance Network Technology(字节跳动网络科技)
本文提出TRACE方法,通过结合神经归纳与工具演绎,提升项目级代码编辑的范围、精度与效率。
2026-04-14 cs.SE
Improving software team collaboration with Synchronized Software Development
有效的协作是团队开发的软件项目成功的关键因素。在这项工作中,我们建议的方法同步软件开发(SSD),这促进了一个新的机制,一般的协作,特别是代码同步。在SSD中,一个开发人员所做的代码更改会自动传播给其他开发人员,只要他们保持代码没有编译错误。引入编译错误的更改在错误被修复之前不会传播。此外,其他开发人员被限制同时编辑这些更改中涉及的实体。然而,在这种状态下,开发人员可以自由地修改其余的实体。我们的方法的新颖之处在于,它积极地为开发人员提供最新的无错误版本的源代码,防止由于团队成员的并发更改而可能出现的冲突和合并。SSD还允许对多个开发人员引入的新代码进行更透明、几乎实时的感知。我们构建了CSI(代码同步智能),这是一个展示SSD关键功能的原型。
2015-04-28 cs.SE
Suggesting Code Edits in Interactive Machine Learning Notebooks Using Large Language Models
University of Waterloo(滑铁卢大学)
本文构建首个含48,398项Jupyter编辑的数据集,评估LLM预测代码修改,发现编辑高度局部但模型准确率低,凸显上下文的重要性。
2025-01-16 cs.CL cs.LG cs.SE
NaturalEdit: Code Modification through Direct Interaction with Adaptive Natural Language Representation
University of Notre Dame(圣母大学);Vanderbilt University(范德堡大学)
NaturalEdit通过适应性自然语言表示与源代码紧密关联,提供灵活的抽象梯度,实现摘要与代码的交互映射,减少编辑粘性并保持可见性和一致性,提升开发者理解与验证能力。
2026-08-25 cs.HC cs.SE
Linking Sketches and Diagrams to Source Code Artifacts
最近的研究表明,草图和图表在软件开发人员的日常工作中起着重要的作用。如果这些可视化工件被存档,它们通常与它们记录的源代码分离,因为没有足够的工具支持来帮助开发人员捕获、存档和检索与某些源代码工件相关的草图。本文介绍了SketchLink,一个工具,旨在增加软件开发过程中创建的草图和图表的价值,支持开发人员在这些任务。我们的原型实现提供了一个Web应用程序,该应用程序采用智能手机和平板电脑的摄像头来捕获模拟草图,但也可以在台式计算机上用于上传,例如,计算机生成的图表。我们还为Java IDE实现了一个插件,该插件将链接嵌入Javadoc注释中,并在源代码编辑器中将其可视化为图形图标。
2017-06-29 cs.SE
Migrating Code At Scale With LLMs At Google
Google(谷歌公司)
本文针对Google大规模手动迁移项目成本高的问题,提出结合变更位置发现与LLM的自动化算法,案例显示其生成超7成代码变更、减少50%耗时,为同类迁移提供有效模型。
2025-04-13 cs.AI cs.SE
TraceFixer: Execution Trace-Driven Program Repair
本文提出 TraceFixer,利用运行时执行轨迹和偏离点的期望程序状态训练神经程序修复模型,以预测源代码编辑;实验显示其显著提升 Python 单行缺陷修复效果,并成功修复 20 个真实缺陷中的 10 个。
2023-04-25 cs.SE
Sirius: Static Program Repair with Dependence Graph-Based Systematic Edit Patterns
软件开发通常涉及系统编辑,对许多代码位置进行类似但不相同的更改,这对开发人员来说是容易出错和费力的。从过去的代码更改中挖掘和学习这种系统编辑模式(SEP)使我们能够检测和修复被忽视的需要系统编辑的错误代码。最近的一项研究提出了一种有前途的SEP挖掘技术,该技术基于程序依赖图(PDG),而传统的方法利用基于语法的表示。基于PDG的SEP具有高度的表达性,并且可以捕获比基于语法的SEP更有意义的变化。下一个要解决的挑战是将与基于PDG的SEP中相同的代码更改应用于其他代码位置;检测和修复需要系统编辑的被忽略的位置。现有的程序转换技术不能很好地解决这一挑战,因为(1)它们期望在基于PDG的SEP中不能保证的许多结构代码相似性,或者(2)它们基于PDG工作但限于特定域(例如,API迁移)。我们在本文中提出了一个通用的程序转换算法,应用PDG为基础的SEP。我们的算法确定了一个小的可移植的结构子树为每个PDG节点,从而适应代码的变化,从基于PDG的SEP到其他位置。我们构建了一个程序修复管道Sirius,它结合了该算法并自动化了挖掘SEP的过程,检测需要系统编辑的被忽视的代码位置(错误),并通过应用SEP修复它们。我们评估了Sirius的修复性能与超过80个存储库组成的开源软件语料库。Sirius的精确度为0.710,召回率为0.565,F1得分为0.630,而最先进的技术分别为0.470,…
2021-07-09 cs.SE
Exploring Direct Instruction and Summary-Mediated Prompting in LLM-Assisted Code Modification
本研究对比了LLM辅助代码修改的直接指令提示与摘要介导提示两种策略,通过15名开发者的实验发现二者各有优劣,策略选择受任务场景影响,为优化代码修改提示交互提供了依据。
2025-08-02 cs.HC cs.SE
AntiCopyPaster: Extracting Code Duplicates As Soon As They Are Introduced in the IDE
我们为IntelliJ IDEA开发了一个名为AntiCopyPaster的插件,它可以跟踪IDE内代码片段的粘贴,并建议适当的提取方法重构以防止重复的传播。与现有的方法不同,我们的工具与开发人员的工作流程集成在一起,并主动推荐重构。由于不是所有的代码片段都需要提取,我们开发了一个分类模型来做出这个决定。当开发人员复制并粘贴代码片段时,插件会在当前打开的文件中搜索重复的代码,等待一小段时间以允许开发人员编辑代码,最后根据许多功能推断重构决策。我们对从13个Apache项目中挖掘的18,942个代码片段的大型数据集进行了实验研究,结果表明AntiCopyPaster正确地推荐了F-score为0.82的Extract Method重构。此外,我们对59名开发人员的调查反映了他们对开发的插件的操作的满意度。该插件及其源代码可在GitHub上公开获取,网址为https://github.com/JetBrains-Research/anti-copy-paster。演示视频可以在YouTube上找到:https://youtu.be/_wwHg-qFjJY。
2022-09-02 cs.SE
On Using Stack Overflow Comment-Edit Pairs to recommend code maintenance changes
代码维护数据集通常由包含改进或修复的代码的前后版本组成。这样的数据集对于与代码维护相关的软件工程支持工具是重要的,例如程序修复、代码推荐系统或应用编程接口(API)误用检测。当前的大多数数据集都是通过挖掘版本控制系统中的提交历史或问题跟踪系统中的问题来构建的。在本文中,我们将研究Stack Overflow是否可以用作额外的数据源。Stack Overflow上的评论为开发人员提供了一种有效的方法,可以指出现有答案、替代解决方案或陷阱中的问题。在本文中,我们从Stack Overflow中挖掘评论-编辑对,并研究它们的潜在有用性。这些对具有额外的好处,即对为什么需要更改进行具体描述,并且可能需要处理的更改较少。我们首先设计了一种技术来提取相关的评论编辑对,然后调查这些对的性质。我们发现大多数评论-编辑对并不纠缠在一起,但只有27%的研究对可能对上述应用有用。我们对挖掘对的类型进行了分类,发现有用对的最高比例来自纠正,Objective,Flaw和Extension类别。为了证明我们提取的对的有效性,我们在GitHub上提交了15个pull请求,其中10个已被广泛使用的存储库(如Apache Beam和nltk)接受。我们的工作是第一个研究Stack Overflow注释-编辑对的工作,并为未来的工作打开了大门。基于我们的发现和观察,我们提供了关于如何潜在地识别更大的有用的评论-编辑…
2021-01-25 cs.SE
Where to Look When Repairing Code? Comparing the Attention of Neural Models and Developers
本研究首次对比人类开发者与两种神经修复模型的注意力分布,发现人类采用混合注意力策略且修复成功率远高于模型,为改进神经修复模型提供了行为学启示。
2023-05-12 cs.SE
CODIT: Code Editing with Tree-Based Neural Models
开发人员编辑日常代码的方式往往是重复的,通常使用现有的代码元素。许多研究人员试图通过从应用于有限范围的特定更改模板中学习来自动化重复的代码更改。深度神经网络的进步和大量开源进化数据的可用性为自动从野外学习这些模板提供了可能。然而,基于深度神经网络的代码更改和代码建模一般会引入一些需要研究界特别关注的特定问题。例如,与自然语言相比,源代码词汇表可以大得多。此外,代码中好的变化不会破坏其语法结构。因此,部署最先进的神经网络模型而不使方法适应源代码域产生次优结果。为此,我们提出了一种新的基于树的神经网络系统来模拟源代码的变化,并从野外学习代码变化模式。具体来说,我们提出了一个基于树的神经机器翻译模型来学习代码变化的概率分布。我们实现了我们的模型与变化的建议引擎,CODIT,训练模型与超过24k的现实世界的变化,并评估它的5k补丁。我们的评估表明,有效的CODIT学习和建议补丁。CODIT还可以从bug修复补丁中学习特定的bug修复模式,并可以修复Defects4J中80个bug中的25个bug。
2020-08-25 cs.SE
Directional Diffusion-Style Code Editing Pre-training
Key Lab of HCST (PKU), MOE(智能技术与系统国家重点实验室(北京大学),教育部;计算机科学与技术系,北京大学);SCS, Peking University
DivoT5通过方向扩散方法提升代码编辑预训练效果,实现多个任务的SOTA性能。
2025-12-10 cs.SE
Beyond the Code: Mining Self-Admitted Technical Debt in Issue Tracker Systems
自我承认的技术债务(SATD)是技术债务(TD)的一种特殊情况,开发人员明确承认他们的次优实现决策。以前的研究通过在源代码注释中搜索特定的TD相关术语来挖掘SATD。相比之下,在本文中,我们认为开发人员可以通过其他方式承认技术债务,例如,通过在跟踪系统中创建问题并将其标记为涉及TD。我们将这种类型的SATD称为基于问题的SATD或SATD-I。我们研究了从五个开源项目中收集的286个SATD-I实例的样本,包括Microsoft Visual Studio和GitLab Community Edition。我们发现,只有29%的研究SATD-I实例可以跟踪到源代码注释。我们还表明,SATD-I问题需要更多的时间来关闭,相比其他问题,虽然他们并不更复杂的代码流失。此外,在所研究的问题中,45%的TD是在早期引入的,近60%的TD是指设计缺陷。最后,我们报告说,大多数开发人员支付SATD-I,以减少其成本或利益(66%)。我们的研究结果表明,有空间设计新的工具,以支持技术债务管理,特别是工具,鼓励开发人员创建和标签问题包含TD的关注。
2020-03-20 cs.SE
HatCUP: Hybrid Analysis and Attention based Just-In-Time Comment Updating
在更改代码时,开发人员有时会忽略更新相关注释,从而带来不一致或过时的注释。这些注释增加了程序理解的成本,大大降低了软件的可维护性。研究人员已经提出了一些解决方案,如CUP和HEBCUP,它们可以有效地更新简单代码更改(即修改单个令牌)的注释,但对于复杂的代码更改则不够好。在本文中,我们提出了一种方法,命名为HatCUP(混合分析和注意力的评论更新器),提供了一个新的机制,评论更新任务。HatCUP注重混合分析和信息。首先,HatCUP考虑代码结构变化信息,引入结构引导的注意力机制,结合代码变化图分析和乐观数据流依赖分析。HatCUP采用普遍流行的基于RNN的编码器-解码器架构,将代码编辑、语法、语义和结构代码更改以及旧注释作为输入,并生成当前代码片段中更改的结构化表示。此外,HatCUP提出了一种新的编辑或非编辑机制来模仿人类的编辑行为,而不是直接生成新的评论,方法是生成一系列编辑动作,并构建一个修改的RNN模型来集成新开发的组件。在一个流行的数据集上进行的评估表明,HatCUP在准确率、召回率和METEOR方面分别比最先进的基于深度学习的方法(CUP)高出53.8%、31.3%和14.3%。HatCUP与基于启发式算法的方法(HEBCUP)相比,具有更好的整体性能。
2022-05-02 cs.SE
Evolving with AI: A Longitudinal Analysis of Developer Logs
JetBrains Research(JetBrains 研究);University of California, Irvine(加州大学尔湾分校);JetBrains
研究通过纵向数据和调查分析AI对开发者日常编码实践的长期影响,发现AI使用提高了代码产出但也增加了删除量,同时开发者报告生产力提升但其他维度变化不明显。
2026-03-30 cs.HC cs.SE
Visualization of Methods Changeability Based on VCS Data
软件工程师有各种各样的工具和技术可以帮助他们提高代码的质量,但仍然有很多错误没有被发现。在本文中,我们的想法是,如果一个特定的代码片段被更改得太频繁,它可能是由一些技术或架构问题引起的,因此,这个片段需要开发人员额外的关注。现在,大多数团队都使用版本控制系统来跟踪代码中的更改,并组织开发人员之间的合作。我们建议使用来自版本控制系统的数据来跟踪项目中每个方法在选定时间段内的更改数量,并在IDE的代码编辑器中显示此信息。本文描述了这样一个称为Topias的工具,它是作为IntelliJ IDEA的插件构建的。其源代码可在https://github.com/JetBrains-Research/topias上获得。演示视频可在https://www.youtube.com/watch?上找到v=xsqc4gCTxfA。
2020-04-03 cs.SE
Optimising the Fit of Stack Overflow Code Snippets into Existing Code
软件开发人员经常在他们的项目中重用来自在线资源(如Stack Overflow)的代码。然而,搜索代码段并将其集成到现有源代码中的过程可能是乏味的。为了提高代码重用的效率和减少代码重用所花费的时间,我们提出了一个用于Eclipse IDE(集成开发环境)的自动化代码重用工具NLP 2TestableCode。NLP 2TestableCode不仅可以使用自然语言任务搜索Java代码段,还可以基于用户现有代码评估代码段,修改代码段以改进匹配并纠正错误,然后向用户呈现最佳代码段,所有这些都无需离开编辑器。NLP 2TestableCode还包括自动生成可定制测试用例并建议参数和返回类型的功能,以便进一步评估代码片段。在评估中,NLP 2TestableCode能够为82.9%的任务找到可编译的代码片段,为42.9%的任务找到可测试的代码片段。
2020-04-16 cs.SE
Autofolding for Source Code Summarization
开发人员花费大量时间阅读和浏览源代码,为摘要方法提供了新的机会。事实上,现代代码编辑器提供了代码折叠,允许有选择地隐藏代码块。然而,这是不切实际的使用,因为折叠决定必须手动或基于简单的规则。我们引入了自动折叠问题,即通过折叠信息量较少的代码区域来自动创建代码摘要。我们提出了一个新的解决方案,制定了一系列的AST折叠决策的问题,利用范围的主题模型的代码令牌。在一组受欢迎的开源项目的注释,我们表明,我们的总结优于简单的基线,产生28%的错误减少。此外,我们通过案例研究发现,我们的总结器是有经验的开发人员强烈的首选。更广泛地说,我们希望这项工作将通过将代码折叠变成一个可用的和有价值的工具来帮助程序理解。
2017-03-06 cs.SE
Migrating Client Code without Change Examples
API开发人员开发软件库来修复错误、添加新功能或重构代码。为了从这种库演变中受益,客户端项目的程序员必须重复地升级他们的库使用,并使他们的代码库适应任何库API破坏性变化(例如,API重命名)。这样的自适应变化可能是乏味的并且容易出错。现有的工具在帮助程序员将客户端项目从旧的库版本迁移到新的库版本方面提供了有限的支持。例如,一些工具提取库版本之间的API映射,并且仅建议简单的自适应更改(即,语句更新);其它工具建议或自动化更复杂的编辑(例如,语句插入)。然而,当新的库版本可用时,用户通常需要提供足够的人工构建的示例来指导自动迁移,这既麻烦又耗时。在本文中,我们提出了一种新的方法,AutoUpdate,以进一步提高最先进的。而不是从变化的例子中学习,我们设计的AutoUpdate自动迁移在编译器导向的方式。也就是说,给定由升级库触发的编译错误,AutoUpdate利用13个迁移操作符来生成候选编辑,并暂时应用每个编辑,直到错误得到解决或所有编辑都被探索。我们做了两个实验。第一个实验涉及在5个流行库的版本之间迁移371个教程示例。AutoUpdate减少了92.7%的任务的迁移相关编译错误。它为32.4%的任务消除了此类错误,并且33.9%的任务具有与手动迁移相同的编辑。在第二个实验中,我们应用AutoUpdate迁移了两个真实的Lucene客户端项目。AutoUpdate成功地迁移了…
2021-05-06 cs.SE
Codetations: Intelligent, Persistent Notes and UIs for Programs and Other Documents
提出Codetations系统,通过混合编辑追踪和LLM方法将动态交互笔记附加在文档外部,有效补充代码上下文信息,显著提升LLM代码修复性能并获开发者认可。
2025-04-25 cs.HC cs.SE
Natural Language-Focused Software Engineering via Code-Documentation Equivalence
CISPA Helmholtz Center for Information Security(CISPA 亥姆霍兹信息安全中心);Zhejiang University(浙江大学)
提出文档-代码等价性概念,通过自动生成等价文档的方法(Documentary)提升代码理解与编辑任务中LLM的准确性,实验显示准确率提升12.8-24.5%。
2026-06-23 cs.SE
InstructCoder: Instruction Tuning Large Language Models for Code Editing
National University of Singapore(新加坡国立大学);Singapore University of Technology and Design(新加坡科技设计大学);Shanghai Jiao Tong University(上海交通大学)
针对自动代码编辑数据稀缺及现有 LLM 指令遵循不足的问题,本文构建含 11.4 万余三元组的 InstructCoder 指令微调数据集,使开源模型达到先进专有模型的代码编辑性能。
2024-02-28 cs.CL cs.SE
EditSum: A Retrieve-and-Edit Framework for Source Code Summarization
Peking University(北京大学);Zhejiang University(浙江大学);Monash University(莫纳什大学)
本文提出名为 EditSum 的检索与编辑框架,通过检索相似代码片段作为原型摘要并自动编辑以结合模式与语义信息,显著提升了源代码摘要的关键词预测准确性和信息量。
2023-09-07 cs.CL cs.SE
Comparing Developer and LLM Biases in Code Evaluation
Carnegie Mellon University(卡内基梅隆大学)
本文提出TRACE框架,评估LLM在代码评估中的偏见,发现LLM在与开发者偏好对齐方面表现不佳,揭示了人类与模型在代码质量标准上的系统性差异。
2026-05-14 cs.CL cs.SE
A Network Perspective on the Influence of Code Review Bots on the Structure of Developer Collaborations
本文采用网络分析方法,基于大规模 GitHub 仓库样本研究代码审查机器人对开源软件团队协作网络结构的影响,旨在揭示人机交互对开发者协作的深层效应。
2023-05-26 cs.SE cs.SI
Securely extending and running low-code applications with C#
本文面向公民开发者,研究并实现基于 C#、Roslyn 与 .NET 的低代码扩展、静态分析、调试和 Git 抽象工具,并通过威胁模型比较安全隔离执行方案。
2023-07-12 cs.SE
Generating High-Quality Datasets for Code Editing via Open-Source Language Models
School of Software Engineering, Sun Yat-sen University(中山大学软件学院);School of Computer Science, Fudan University(复旦大学计算机学院)
提出OpenCodeEdit流水线,利用开源大模型合成高质量代码编辑三元组,构建OCEDataFT数据集,微调模型在CanItEdit上显著提升,接近GPT-4性能。
2025-10-07 cs.AI cs.SE
(Don't) Trust, but (Don't) Verify: Developers' Attention to Security in AI-Generated Code
Tufts University(塔夫茨大学);Philips(飞利浦);Colorado School of Mines(科罗拉多矿业学院)
本研究通过远程观察100名开发者评估AI生成代码的过程,发现开发者对安全性的关注不足,信任影响决策,且难以识别漏洞,为AI辅助安全开发提供基础见解。
2026-09-21 cs.CR cs.SE