论文部分内容阅读
API使用示例能有效帮助开发人员快速学习API的使用方法。目前,多数开发人员利用通用搜索引擎(例如Google、Bing)来查找API使用示例。但由于通用搜索引擎缺乏对API使用示例的特殊关注,开发人员使用通用搜索引擎在线查找API使用示例时会遇到许多困难和障碍。 为了帮助开发人员有效利用互联网上广泛存在的API使用示例,本文提出了一种基于互联网的Java API使用示例推荐系统的设计方案,并根据该方案实现了系统--APIExample。本文详细讨论了在实现API使用示例推荐系统过程中需要解决的问题,并给出了相应的解决方案。在此基础之上,本文给出了APIExample系统的设计方案与实现细节。该系统基于API名称构造查询条件,利用通用搜索引擎获取包含API使用示例的网页。之后,根据网页中的HTML标签,系统将页面内容分割为文本片段,并使用基于Java语言特征制定的启发式规则,识别代码片段。为了提高使用示例抽取的准确率,本文基于对大量网页的观察结果,制定了零碎文本片段的合并规则,并以此合并零碎的文本片段。在抽取得到代码片段后,本文将该代码片段所属网页的标题、与该代码片段相邻的文本片段作为其描述文本。随后,APIExample系统对代码片段进行解析,建立相应的抽象语法树,遍历抽象语法树的特定类型结点,从中获取使用示例的相关信息。为了提高解析使用示例的成功率,本文制定了一套代码片段的修复规则,其中包括2条补全规则和4条修正规则。使用示例的解析与修复迭代进行,直至解析成功或尝试了所有可行的修复方案。为了更好的组织API使用示例,本文提出了一种基于API用法的使用示例聚类方法。利用该聚类方法,APIExample系统将API用法相同的使用示例归入一个簇中。开发人员可以通过查看使用示例簇,快速学习API的用法,提高学习效率。APIExample系统利用键值对数据库和关系数据库有效的存储相关数据。系统对外提供RESTful类型的服务,该设计有利于实现多种类型的客户端。本文实现了Web UI类型的客户端,其具有友好、集成的用户交互界面,将使用示例以良好的方式展示给用户。 本文给出了APIExample系统的实际运行情况。该系统共收录了16个著名Java开源项目的6,491个API。针对Java API使用示例抽取方法、Java API使用示例解析和修复方法,本文进行了实验。实验数据表明在实际应用中,本文提出的Java API使用示例抽取方法、Java API使用示例解析和修复方法取得了较好的效果,具有较强的实用性。本文还通过一个案例展示了APIExample系统如何帮助Java开发人员解决实际问题。 APIExample系统已经对外提供访问,地址是http://www.apiexample.com/。