论文部分内容阅读
在日常的编程开发中,开发者在输入表达式“e”和点号“.”后,集成开发环境(IDE)基于静态分析对所有可能的API方法进行补全提示。但是,现有的IDE只是将符合可访问语法类型的所有API方法简单的按字母进行排序后进行推荐。而现有的类中包含可访问的API方法常常有过百种。因此,如何结合编程上下文信息和网页上的相关API的历史资料减少补全推荐中无用的提示API方法,并使相关API方法在补全提示栏中的排位靠前是一项有效减少开发者编程时间的有益工作。本文对API方法的补全推荐展开研究,包括Stack Overflow离线数据转储的预处理和分析,以及基于关联规则的API方法补全推荐,具体工作如下:1.从Stack Overflow的网页内容中提取出了相关代码信息,从而建立了 API方法使用模式的数据库。对数据转储的Post数据表进行重点分析,提取答题内容中的代码建立代码库,对代码库中的代码建立抽象语法树进行语法分析,提取出代表API使用模式的API实例数据库。2.对相关代码涉及网页中的各种人气指标进行统计,建立API方法人气数据库。提出了基于人气的API方法推荐方法,并对基于各种人气指标的方法进行了测试,分析了基于人气的API方法推荐方法的影响力。3.由于人气指标的推荐方法并没有考虑当前编程环境上下文的缺点,针对Java编程语言面向对象和强类型的特点,对Apriori算法的输入数据和关联规则的发现方法进行了改良。并给出了一种结合人气指标和关联规则的API方法推荐系统。以Eclipse插件的形式实现了基于本方法的软件,并与其他论文中提出的代码补全提示软件进行了推荐效果的对比测试,分析推荐系统的命中率和冗余度。实验结果表明,与CSCC、BCC和BMN进行Top-N命中比较,在N为1、3时命中率仅低于BMN方法但优于BCC和CSCC方法,且在N为10的情况下其命中率优于其他方法。本文的冗余度仅比CSCC高,优于BCC、CSCC、BMN。