[发明专利]一种源代码的自动异常处理方法有效
申请号: | 202010867776.9 | 申请日: | 2020-08-26 |
公开(公告)号: | CN112035347B | 公开(公告)日: | 2022-03-01 |
发明(设计)人: | 王旭;孙海龙;张建;刘旭东 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/04 |
代理公司: | 北京中创阳光知识产权代理有限责任公司 11003 | 代理人: | 尹振启 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 源代码 自动 异常 处理 方法 | ||
本发明实现了一种源代码的自动异常处理方法,通过检测定位异常代码和生成处理对应异常的代码两个步骤,以LSTM神经网络方法作为基础方法,对未经过异常处理的代码进行代码异常的检测与定位,并生成相应的catch语句。本发明技术方案能够突破异常处理原则违反检测技术的应用范围限制,自动地检测待开发代码中存在的异常,同时解决异常处理代码推荐技术中存在的代码不完整性导致仍依赖开发者等现有自动化手段无法解决的问题。
技术领域
本发明涉及人工智能领域,尤其涉及一种源代码的自动异常处理方法。
背景技术
源代码异常处理(Exception Handling)是面向对象程序语言中提供的一种处理源代码中存在的异常以及从中恢复的有效机制。这种机制一般以“try”和“catch”关键字来实现,比如Java和C#语言。异常处理机制通过这种方式能够很好地分离处理错误的代码与正常代码,有助于程序理解和维护。缺少或者不正确地使用异常处理往往会导致严重的问题,例如系统崩溃或者信息泄露。因此对于开发者来说,异常处理是非常重要的。然而在实际的软件中,异常处理的代码质量低下且容易产生缺陷。这一方面在于开发者倾向于忽略异常处理,直到某个错误发生才去检查异常;另一方面编写异常处理的代码也是比较困难的,尤其是涉及到软件版本演化。综上,为了帮助开发者编写高质量的异常处理代码,自动化的异常处理技术是必要的。
现有的相关技术主要包括两个方面:异常处理原则违反检测以及异常处理代码推荐。在检测上,典型的技术包括对try和catch代码块内的方法调用序列进行关联规则挖掘(Association Rule Mining),从而检测源代码中是否有违反规则的调用。在推荐上,现有的技术大多面向开发中的代码进行代码样例或者异常类型以及API调用的推荐。比如,给定一段未经过异常处理的代码,通过从GitHub的软件仓库中检索相似的包含try-catch的代码来作为代码样例推荐给开发者,从而帮助其完成自己的代码开发。此外,也有技术利用模糊理论(Fuzzy Theory)和N-gram模型来推荐可能产生的异常类型以及能够处理这种异常的相应的API。
上述现有技术在应用中存在如下需要解决的问题:
1.检测异常代码规则违反行为的技术是建立在已有try-catch代码块的基础上的,然而这正是自动化异常处理的目标,即生成这些代码,因此该类技术无法适用到此文的场景。
2.异常处理代码推荐的技术存在两个问题:第一,假设开发者会主动寻求关于编写异常处理代码的帮助,并且知道try-catch代码块应该在哪些位置编写,但实际上与之相反;第二,即使推荐出的代码样例或者API能够帮助开发者设计try-block的逻辑,开发者仍然需要编写或修改这些代码以形成完整的异常处理代码。
发明内容
为了解决目前源代码自动异常处理方法的一些弊端,我们提出一种源代码的自动异常处理方法,其包括两个步骤:
步骤一:检测定位异常代码步骤:首先读取未经过异常处理的代码,对所述代码进行代码异常的检测与定位,对检测出存在潜在的异常的代码行添加相应的try关键字进行异常的捕获,具体地,根据代码的顺序性,将所述代码表示成语句序列,利用LSTM神经网络将各个语句转换为向量形式,并利用另一个LSTM对得到的向量序列建模,并且在两个LSTM的输出上使用注意力机制得到语句中的词的权重以及语句之间的权重分配,从而提升整体的检测性能;
步骤二:生成处理对应异常的代码步骤:具体地,使用两个独立的LSTM神经网络作为编码器,分别对try代码块以及其之前的代码进行编码,经过注意力模块得到两个上下文向量,对两者进行加权累加融合为一个向量后,利用程序切片技术以try内的语句作为切片准则,反向迭代查找其依赖的语句,在此基础上进行掩码处理输入到新的注意力模块得到额外的上下文向量,最后把两个上下文向量拼接到一起得到最终的向量并利用LSTM解码器生成相应的catch语句,即为用于处理异常的代码;
最终输出结果为所述用于处理异常的代码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010867776.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种土木工程用小型高效筛沙机
- 下一篇:一种早强型减水剂、生产工艺及其应用