[发明专利]一种API误用的变更模式挖掘方法有效
| 申请号: | 201910030995.9 | 申请日: | 2019-01-14 |
| 公开(公告)号: | CN109857648B | 公开(公告)日: | 2021-12-28 |
| 发明(设计)人: | 陈碧欢;彭鑫;赵文耘 | 申请(专利权)人: | 复旦大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/71 |
| 代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;王洁平 |
| 地址: | 200433 *** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 api 误用 变更 模式 挖掘 方法 | ||
本发明属于软件工程技术领域,具体为一种API误用的变更模式挖掘方法。本发明从代码托管服务上海量开源项目的变更提交历史中选取出修复API误用的变更提交,通过分析变更提交的细粒度代码差异来抽取API误用的变更方式,对API误用的变更方式的项目间频次(在开源项目中出现的项目数)和项目内频次(在所有开源项目中出现的次数)进行排序得到API误用的变更模式。本发明所挖掘出的API误用的变更模式在海量开源项目中频繁出现,可以用来检测开源项目中的API误用,从而提高开源项目的质量。
技术领域
本发明属于软件工程技术领域,具体涉及一种API误用的变更模式挖掘方法。
背景技术
第三方库和框架通常以API的方式提供给软件开发人员使用,从而提高软件开发的效率和软件系统的质量。然而,在实践中,即使对于非常有经验的开发人员,学习和使用API是一件非常困难的事情。这主要归因于以下几个问题:API的使用约束通常是隐含的假设、API之间的组合调用往往是非常复杂的、API的文档经常是不完整或者含有二义性的、API由于自身演化而变得不稳定。这就使得开发人员经常误用API,导致未知的软件行为或者软件缺陷(包括功能缺陷、性能缺陷、安全缺陷、兼容性问题等)。
开源项目中存在着大量关于API使用的知识,而且代码托管服务上的开源项目正快速增长,这些都促成了API使用模式挖掘的发展。目前的API使用模式主要有三种表示形式。第一种表示是一个API调用集合,例如{FileInputStream.read,FileInputStream.close}。这个集合中的API调用经常在一起频繁使用,但不区分调用的次序,例如只要调用FileInputStream.read就需要调用FileInputStream.close,反之亦然。第二种表示是一个API调用的序列,例如FileInputStream.read-FileInputStream.close。这个序列表示一组API经常以固定的先后顺序被调用,例如FileInputStream.close不能在FileInputStream.read之前被调用。第三种表示是API调用的前置条件,表示一个API在被调用之前必须要满足某种前置条件,例如File.createNewFile在被调用之前File.exists必须要返回false。以上三种模式都关注于API调用的上下文关系,而并没有关注API调用本身的信息,例如API调用的参数设置是否正确、是否在一组类似的API中选择了一个合适的API、API调用的返回值是否进行了特殊值的额外判断等。本发明所关注的挖掘方法针对API调用本身。
发明内容
本发明的目的是提供一种API误用的变更模式挖掘方法,从而识别开源项目中常见的API误用及其变更模式,从而便于在开源项目中检测API误用并提高开源项目的质量。
为了达到上述目的,本发明提供一种API误用的变更模式挖掘方法,其包括以下:
(1)从代码托管服务上开源项目的变更提交历史中,根据启发式规则选择与修复API误用相关的变更提交;
(2)针对每个变更提交,进行变更提交前后开源项目在抽象语法树上的代码差异分析,并抽取和分析API误用的变更方式;
(3)对API误用的变更方式进行项目间频次以及项目内频次的统计,并通过加权排序得到API误用的变更模式。
本发明中,步骤(1)中所使用的启发式规则是选择缺陷修复的变更提交。API误用会导致软件缺陷,本发明在变更提交日志中通过关键字匹配的方式来选择缺陷修复的变更提交。本发明所使用的关键字包括“bug”、“fix”、“patch”、“performance”、“slow”、“throughput”、“security”、“insecure”、“compatibility”、以及“compatible”。这些关键字是为了覆盖各种软件缺陷(包括功能缺陷、性能缺陷、安全缺陷、以及兼容性缺陷)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910030995.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:自动化测试方法、装置、计算机设备和存储介质
- 下一篇:一种资源测试方法及系统





