基于历史代码变更信息的API误用检测方法技术

技术编号:29087186 阅读:47 留言:0更新日期:2021-06-30 09:51
本发明专利技术提供一种基于历史代码变更信息的API误用检测方法,属于软件工程技术领域。该方法首先从代码托管工具上拉取开源项目的历史代码变更信息,提取出API误用相关的修复信息。利用程序修复前后AUG来逆向提取程序变异算子,而不是通过人工设计变异算子,有效且高效地生成大量包含API误用的程序集。API误用集作为测试用例通过测试套件后,分析终止跟踪堆栈中的信息,如果终止堆栈跟踪信息不是目标API误用引起的,或者还包含由其他API误用引起的信息,则说明原始程序中包含API误用。避免了从大量程序中学习正确的API使用模式,提高了API误用检测的效率。误用检测的效率。误用检测的效率。

【技术实现步骤摘要】
基于历史代码变更信息的API误用检测方法


[0001]本专利技术属于软件工程
,涉及一种用于检测软件中API错误使用(简称API误用)的技术,具体为基于历史代码变更信息的API误用检测方法。

技术介绍

[0002]在软件开发过程中,为了节省软件的开发时间和提高软件开发效率,开发人员经常需要使用各种应用程序编程接口(Application Programming Interface,简称API)来复用已有的软件框架或类库。利用API信息隐藏的机制,开发人员无需访问源码或理解被调用API内部工作机制的细节,通过调用对应的API实现类中的具体方法直接可以完成相应的功能。但由于API种类众多,文档信息不够完善,更新维护不及时等原因,开发人员在学习使用API的过程中面临着严峻的挑战,导致在软件开发过程中经常存在一些潜在的误用。
[0003]API误用是指违反了API的正确使用规范,比如错误的API调用,缺失API调用或多余的API调用,这些不规范的API使用严重危害着软件的安全。例如在文件读写时,如果开发人员忘记调用close()函数关闭文本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于历史代码变更信息的API误用检测方法,其特征在于,步骤如下:步骤1、软件项目历史代码变更信息收集:从源代码托管平台上收集开源软件项目历史代码变更信息;步骤2、提取API误用相关的变更代码:针对步骤1中收集到的开源软件项目历史代码变更信息,提取其中与API误用相关的信息,得到包含API误用的代码片段集合S与修复API误用后的代码片段集合S

;步骤3、API使用图AUG构建:首先通过JavaParser将Java源代码解析为抽象语法树,提取操作节点和控制节点;确定操作节点和控制节点之间的数据依赖关系以及总体使用顺序,用实线箭头边和虚线箭头边来分别表示控制流和数据流,节点集和边集构成了整体的API使用图AUG;将步骤2得到的代码片段集合S与S

中的代码片段转换为API使用图AUG,记为AUG(S)和AUG(S

);步骤4、提取变异算子:从AUG(S)到AUG(S

)代表程序修复过程,反之,从AUG(S

)到AUG(S)则代表程序一种API误用模式,每一种误用模式都包含着从API正确使用到API错误使用的变异过程,每一个变异过程对应一个变异算子;遍历修复前后代码集合,比对AUG(S

)和AUG(S)之间的不同之处,从中提取如下变异算子:1)交换API使用图中节点的顺序;2)在API使用图中添加对已有API节点的调用,形成新的调用环路;3)更改API使用图中调用节点;4)在API使用图中新增API调用节点;5)删除API使用图中的调用节点;6)删除API使用图中的控制结构;7)更改API方法参数;8)更改控制条件参数;将提取的变异算子存入变异算子...

【专利技术属性】
技术研发人员:江贺李康乐周志德任志磊
申请(专利权)人:大连理工大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1