[发明专利]基于案例标记的相似代码搜索方法及系统有效
申请号: | 202110214970.1 | 申请日: | 2021-02-25 |
公开(公告)号: | CN112925874B | 公开(公告)日: | 2022-09-06 |
发明(设计)人: | 吴鸣;徐云;邓子含;王文杰 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06F16/31 | 分类号: | G06F16/31;G06F16/33;G06F40/151;G06F8/41;G06K9/62 |
代理公司: | 北京轻创知识产权代理有限公司 11212 | 代理人: | 冯瑛琪 |
地址: | 230026*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 案例 标记 相似 代码 搜索 方法 系统 | ||
本发明公开了一种基于案例标记的相似代码搜索方法及系统,涉及代码搜索技术领域。该方法包括:获取待搜索的代码案例;对代码案例进行词性分析,得到形式代码;根据预设的加权规则对形式代码的符号进行加权;计算加权后形式代码的每一行的哈希值,在预设的哈希索引中定位查找出具有相同行的代码块编号,加入备选代码块列表;根据预设相似度计算规则计算待搜索的代码案例与备选代码块列表中代码块的相似度,据此得到搜索结果。本发明适用于相似代码的精确搜索,对代码文本进行了不同权重的处理,保留了重要的信息,略去不重要的信息,使得搜索结果更加精准,再通过预设的哈希索引进行搜索,提高了搜索的效率。
技术领域
本发明涉及代码搜索技术领域,尤其涉及基于案例标记的相似代码搜索方法及系统。
背景技术
在软件开发和维护的过程中,程序员经常需要搜索相关代码示例。现有的开源代码库代码丰富,软件开发人员和维护人员可以通过代码搜索以达到重用代码、修改bug、提高开发效率和维护代码质量等目的。
然而,目前的代码搜索方式主要是两种,一种是输入自然语言描述搜索相关功能代码,另外一种是输入代码搜索类似代码。对于输入自然语言功能描述的代码搜索方法,如何将自然语言准确地进行转换仍然是一个较难的问题,导致目前技术难以实现精准搜索。
而对于输入代码搜索文本类似代码的方法,目前,主要是利用克隆检测功能去搜索与输入代码存在高相似度的代码,或者使用爬虫和搜索技术去收集源代码和相关的技术信息。虽然这两种方式能够搜索到的代码与输入代码在文本上相似度非常高,但是很容易遗漏那些语句上有一定差异的代码,导致遗漏搜索结果,使搜索精度不够高。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种基于案例标记的相似代码搜索方法及系统。
本发明解决上述技术问题的技术方案如下:
一种基于案例标记的相似代码搜索方法,包括:
获取待搜索的代码案例,所述代码案例中包括被标记的代码片段;
对所述代码案例进行词性分析,将所述代码案例中的关键词转换为预设符号,得到形式代码;
根据预设的加权规则对所述形式代码的符号进行加权;
计算加权后所述形式代码的每一行的哈希值,在预设的哈希索引中定位查找出具有相同行的代码块编号,将所述代码块编号对应的代码块加入备选代码块列表;
根据预设相似度计算规则计算所述待搜索的代码案例与所述备选代码块列表中代码块的相似度,将相似度大于预设阈值的代码块作为搜索结果。
本发明解决上述技术问题的另一种技术方案如下:
一种基于案例标记的相似代码搜索系统,包括:
获取单元,用于获取待搜索的代码案例,所述代码案例中包括被标记的代码片段;
转换单元,用于对所述代码案例进行词性分析,将所述代码案例中的关键词转换为预设符号,得到形式代码;
加权单元,用于根据预设的加权规则对所述形式代码的符号进行加权;
查询单元,用于计算加权后所述形式代码的每一行的哈希值,在预设的哈希索引中定位查找出具有相同行的代码块编号,将所述代码块编号对应的代码块加入备选代码块列表;
匹配单元,用于根据预设相似度计算规则计算所述待搜索的代码案例与所述备选代码块列表中代码块的相似度,将相似度大于预设阈值的代码块作为搜索结果。
本发明解决上述技术问题的另一种技术方案如下:
一种存储介质,所述存储介质中存储有指令,当计算机读取所述指令时,使所述计算机执行如上述技术方案所述的基于案例标记的相似代码搜索方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110214970.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:空调系统的控制方法及空调系统
- 下一篇:空调冷却水系统的控制方法