[发明专利]一种源代码的自动异常处理方法有效
申请号: | 202010867776.9 | 申请日: | 2020-08-26 |
公开(公告)号: | CN112035347B | 公开(公告)日: | 2022-03-01 |
发明(设计)人: | 王旭;孙海龙;张建;刘旭东 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/04 |
代理公司: | 北京中创阳光知识产权代理有限责任公司 11003 | 代理人: | 尹振启 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 源代码 自动 异常 处理 方法 | ||
1.一种源代码的自动异常处理方法,其特征在于:所述方法包括两个步骤:
步骤一:检测定位异常代码步骤:首先读取未经过异常处理的代码,对所述代码进行代码异常的检测与定位,对检测出存在潜在的异常的代码行添加相应的try关键字进行异常的捕获,具体地,根据代码的顺序性,将所述代码表示成语句序列,利用LSTM神经网络将各个语句转换为向量形式,并利用另一个LSTM对得到的向量序列建模,并且在两个LSTM的输出上使用注意力机制得到语句中的词的权重以及语句之间的权重分配,从而提升整体的检测性能;
步骤二:生成处理对应异常的代码步骤:具体地,使用两个独立的LSTM神经网络作为编码器,分别对try代码块以及其之前的代码进行编码,经过注意力模块得到两个上下文向量,对两者进行加权累加融合为一个向量后,利用程序切片技术以try内的语句作为切片准则,反向迭代查找其依赖的语句,在此基础上进行掩码处理输入到新的注意力模块得到额外的上下文向量,最后把两个上下文向量拼接到一起得到最终的向量并利用LSTM解码器生成相应的catch语句,即为用于处理异常的代码;
最终输出结果为所述用于处理异常的代码。
2.根据权利要求1所述一种源代码的自动异常处理方法,其特征在于:所述检测定位异常代码步骤中,所述对得到的向量序列建模过程的具体方法为:首先将该代码切分成以行为单位的语句序列S={s1,s2,…,sK},K表示语句的数量,其中i为语句的编号,s表示不包含空行和注释行的每一行语句,c表示每一行代码中的单个词,L为单个语句的最大词数,对于每个语句si,首先将其中的每个词以词嵌入的形式转换为向量表示,记为其中We是词嵌入矩阵,t表示词的位置,使用LSTM对该语句中的词进一步编码,即在每个位置t上,通过下式得到其隐藏状态向量,h即为隐藏状态向量,那么:
进一步地,使用双向的LSTM来学习词之间的依赖关系,即
从而构成所述向量序列建模。
3.根据权利要求2所述一种源代码的自动异常处理方法,其特征在于:所述检测定位异常代码步骤中,所述得到语句中的词的权重以及语句之间的权重分配的具体方法为:利用注意力机制学习出词的权重,并以加权累加的方式得到该语句的向量,定义sk是该语句的向量表示,在得到所述语句的向量序列之后使用另外的LSTM对语句之间的依赖关系建模,表示为:
hk=BiLSTM(sk)
并使用注意力机制对得到的隐藏状态在不进行累加操作前提下进行分配权重:
uk=tanh(Wshk+bs)
h′k=akhk
其中Ws和bs分别为转换矩阵和偏置项,tanh为激活函数,us是随机初始化的固定的向量,αk表示计算得到的权重,h′k是经过权重转换的隐藏状态向量,基于以上隐藏状态向量,利用分类器预测是否会出现异常的概率
其中Wp和bp分别为转换矩阵和偏置项,sigmoid为激活函数,在训练时,使用二分交叉熵作为损失函数:
其中y表示真实的标签,N表示训练集的样本数目,Θ表示需要学习的所有参数,训练完成后,根据预测的概率设定阈值δ来决定预测的标签,若大于该阈值,则预测为Y,也就是该语句会抛出异常,需要添加到try语句内,否则为N,与之相反。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010867776.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种土木工程用小型高效筛沙机
- 下一篇:一种早强型减水剂、生产工艺及其应用