【技术实现步骤摘要】
本专利技术涉及代码搜索,尤其涉及一种基于乘积量化的高效代码搜索方法。
技术介绍
1、代码搜索是软件工程领域的核心任务,其定义为给定一项描述程序语言的自然语言语句,可以在海量的代码片段数据库中寻找到与自然语言描述相似程度最高的代码片段返回。随着互联网技术的不断发展,软件已经应用到人类生活的方方面面,用户对软件所具备的功能要求也越来越高。在软件开发过程中,程序开发人员通常会使用描述代码功能的自然语言语句在互联网上搜索类似功能的代码片段,以重用代码片段,提升软件开发的效率。而随着网络上开源代码的数据库规模成指数倍而增长,提升代码检索的效率将会大大加快软件开发的过程。
2、传统的代码搜索技术是将源代码视为纯文本,通过在代码数据集中一一匹配代码与自然语言查询之间的文本相似性,从而返回代码搜索结果,这种方法的代码检索效率低,因为代码片段不仅包含文本信息,其中还包含丰富的语义语法信息和结构化的编程思想。为了充分理解源代码中的信息,目前大部分研究是使用深度学习的方法将代码片段和自然语言描述嵌入到向量空间中,通过比较代码向量与自然语言描述向量
...【技术保护点】
1.一种基于乘积量化的高效代码搜索方法,其特征在于:包括以下步骤:
2.根据权利要求1所述的一种基于乘积量化的高效代码搜索方法,其特征在于:所述步骤2对代码片段和自然语言描述进行预处理,去除数据集中重复的代码片段,并将注释内容少于设定单词数的方法体删除;提取代码片段的函数方法名信息、API信息、Token令牌标记信息和程序依赖图多种特征信息。
3.根据权利要求2所述的一种基于乘积量化的高效代码搜索方法,其特征在于:所述步骤2采用驼峰命名规则将代码片段中的函数方法名拆分成多个单词的组合;将源代码文件解析成抽象语法树,并使用遍历方法体的抽象语法树方
...【技术特征摘要】
1.一种基于乘积量化的高效代码搜索方法,其特征在于:包括以下步骤:
2.根据权利要求1所述的一种基于乘积量化的高效代码搜索方法,其特征在于:所述步骤2对代码片段和自然语言描述进行预处理,去除数据集中重复的代码片段,并将注释内容少于设定单词数的方法体删除;提取代码片段的函数方法名信息、api信息、token令牌标记信息和程序依赖图多种特征信息。
3.根据权利要求2所述的一种基于乘积量化的高效代码搜索方法,其特征在于:所述步骤2采用驼峰命名规则将代码片段中的函数方法名拆分成多个单词的组合;将源代码文件解析成抽象语法树,并使用遍历方法体的抽象语法树方法提取代码片段中api信息;为了提取令牌标记信息,建立关键词表,并使用stanfordcore nlp方法与相关约束规则相结合来对代码片段分词,从而得到代码令牌标记信息;提取代码中的节点信息和数据流信息,将代码转换为图结构表示,并使用深度优先遍历的方式生成代码的程序依赖图序列,从而得到代码的程序依赖图特征信息。
4.根据权利要求3所述的一种基于乘积量化的高效代码搜索...
【专利技术属性】
技术研发人员:印莹,宫玉琪,王驰,徐久强,赵宇海,
申请(专利权)人:东北大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。