-
题名基于图嵌入的软件项目源代码检索方法
被引量:10
- 1
-
-
作者
凌春阳
邹艳珍
林泽琦
谢冰
赵俊峰
-
机构
高可信软件技术教育部重点实验室(北京大学)
北京大学信息科学技术学院
北京大学(天津滨海)新一代信息技术研究院
-
出处
《软件学报》
EI
CSCD
北大核心
2019年第5期1481-1497,共17页
-
基金
国家重点研发计划(2016YFB1000801)
国家杰出青年科学基金(61525201)~~
-
文摘
源代码检索是软件工程领域的一项重要研究问题,其主要任务是检索和复用软件项目API(application programinterface,应用程序接口).随着软件项目的规模越来越大、越来越复杂,当前,源代码检索一方面需要提高基于自然语言API查询的准确性,另一方面需要定位和展示目标API及其相关代码之间的关联,以更好地辅助用户理解API的实现逻辑和使用场景.为此,提出一种基于图嵌入的软件项目源代码检索方法.该方法能够基于软件项目源代码自动构建其代码结构图,并通过图嵌入对源代码进行信息表示.在此基础上,用户可以输入自然语言问题、检索并返回相关的API及其关联信息构成的连通代码子图,从而提高API检索和复用的效率.在以开源项目Apache Lucene和POI为例的检索实验中,该方法检索结果的F1值比现有基于最短路径的方法提高了10%,同时显著缩短了平均响应时间.
-
关键词
API检索
代码检索
代码图
图嵌入
-
Keywords
API search
code search
code graph
graph embedding
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名基于代码克隆差异分析的函数模板挖掘和检索方法
- 2
-
-
作者
肖泉彬
陈源
吴毅坚
彭鑫
-
机构
复旦大学计算机科学技术学院
上海市数据科学重点实验室(复旦大学)
-
出处
《软件学报》
北大核心
2025年第6期2774-2793,共20页
-
基金
国家自然科学基金(62172099)。
-
文摘
在软件工程领域,代码库承载着丰富的知识资源,可以为开发者提供编程实践的案例参考.源代码中频繁出现的模式化重复片段,若能以代码模板的形式有效提炼,就能显著提升编程效率.当前实践中,开发者常常通过源代码搜索复用现有解决方案,然而此方法往往产生大量相似且冗余的结果,增加了后续筛选工作的负担.与此同时,以克隆代码为基础的模板挖掘技术往往未能涵盖由分散小克隆片段构成的广泛模式,进而限制了模板的实用性.提出了一种基于代码克隆检测的代码模板提取和检索方法,通过拼接多个片段级克隆以及提取和聚合方法级克隆的共享部分,实现了更高效的函数级代码模板提取,并解决了模板质量问题.基于所挖掘的代码模板,提出了一种代码结构特征的三元组表示法,有效地对纯文本特征进行补充,并实现了高效而简洁的结构表示.此外,提出了一种结构和文本检索相结合的模板特征检索方法,以便通过匹配编程上下文的特征来检索这些模板.基于该方法实现的工具CodeSculptor,在包含45个高质量Java开源项目的代码库测试中展现了其提取高质量代码模板的显著能力.结果表明,该工具挖掘的模板平均可实现减少60.87%的代码量,且有92.09%是通过拼接片段级克隆产生的,这一比例的模板在传统方法中是无法识别出来的,这印证了该方法在识别和构建代码模板方面的卓越性能.在代码模板检索和推荐的实验中,Top-5检索结果精确度达到了96.87%.通过对随机选择的9600个模板进行的初步案例研究,讨论了模板的实用性,并发现大多数抽样代码模板在语义上是完整的,少数无意义的模板表明该模板提取工作未来的潜力.用户研究进一步表明,使用CodeSculptor能够更有效率地完成代码开发任务.
-
关键词
克隆检测
代码检索
特征表示
软件开发
代码复用
-
Keywords
clone detection
code search
feature representation
software development
code reuse
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名基于深度学习的代码生成方法研究进展
被引量:10
- 3
-
-
作者
杨泽洲
陈思榕
高翠芸
李振昊
李戈
吕荣聪
-
机构
哈尔滨工业大学(深圳)计算机科学与技术学院
华为技术有限公司
北京大学信息科学技术学院
香港中文大学计算机与工程系
-
出处
《软件学报》
EI
CSCD
北大核心
2024年第2期604-628,共25页
-
基金
国家重点研发计划(2022YFB3103900)
国家自然科学基金(62002084,62192733,62192731,61751210,62072007,61832009,62192730)
+2 种基金
广东省自然科学基金面上项目(2023A1515011959)
深圳市基础研究专项面上项目(JCYJ20220531095214031)
香港研究资助局项目(CUHK 14210920)。
-
文摘
关注根据自然语言描述生成相关代码片段的代码生成(code generation)任务.在软件开发过程中,开发人员常常会面临两种情形.一种是通用功能的实现,需要开发人员编写大量重复且技术含量较低的代码;另一种是依赖于特定任务要求,需要开发人员查询文档或使用其他工具才能完成的代码编写工作.代码生成作为最直接辅助开发人员完成编码的工作受到学术界和工业界的广泛关注.让机器理解用户需求,自行完成程序编写也一直是软件工程领域重点关注的问题之一.近年来,随着深度学习在软件工程领域任务中的不断发展,尤其是预训练模型的引入使得代码生成任务取得了十分优异的性能.系统梳理当前基于深度学习的代码生成相关工作,并将目前基于深度学习的代码生成方法分为3类:基于代码特征的方法、结合检索的方法以及结合后处理的方法.第1类是指使用深度学习算法利用代码特征进行代码生成的方法,第2类和第3类方法依托于第1类方法进行改进.依次对每一类方法的已有研究成果进行系统的梳理、分析与总结.除此之外,汇总并分析已有的代码生成工作中常用的语料库与评估方法,以便于后续研究进行实验设计.最后,对代码生成方法研究进展进行总结,并针对未来值得关注的研究方向进行展望.
-
关键词
代码生成
深度学习
代码检索
后处理
机器翻译
-
Keywords
code generation
deep learning
code retrieval
post-processing
machine translation
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名融合图嵌入和注意力机制的代码搜索
被引量:4
- 4
-
-
作者
黄思远
赵宇海
梁燚铭
-
机构
东北大学计算机科学与工程学院
-
出处
《计算机科学与探索》
CSCD
北大核心
2022年第4期844-854,共11页
-
基金
国家自然科学基金(61772124)
国家重点研发计划(2018YFB1004402)。
-
文摘
源代码检索任务是指将自然语言作为查询语句,从代码库中搜索相关代码片段。在代码检索任务中,大多数代码检索算法只考虑代码片段的文本序列信息而未考虑代码的结构信息,导致不能充分捕获代码片段包含的语义和语法信息。为了提高对程序语言的理解,提出了注意力机制和图嵌入相结合的代码检索算法(GraphCS)。在特征提取部分,以LSTM提取文本特征向量表示,以Graph2Vec提取图的向量特征表示。在特征融合部分中引入注意力机制,更好地为每一个特征分配相应的权重,从而提升程序的理解。考虑源代码和自然语言为异构数据,将代码片段特征和自然语言特征映射到同一个向量空间,以排名损失来保证语义相似的点在特征空间拥有较近的距离。为了验证算法的高效性,与目前最好的算法CODEnn进行对比。实验结果表明,在Precision@1/5/10、SuccessRate@1/5/10以及MRR上均有一定的提升。
-
关键词
源代码检索
注意力机制
图嵌入
自然语言
语义相似
向量空间
-
Keywords
source code retrieval
attention mechanism
graph embedding
natural language
semantic similarity
vector space
-
分类号
TP391
[自动化与计算机技术—计算机应用技术]
-
-
题名面向业务的资源按需解析模型构建研究
- 5
-
-
作者
刘耀
秦迅
刘天吉
-
机构
中国科学技术信息研究所
北京大学软件与微电子学院
-
出处
《计算机科学》
CSCD
北大核心
2024年第10期178-186,共9页
-
基金
国家社会科学基金(21BTQ011)。
-
文摘
针对在项目开发过程中新需求来临时,需要对自然语言处理工具和资源解析插件进行重新需求分析、重复开发等问题,提出了一套面向业务的资源按需解析方案。首先,提出了一种从需求到代码的资源按需解析方法,针对需求文本本身进行需求概念标引模型的构建。构建的需求概念标引模型的准确率、召回率、F1值等指标均高于其他分类模型。然后,针对需求文本与代码的关联,建立从需求文本到代码库类别的映射机制。对于模型的映射结果,使用前K准确率(percision@K)作为评价指标,最终准确率达到60%,具有一定的实用价值。综上所述,探索了一套具有需求解析能力、实现需求与代码关联的资源按需解析关键技术,并贯穿需求文本分类、需求代码库分类、代码库检索到插件生成的整个流程,形成了完整的“需求-代码-插件-解析”的业务闭环,通过实验验证了所提方法对于资源按需解析的有效性,为业务需求分析与软件复用提供了思路,与现有用于业务需求的解析和代码生成的大语言模型相比,所提方法聚焦于具体业务领域内的含有业务特点的插件代码复用全流程的实现。
-
关键词
自然语言处理
需求模型
代码复用
文本解析
代码分类
代码检索
-
Keywords
Natural language processing
Requirements model
Code reuse
Text parsing
Code categorization
Code retrieval
-
分类号
TP391
[自动化与计算机技术—计算机应用技术]
-