[发明专利]一种相似代码案例获取方法、装置、设备和存储介质有效
申请号: | 201910458231.X | 申请日: | 2019-05-29 |
公开(公告)号: | CN110175128B | 公开(公告)日: | 2023-04-07 |
发明(设计)人: | 焦建锋;张克鹏;李彦成;周秀霞 | 申请(专利权)人: | 北京百度网讯科技有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F16/2458;G06F40/194 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 相似 代码 案例 获取 方法 装置 设备 存储 介质 | ||
1.一种相似代码案例获取方法,其特征在于,包括:
获取当前待修复的目标代码片段中问题行以及问题行的上文和下文;
根据问题行的上文和下文的行数,确定所述问题行及其上文与下文各自的权重;
在样本库中,获取与目标代码片段问题类型相同的代码案例集合,以及每个代码案例中问题行以及问题行的上文和下文;
分别将目标代码片段中的问题行、问题行的上文和下文,与每个代码案例中的问题行、问题行的上文和下文进行相似度比较,得到目标代码片段的问题行相似度、上文相似度和下文相似度;
根据所述问题行相似度、上文相似度和下文相似度,以及所述目标代码片段中问题行及其上文和下文各自的权重,计算目标代码片段与每个代码案例的相似度总和,并将所述相似度总和满足预设阈值的代码案例,作为所述目标代码片段的相似代码案例;
其中,所述根据问题行的上文和下文的行数,确定所述问题行及其上文与下文各自的权重,包括:
获取问题行及其上文和下文各自的预设权重初始值;
分别依据上文行数、下文行数,和预设的权重调整规则,对上文和下文的权重初始值进行调整;
根据调整后的上文和下文各自的权重计算出问题行的权重,其中,问题行与其上下文的权重之和为1。
2.根据权利要求1所述的方法,其特征在于,所述分别依据上文行数、下文行数,和预设的权重调整规则,对上文和下文的权重初始值进行调整,包括:
如果上文/下文行数不小于预设行数,则将上文/下文的权重确定为上文/下文的权重初始值;
如果上文/下文行数小于所述预设行数,则计算上文行数与下文行数的比值,以及上文/下文的权重初始值与该比值的乘积,将得到的结果调整为上文/下文的权重。
3.根据权利要求1所述的方法,其特征在于,所述分别将目标代码片段中的问题行、问题行的上文和下文,与每个代码案例中的问题行、问题行的上文和下文进行相似度比较,得到目标代码片段的问题行相似度、上文相似度和下文相似度,包括:
分别获取所述目标代码片段和每个代码案例对应的抽象语法树,其中,所述抽象语法树具有多个节点,每个节点用于对目标源代码中的代码字符串进行表征,每个节点的节点信息中至少包括对其表征的代码字符串的描述信息;
依据所述抽象语法树,分别获取目标代码片段中和每个代码案例中问题行、问题行的上文和下文在各自对应的抽象语法树中的节点信息;
分别将目标代码片段中的问题行、问题行的上文和下文各自的节点信息,与每个代码案例中的问题行、问题行的上文和下文各自的节点信息进行相似度比较,得到目标代码片段的问题行相似度、上文相似度和下文相似度。
4.根据权利要求3所述的方法,其特征在于,所述分别将目标代码片段中的问题行、问题行的上文和下文各自的节点信息,与每个代码案例中的问题行、问题行的上文和下文各自的节点信息进行相似度比较,得到目标代码片段的问题行相似度、上文相似度和下文相似度,包括:
将任一代码案例作为当前代码案例,按照如下操作得到目标代码片段与当前代码案例相比的问题行相似度、上文相似度和下文相似度:
将目标代码片段中问题行的节点信息与当前代码案例中问题行的节点信息进行相似度比较,得到目标代码片段的问题行相似度;
将目标代码片段中问题行的上文/下文中每一代码行的节点信息,与当前代码案例中问题行的上文/下文中每一代码行的节点信息进行相似度比较,得到多个相似度,将其中相似度最大值确定为目标代码片段的上文/下文相似度。
5.根据权利要求4所述的方法,其特征在于,所述将目标代码片段中问题行的上文/下文中每一代码行的节点信息,与当前代码案例中问题行的上文/下文中每一代码行的节点信息进行相似度比较,包括:
基于滑动窗口技术,将目标代码片段中问题行的上文/下文中每一代码行的节点信息,与当前代码案例中问题行的上文/下文中每一代码行的节点信息进行相似度比较。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京百度网讯科技有限公司,未经北京百度网讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910458231.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:基于脚本语言的测试用例
- 下一篇:测试方法及测试系统