论文部分内容阅读
集成开发环境(IDE)是一种帮助开发人员进行项目开发的应用程序,被广泛运用在程序开发的过程中。现有主流的集成开发环境如Eclipse和Visual Studio都具有代码编译、项目管理和集成测试等功能,且在这些功能的基础上提供了强大的可供扩展的插件机制,这使得针对集成开发环境的优化工具研究变得越来越重要。在实际项目开发过程中,代码推荐(Code Recommendation)或“代码补全”(Code Completion)作为非常实用的辅助功能,被几乎所有的集成开发环境所提供。代码推荐功能在开发人员编写程序过程中,提供例如方法、属性和参数等推荐,能够缩短开发人员对于不熟悉的类库或框架的学习时间,减轻代码编写过程中输入完整方法类型名称的负担,避免编程过程中的拼写错误,从而提高软件开发效率。正是由于代码推荐功能对于项目开发过程带来的方便,近年来出现了越来越多针对代码推荐方面的研究。JavaScript作为一种流行的脚本语言,主要被运用于例如浏览器应用程序中,现已成为最流行的客户端脚本语言。而且JavaScript正被用于越来越多的领域,例如Windows8应用程序和服务器端。类似V8等针对JavaScript的高效执行引擎的出现也使得JavaScript能够在更多的领域发挥更大的作用。但是,对于JavaScript语言的代码推荐问题来说,传统的通过类型分析建立类型系统并给出代码推荐的方法具有推荐成功率低和效率不高等问题。特别是由于JavaScript是一种弱类型的程序语言,且具有高度的动态特性,使得针对JavaScript的程序分析问题变得具有挑战性。针对上述问题,本文在研究了现有的JavaScript代码推荐方法的基础上,提出了一种使用动态程序分析结合机器学习的代码推荐方法,采用事先建模的方法保存模拟运行环境,并且对上下文对象建立特征索引。同时在用户代码的抽象语法树的基础上进行代码分块,按程序分块顺序对用户代码进行模拟执行,利用对象之间相似度在用户运行时修正运行变量并对模拟执行时产生的异常进行处理,实现了针对用户代码的动态JavaScript代码提示。基于上述方法,本文对基于程序分析和机器学习的代码推荐方法进行了详细设计,采用“高内聚,低耦合”的设计思想,使得设计具有良好的可扩展性和可修改性,最终实现了一款基于Eclipse的代码推荐插件工具。最后,本文针对实现的代码推荐工具进行了实验验证,通过比较现有的JavaScript代码推荐工具进行了多组实验。实验结果表明,相比于现有的使用静态分析方法的JavaScript代码推荐技术,该方法具有更高的可推荐性和更快的响应速度。