期刊文献+
共找到8篇文章
< 1 >
每页显示 20 50 100
重新审视代码补全中的检索增强策略 被引量:2
1
作者 邹佰翰 汪莹 +5 位作者 彭鑫 娄一翎 刘力华 张昕东 林帆 刘名威 《软件学报》 北大核心 2025年第6期2747-2773,共27页
软件开发者在编写代码时,常常会参考项目中实现了相似功能的代码.代码生成模型在生成代码时也具有类似特点,会以输入中给出的代码上下文信息作为参考.基于检索增强的代码补全技术与这一思想类似,该技术从检索库中检索到外部代码作为额... 软件开发者在编写代码时,常常会参考项目中实现了相似功能的代码.代码生成模型在生成代码时也具有类似特点,会以输入中给出的代码上下文信息作为参考.基于检索增强的代码补全技术与这一思想类似,该技术从检索库中检索到外部代码作为额外信息,对生成模型起到提示的作用,从而生成目标代码.现有的基于检索增强的代码补全方法将输入代码和检索结果直接拼接到一起作为生成模型的输入,这种方法带来了一个风险,即检索到的代码片段可能并不能对模型起到提示作用,反而有可能会误导模型,导致生成的代码结果不准确.此外,由于无论检索到的外部代码是否与输入代码完全相关,都会被与输入代码拼接起来输入到模型,这导致该方法的效果在很大程度上依赖于代码检索阶段的准确性.如果检索阶段不能返回可用的代码片段,那么后续的代码补全效果可能也会受到影响.首先,针对现有的代码补全方法中的检索增强策略进行了经验研究,通过定性和定量实验分析检索增强的各个阶段对于代码补全效果的影响,在经验研究中重点识别了代码粒度、代码检索方法、代码后处理方法这3种影响检索增强效果的因素.接着,基于经验研究的结论设计改进方法,提出一种通过分阶段优化代码检索策略来改进检索增强的代码补全方法MAGIC(multi-stage optimization for retrieval augmented code completion),设计了代码切分、二次检索精排、模板提示生成等改进策略,可以有效地提升检索增强对代码补全模型的辅助生成作用,并减少模型在代码生成阶段受到的噪声干扰,提升生成代码的质量.最后,在Java代码数据集上的实验结果表明:与现有的基于检索增强的代码补全方法相比,该方法在编辑相似度和完全匹配指标上分别提升了6.76%和7.81%.与6B参数量的代码大模型相比,该方法能够在节省94.5%的显存和73.8%的推理时间的前提下,在编辑相似度和完全匹配指标上分别提升5.62%和4.66%. 展开更多
关键词 检索增强 大语言模型 代码补全 提示学习 多阶段优化
在线阅读 下载PDF
基于CNN和自注意力神经网络的代码补全方法
2
作者 陈伟 何成万 +2 位作者 余秋惠 贺正源 罗蝶 《计算机工程与设计》 北大核心 2025年第10期2919-2926,共8页
由于基于抽象语法树的代码补全模型在提取代码序列细粒度的局部特征方面能力较差,并且难以应用于实际开发场景,提出一种基于卷积神经网络(convolutional neural network,CNN)和自注意力神经网络Transformer的代码补全方法。采用基于代... 由于基于抽象语法树的代码补全模型在提取代码序列细粒度的局部特征方面能力较差,并且难以应用于实际开发场景,提出一种基于卷积神经网络(convolutional neural network,CNN)和自注意力神经网络Transformer的代码补全方法。采用基于代码轻量级语法信息的预处理方法,并提出将CNN与Transformer网络以参数有效的方式结合,对代码序列的全局和局部依赖关系进行全面性建模。模型采用多任务学习机制(multi-task learning,MTL)共享代码token值和类型信息,提取代码序列中的语法和语义特征完成代码token级补全任务。实验结果表明,所提出的代码补全方法在ETH 150K Python数据集上准确率达到74.85%,显著优于基线方法。 展开更多
关键词 代码补全 多任务学习 Transformer 卷积神经网络 抽象语法树 轻量级语法 深度学习
在线阅读 下载PDF
一种融合注意力机制的形变LSTM智能代码补全方法 被引量:3
3
作者 张钦 郑尚 +2 位作者 邹海涛 于化龙 高尚 《小型微型计算机系统》 CSCD 北大核心 2024年第2期498-504,共7页
代码补全(code completion)通过提供类名和方法名等预测,辅助开发人员编写代码,是自动化软件开发的重要功能之一.近年来,智能代码补全已成为软件工程领域的热门研究方向之一,前人工作表明通过自然语言技术或神经网络学习代码,能够提高... 代码补全(code completion)通过提供类名和方法名等预测,辅助开发人员编写代码,是自动化软件开发的重要功能之一.近年来,智能代码补全已成为软件工程领域的热门研究方向之一,前人工作表明通过自然语言技术或神经网络学习代码,能够提高代码补全的准确率,但这些补全模型仍存在不足,如代码上下文的信息表示较弱、程序信息提取不全和代码补全任务不平衡.因此,本文提出一种全新的智能代码补全方法,其中引入形变的长短记忆网络(Mogrifier-LSTM)和注意力机制增强代码上下文的信息表示,同时利用双向LSTM学习程序的层次结构信息,并设计一种多任务框架自动实现代码补全任务之间的平衡.通过在真实数据集上进行实验,结果表明本文所提方法表现优于主流代码补全方法. 展开更多
关键词 软件开发 代码补全 LSTM 注意力 多任务
在线阅读 下载PDF
一种基于多任务学习的代码补全方法 被引量:2
4
作者 帅祥 魏乐 舒红平 《计算机应用研究》 CSCD 北大核心 2023年第3期863-867,共5页
针对基于语言模型的代码补全方法忽略源代码中结构信息和命名信息而导致补全准确率偏低的问题,提出一种基于多任务学习的代码补全方法(multi-task learning code completion, MTLCC)。MTLCC对源代码数据集进行数据清洗和预处理,通过抽... 针对基于语言模型的代码补全方法忽略源代码中结构信息和命名信息而导致补全准确率偏低的问题,提出一种基于多任务学习的代码补全方法(multi-task learning code completion, MTLCC)。MTLCC对源代码数据集进行数据清洗和预处理,通过抽象语法树(abstract syntax tree, AST)提取源代码中的结构信息和命名信息;构建基于Transformer的多任务学习网络,采用软参数共享学习方式分别对源代码的节点类型预测、节点值预测和语句预测进行训练;利用集束搜索对模型推理结果进行后期处理生成代码补全建议列表。实验结果表明,与Pointer network、LSTM+TransformerXL和CodeGPT中最好的模型相比,MTLCC在节点类型预测和节点值预测任务中的准确率分别提升了2.5%和1.7%、MRR分别提升了3.7%和2.4%,在语句预测任务中的ROUGE-L分数(L@4)提升了0.055。 展开更多
关键词 代码补全 多任务学习 抽象语法树 TRANSFORMER 集束搜索
在线阅读 下载PDF
语法和语义结合的代码补全方法 被引量:1
5
作者 付善庆 李征 +1 位作者 赵瑞莲 郭俊霞 《软件学报》 EI CSCD 北大核心 2022年第11期3930-3943,共14页
在软件工程领域,代码补全是集成开发环境(integrated development environment,IDE)中最有用的技术之一,提高了软件开发效率,成为了加速现代软件开发的重要技术.通过代码补全技术进行类名、方法名、关键字等预测,在一定程度上提高了代... 在软件工程领域,代码补全是集成开发环境(integrated development environment,IDE)中最有用的技术之一,提高了软件开发效率,成为了加速现代软件开发的重要技术.通过代码补全技术进行类名、方法名、关键字等预测,在一定程度上提高了代码规范,降低了编程人员的工作强度.近年来,人工智能技术的发展促进了代码补全技术的发展.总体来说,智能代码补全技术利用源代码训练深度学习网络,从语料库学习代码特征,根据待补全位置的上下文代码特征进行推荐和预测.现有的代码特征表征方式大多基于程序语法,没有反映出程序的语义信息.同时,目前使用到的网络结构在面对长代码序列时,解决长距离依赖问题的能力依旧不足.因此,提出了基于程序控制依赖关系和语法信息结合共同表征代码的方法,并将代码补全问题作为一个基于时间卷积网络(time convolution network,TCN)的抽象语法树(abstract grammar tree,AST)节点预测问题,使得网络模型可以更好地学习程序的语法和语义信息,并且可以捕获更长范围的依赖关系.实验结果表明,该方法比现有方法的准确率提高了约2.8%. 展开更多
关键词 代码补全 程序语法特征 程序语义特征 特征结合 长距离依赖 深度学习
在线阅读 下载PDF
智能代码补全研究综述 被引量:11
6
作者 杨博 张能 +1 位作者 李善平 夏鑫 《软件学报》 EI CSCD 北大核心 2020年第5期1435-1453,共19页
代码补全(code completion)是自动化软件开发的重要功能之一,是大多数现代集成开发环境和源代码编辑器的重要组件.代码补全提供即时类名、方法名和关键字等预测,辅助开发人员编写程序,直观提高软件开发效率.近年来,开源软件社区中源代... 代码补全(code completion)是自动化软件开发的重要功能之一,是大多数现代集成开发环境和源代码编辑器的重要组件.代码补全提供即时类名、方法名和关键字等预测,辅助开发人员编写程序,直观提高软件开发效率.近年来,开源软件社区中源代码和数据规模不断扩大,人工智能技术取得了卓越进展,这对自动化软件开发技术产生了极大的促进作用.智能代码补全(intelligent code completion)根据源代码建立语言模型,从语料库学习已有代码特征,根据待补全位置的上下文代码特征在语料库中检索最相似的匹配项进行推荐和预测.相对于传统代码补全,智能代码补全凭借其高准确率、多补全形式、可学习迭代的特性成为软件工程领域的热门方向之一.研究者们在智能代码补全方面进行了一系列研究,根据这些方法如何表征和利用源代码信息的不同方式,可以将它们分为基于编程语言表征和基于统计语言表征两个研究方向,其中,基于编程语言表征又分为标识符序列、抽象语法树、控制/数据流图这3个类别,基于统计语言表征又分为N-gram模型、神经网络模型这2个类别.从代码表征的角度入手,对近年来代码补全方法研究进展进行梳理和总结,主要内容包括:(1)根据代码表征方式阐述并归类了现有的智能代码补全方法;(2)总结了代码补全的一般过程和模型评估中的模型验证方法与性能评估指标;(3)归纳了智能代码补全的主要挑战;(4)展望了智能代码补全的未来发展方向. 展开更多
关键词 代码补全 代码表征 软件开发工具
在线阅读 下载PDF
基于差异性代码克隆的代码块补全提示方法 被引量:1
7
作者 殷康麒 吴鸣 +1 位作者 王鹏程 徐云 《计算机工程》 CAS CSCD 北大核心 2020年第1期196-200,207,共6页
在软件编程中,通过代码补全提示可以提高编码效率,但目前缺乏有效的工具和手段从规模差异较大的相似代码中找到合适的候选代码。针对该问题,基于差异性代码克隆技术设计一种新的代码块补全提示方法。通过改进基于滑动窗口和带误匹配索... 在软件编程中,通过代码补全提示可以提高编码效率,但目前缺乏有效的工具和手段从规模差异较大的相似代码中找到合适的候选代码。针对该问题,基于差异性代码克隆技术设计一种新的代码块补全提示方法。通过改进基于滑动窗口和带误匹配索引的匹配算法,寻找与待补全代码块相似的候选代码块,并对其进行特征提取、聚类和相关性排名,以此获得候选代码块的提示顺序。实验结果表明,与HILL等人提出的代码块补全提示方法相比,该方法提示准确率较高,并且适用于更多代码块补全场景。 展开更多
关键词 代码补全提示 代码克隆 特征提取 聚类 编码 集成开发环境
在线阅读 下载PDF
基于深度学习的程序生成与补全技术研究进展 被引量:22
8
作者 胡星 李戈 +1 位作者 刘芳 金芝 《软件学报》 EI CSCD 北大核心 2019年第5期1206-1223,共18页
自动化软件开发一直是软件工程领域的研究热点.目前,互联网技术促进了开源软件和开源社区的发展,这些大规模的代码和数据成为自动化软件开发的机遇.与此同时,深度学习也在软件工程领域开始得到应用.如何将深度学习技术用于大规模代码的... 自动化软件开发一直是软件工程领域的研究热点.目前,互联网技术促进了开源软件和开源社区的发展,这些大规模的代码和数据成为自动化软件开发的机遇.与此同时,深度学习也在软件工程领域开始得到应用.如何将深度学习技术用于大规模代码的学习,并实现机器自动编写程序,是人工智能与软件工程领域的共同期望.机器自动编写程序,辅助甚至在一定程度上代替程序员开发程序,极大地减轻了程序员的开发负担,提高了软件开发的效率和质量.目前,基于深度学习方法自动编写程序主要从两个方面实现:程序生成和代码补全.对这两个方面的应用以及主要涉及的深度学习模型进行了介绍. 展开更多
关键词 程序生成 代码补全 深度学习
在线阅读 下载PDF
上一页 1 下一页 到第
使用帮助 返回顶部