论文部分内容阅读
代码搜索已经成为软件开发不可或缺的一部分,相关的研究也越来越受到研究者的关注。该领域的研究属于软件工程和信息检索的交叉领域,代码搜索研究的重要目标是利用信息检索及相关技术来提升算法的搜索性能。本文专注于面向自由文本输入的代码搜索研究,在采用文献分析方法探究该领域研究热点和现有研究中存在问题的基础上,本文的主要贡献可分为三个方面:提出融合了信息检索和监督学习的代码搜索算法来解决匹配方式单一的问题,提出基于众智查询扩展的代码搜索算法来解决词项失配的问题,以及实现了一个编程助手的原型系统。具体来说,这三个方面的内容为:(1)提出融合了信息检索和监督学习的方法进行代码搜索针对当前代码搜索算法中存在的匹配方式单一问题,提出一种融合了信息检索与监督学习的方法,该方法充分利用了多种领域特征来搜索代码片段。实验验证了该方法的有效性,与最新的代码搜索方法相比取得了明显的性能提升。(2)提出了基于众智查询扩展的方法进行代码搜索为解决当前代码搜索算法中存在的词项失配问题,提出一种基于众智的查询扩展方法QECK来提升代码搜索算法的性能。随后,把QECK整合到经典的Rocchio模型中,提出基于众智查询扩展的代码搜索方法QECKRocchio。实验验证了 QECK能够大幅度提升当前几个最新的代码搜索方法的性能。同时,与最新的基于WordNet查询扩展的代码搜索方法相比,本文提出的方法QECKRocchio取得了更好的搜索性能。(3)实现了一个编程助手的原型系统为避免开发者在开发时频繁的窗口切换,实现更便捷的开发,本章在Eclipse平台上设计并实现了一个编程助手的原型系统,以本文提出的基于众智查询扩展的代码搜索算法作为后台搜索算法,为开发者提供代码搜索服务。该系统以Eclipse插件的形式无缝地嵌入到开发者的编程环境中。本论文的工作,即面向自由文本输入的代码搜索,探究了该领域的研究主题和研究中存在的问题,针对问题分别提出了对应的解决方案,提升了代码搜索算法的性能。同时,实现了嵌入式的代码推荐系统。该研究的经验可以推广到软件工程的其它领域。