【技术实现步骤摘要】
基于历史代码变更信息的API误用检测方法
[0001]本专利技术属于软件工程
,涉及一种用于检测软件中API错误使用(简称API误用)的技术,具体为基于历史代码变更信息的API误用检测方法。
技术介绍
[0002]在软件开发过程中,为了节省软件的开发时间和提高软件开发效率,开发人员经常需要使用各种应用程序编程接口(Application Programming Interface,简称API)来复用已有的软件框架或类库。利用API信息隐藏的机制,开发人员无需访问源码或理解被调用API内部工作机制的细节,通过调用对应的API实现类中的具体方法直接可以完成相应的功能。但由于API种类众多,文档信息不够完善,更新维护不及时等原因,开发人员在学习使用API的过程中面临着严峻的挑战,导致在软件开发过程中经常存在一些潜在的误用。
[0003]API误用是指违反了API的正确使用规范,比如错误的API调用,缺失API调用或多余的API调用,这些不规范的API使用严重危害着软件的安全。例如在文件读写时,如果开发人员忘记调用cl ...
【技术保护点】
【技术特征摘要】
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)更改控制条件参数;将提取的变异算子存入变异算子...
【专利技术属性】
技术研发人员:江贺,李康乐,周志德,任志磊,
申请(专利权)人:大连理工大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。