国内刊号:11-2560/TP
国际刊号:1000-9825
发布日期:
作者:汪昕,陈驰,赵逸凡,彭鑫,赵文耘
单位:汪昕,复旦大学 软件学院, 上海 201203;上海市数据科学重点实验室(复旦大学), 上海 20120311,陈驰,复旦大学 软件学院, 上海 201203;上海市数据科学重点实验室(复旦大学), 上海 20120302,赵逸凡,复旦大学 软件学院, 上海 201203;上海市数据科学重点实验室(复旦大学), 上海 20120303,彭鑫,复旦大学 软件学院, 上海 201203;上海市数据科学重点实验室(复旦大学), 上海 20120304,赵文耘,复旦大学 软件学院, 上海 201203;上海市数据科学重点实验室(复旦大学), 上海 20120305
关键词:API误用;使用规约;缺陷检测;深度学习
基金:国家重点研发计划(2016YFB1000801)
开发人员经常需要使用各种应用程序编程接口(application programming interface,简称API)来复用已有的软件框架、类库等.由于API自身的复杂性、文档资料的缺失等原因,开发人员经常会误用API,从而导致代码缺陷.为了自动检测API误用缺陷,需要获得API使用规约,并根据规约对API使用代码进行检测.然而,可用于自动检测的API规约难以获得,而人工编写并维护的代价又很高.针对以上问题,将深度学习中的循环神经网络模型应用于API使用规约的学习及API误用缺陷的检测.在大量的开源Java代码基础上,通过静态分析构造API使用规约训练样本,同时利用这些训练样本搭建循环神经网络学习API使用规约.在此基础上,针对API使用代码进行基于上下文的语句预测,并通过预测结果与实际代码的比较发现潜在的API误用缺陷.对所提出的方法进行实现并针对Java加密相关的API及其使用代码进行了实验评估,结果表明,该方法能够在一定程度上实现API误用缺陷的自动发现.
来源:2019年第5期
《软件学报》期刊编辑部