[发明专利]一种基于相似代码识别的编程信息推荐方法及装置有效
申请号: | 202010996554.7 | 申请日: | 2020-09-21 |
公开(公告)号: | CN112115362B | 公开(公告)日: | 2022-01-11 |
发明(设计)人: | 王彤;黄袁;陈湘萍;周晓聪;郑子彬 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F16/9535 | 分类号: | G06F16/9535;G06F8/75;G06F16/955 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 郭帅 |
地址: | 510275 *** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 相似 代码 识别 编程 信息 推荐 方法 装置 | ||
本发明提供了一种基于相似代码识别的编程信息推荐方法及装置,其中方法包括:对存疑代码进行抽取得到多个第一代码片段和多个第一注释;对编程信息进行抽取得到多个第二代码片段和多个第一场景关键字;将多个第一代码片段和多个第二代码片段输入克隆检测工具并进行克隆检测,得到多个克隆对;其中,每个克隆对由第一代码片段和第二代码片段组成;将第一注释与第一场景关键字作为句子对,根据训练好的Word2Vec模型计算句子对相似度;根据句子对相似度对克隆对进行降序排列,将排名较高的克隆对作为编程信息进行推荐。本发明综合考虑了场景关键字和代码相似度,能帮助检索代码缺陷原因,推荐的编程信息更具针对性,能提高缺陷修复效率。
技术领域
本发明涉及软件检测与修复技术领域,尤其是涉及一种基于相似代码识别的编程信息推荐方法及装置。
背景技术
程序员在编程过程中经常遇到难以独立解决的技术问题,通常依靠互联网搜索相应的问题进行解决。传统的代码缺陷检索主要依赖程序员对缺陷的描述、程序的报错信息等进行文本匹配的搜索,以寻找解决代码缺陷的信息,例如网络博客,问答社区等。然而,程序员并不是每次都能准确的用语言描述自己遇到的问题,也存在程序的报错信息难以定位问题的情况,这无疑给程序员用传统方式解决代码问题带来了很大的挑战。
现有的代码问题检索主要有两种方式,一种是基于程序员对缺陷的描述、程序的报错信息等进行文本匹配的搜索,另一种是基于相似代码的缺陷检测。
首先,现有的基于文本匹配的搜索技术,通常需要程序员对遇到的问题进行自主的归纳总结,提炼出当前场景的关键字,然后将关键字输入互联网的搜索引擎进行搜索。如果遇到程序员对问题成因概括能力不足的情况,或者相似关键词指向其他问题的情况,仅仅依靠场景关键字的搜索技术就不能很好地给出缺陷代码的修改方案。
而基于相似代码的缺陷检测,仅仅依靠代码本身的相似度来进行排序推荐,并没有考虑到代码复用的实际场景。即使是完全相同的代码,应用在不同场景下就可能有不同的程序漏洞。如果借鉴到不符合当前场景的代码,就可能对程序员的修改行为造成误导。
代码缺陷的修复是一项复杂而且耗时的工作,相关研究与调查表明,软件公司每年都要投入大量时间和精力在代码的缺陷修复上。与此同时,随着开源代码的普及,大量源代码被复用,有缺陷的代码片段,很有可能在复用过程中被修改成已修复了缺陷的相似代码。所以,对于有缺陷的代码片段,如果能找到其他被复用的相似代码片段,程序员就能通过对比缺陷代码与已经被修复的代码来获取修复的方法。
发明内容
本发明的目的是提供一种基于相似代码识别的编程信息推荐方法及装置,以解决在编程过程中对代码缺陷描述不够准确、代码修复困难的技术问题。
本发明的目的,可以通过如下技术方案实现:
一种基于相似代码识别的编程信息推荐方法,包括:
对存疑代码进行抽取得到多个第一代码片段和多个第一注释;其中,与每个所述第一代码片段与每个所述第一注释是对应的;
对网络上的编程信息进行抽取得到多个第二代码片段和多个第一场景关键字;其中,每个所述第二代码片段与每个第一场景关键字对应的;
将所述多个第一代码片段和所述多个第二代码片段输入克隆检测工具并进行克隆检测,得到多个克隆对;其中,每个克隆对由第一代码片段和第二代码片段组成;
将第一注释与第一场景关键字作为句子对,根据训练好的Word2Vec模型计算句子对相似度;其中,所述句子对与所述克隆对是对应的;
根据句子对相似度对相应的克隆对进行降序排列,将排名较高的克隆对作为可参考的编程信息进行推荐。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010996554.7/2.html,转载请声明来源钻瓜专利网。