基于gitlab的代码搜索文献综述

 2022-10-31 11:10
  1. 文献综述(或调研报告):

1.前言

代码搜索的基本思想是通过建立特殊的索引以及利用基于正则表达式的匹配算法。其主要过程是对特定代码仓库中所有纯文本文件进行处理,建立 trigram 索引。Google 内部最早有一个 gsearch 的工具,当搜索代码的时候会对整个代码库执行grep,找到所有结果后会打印出来。所有机器和管理代码的服务器通信,将一些内容保存在内存中,但即使这样速度也是比较缓慢。尤其当用户敲出错误的 query 之后,再次修改,就会产生多次查询,效率的低下使得搜索变得尤为艰巨。

Ken Thompson有一个 Plan 9 grep 的项目,是基于正则表达式的 grep 工具,Ross Cox从图书馆的书中发现了这个强大的工具,借以引入到 Google Code 的开发中。并且Jeff Dean 建议可以使用 Web 页面来进行展示,提升用户体验。后来他们利用 trigram 索引和 regex pattern match 开发出了 Code Search 的基础版本。

近几年Github逐渐代替了 Google Code 的地位,跃升为全世界第一大代码仓库,大部分开源开发者用户都在上面活跃。搜索代码逐渐也成为了一种刚性需求。 Github 使用了 Elastic Search 来对所有代码仓库构建索引,但具体构建索引的方式似乎没有透露。Github 提供了几种不通的搜索界面,Normal Search 和 Advanced Search,在普通界面只有一个简单的搜索框,会进行普通匹配,在高级界面可以对时间、仓库、以及代码设置详细的搜索选项,更精准的去匹配代码。

用户更需要的是结合两者的优势,最好可以自定义。

2.搜索结果的可视化

对于搜索的结果,目前简单的展示所有结果可能无法满足用户需求,因为依然存在着要进行操作的可能。或者当内容过长,用户需要截段浏览。那么我们需要提供对每条搜索结果的其他信息,展现在界面上,包括仓库、代码行号、高亮的代码内容,以友好的形式给用户提供一个富交互、可操作的页面。

3.小结

用户需要搜索的代码场景很多,比如需要查找相关服务的依赖调用,或者可能只希望查找单个代码片段,那需要为用户提供的就不仅仅是一个精确查找并返回结果集的搜索引擎,你需要用良好的页面设计与交互操作来满足不同场景下用户复杂多变的需求,以及各类操作。

综上所述,我们将具体的要开发的内容划分为两个大部分即搜索模块和Web模块,对搜索模块的每个功能进行细分,而对于 Web 模块则选择以 SPA 的形式展现,以 flux 确保数据流的单方向流动,将页面组件化来进行抽象和复用。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。