[发明专利]基于历史代码变更信息的API误用检测方法在审

专利信息
申请号: 202110301729.2 申请日: 2021-03-22
公开(公告)号: CN113051161A 公开(公告)日: 2021-06-29
发明(设计)人: 江贺;李康乐;周志德;任志磊 申请(专利权)人: 大连理工大学
主分类号: G06F11/36 分类号: G06F11/36;G06F8/71
代理公司: 大连理工大学专利中心 21200 代理人: 隋秀文;温福雪
地址: 116024 辽*** 国省代码: 辽宁;21
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 历史 代码 变更 信息 api 误用 检测 方法
【权利要求书】:

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)更改控制条件参数;将提取的变异算子存入变异算子集合Mu中;

步骤5、变异操作:提取待检测目标项目中包含API使用文件,将包含API使用的文件转换为AUG(target)集合;利用步骤4中的变异算子,对AUG集合进行变异,记为AUG′(target);

步骤6、过滤变异操作:对步骤5变异得到的AUG′(target)进行过滤,去掉包含伪API误用和冗余API误用的AUG,记为AUG″(target);

步骤7、目标项目检测:首先,将AUG″(target)集合转变为可执行的程序,得到包含API误用的程序变体集合Program(target);对所有的变体程序执行测试套件,收集终止堆栈信息Killi

步骤8、分析终止堆栈跟踪信息:包含API误用的程序变体集合Program(target)引起的堆栈跟踪信息应该特定于此目标API误用,且目标API误用引起的跟踪信息应该位于终止堆栈跟踪的顶部;如果终止堆栈跟踪信息不是该API误用引起的,或者还包含由其他API误用引起的信息,则说明原始程序中包含API误用;

步骤9、报告检测结果:当步骤8中出现原始程序中包含API误用的情况时,计算实际API误用m的概率大小Pm,概率越大说明API误用m的出现的可能越大;最后向开发人员报告候选误用,如果候选误用数量超过三个,则只向开发人员报告排名前三的候选误用;

实际API误用m的概率大小Pm的计算公式如下,其中mt为观察到API误用m在终止跟踪堆栈中触发的次数;L代表整个终止跟踪堆栈的深度;

Pm=mt/L。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大连理工大学,未经大连理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202110301729.2/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top