一、背景
在前一家公司,公司提供了OpenGrok服务器供大家检索查阅代码。但在新公司,大家都使用vscode或Sourse Insight,这就存在一些问题:
-
不能跳转或者跳转比较慢。
-
搜索查询速度慢,且结果展示不易查看。
这严重影响了检索、阅读代码的效率,为了解决上面的问题,自己搭建了一个OpenGrok代码代码服务器,效果非常好,这篇文章记录下其中的过程,也给遇到同样问题的同学一个参考。
二、OpenGrok简介
OpenGrok是一个快速的代码搜索和交叉引用引擎。由Java语言编写而成,主要有以下功能。
-
可以搜索全文本、定义、符号、路径和修改记录。
-
可以将搜索限制在某个子树。
-
可以增量更新索引。
-
支持Google搜索类似搜索语法。
-
支持搜索某个时间段内被修改的文件。
-
支持使用通配符。
-
支持在搜索结果中显示匹配的行。
-
为版本控制工具提供了只读的web接口,包括文件修改提交记录和任意两个版本的文件差异。
-
支持在线交叉引用查询,包括语法高亮。
-
可扩展性强,可为新的编程语言和新的版本控制工具编写插件。
三、OpenGrok服务器搭建(Windows)
这里只介绍在Windows上安装搭建OpenGrok服务器的方法,Linux的安装方法可以自行百度。
3.1 下载OpenGrok
Releases · oracle/opengrok · GitHub
3.2 下载安装Tomcat
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,我们今天就用它来搭建我们的OpenGrok本地服务器。 Apache Tomcat® - Apache Tomcat 8 Software Downloads
-
添加环境变量:
TOMCAT_HOME=D:\software\tomcat\apache-tomcat-10.1.11-windows-x64\apache-tomcat-10.1.11
-
用GBK替换conf/logging.properties UTF-8,解决tomcat的乱码问题
-
运行bin/startup.bat
-
访问http://localhost:8080/ 出现tomcat官网文件,证明tomcat安装成功
3.3 下载安装JDK
Java Downloads | Oracle 中国
3.4 下载ctags
[https://github.com/universal-ctags/ctags-win32/releases](https://github.com/universal-ctags/ctags-win32/releases CTAGS_HOME=D:\software\ctag\ctags)
-
添加环境变量
CTAGS_HOME=D:\software\ctag\ctags
3.5 配置OpenGrok环境
3.5.1 配置Data Root目录
data root 用于放置生成的索引文件和配置信息,比如我在 OpenGrok 目录下创建了一个 data 目录用作 data root,即 D:\software\opengrok\opengrok-1.12.12\data。
3.5.2 配置source.war
将 OpenGrok 的 lib 目录里的 source.war 解压到 D:\software\tomcat\apache-tomcat-10.1.11-windows-x64\apache-tomcat-10.1.11\webapps
配置 WEB-INF\web.xml 文件的 CONFIGURATION 为上一步生成的 data 目录下的 configureation.xml,比如我的配置:
<display-name>OpenGrok</display-name><description>A wicked fast source browser</description><context-param><description>Full path to the configuration file where OpenGrok can read its configuration</description><param-name>CONFIGURATION</param-name><param-value>D:/software/opengrok/opengrok-1.12.12/data/configuration.xml</param-value></context-param>
3.5.3 配置source root
可以让 OpenGrok 认为 source root 下的每个子文件夹是一个项目,所以我们利用这个特性来配置和阅读多个项目源码就好了。 我的做法是在 OpenGrok 直接使用我Hyper-H创建的虚拟机的映射地址:Z:\project
3.5.4 建立索引
使用 opengrok.jar 调用 ctags 来为源码建立索引。命令行使用:
java -jar "D:\software\opengrok\opengrok-1.12.12\lib\opengrok.jar" -W "D:\software\opengrok\opengrok-1.12.12\data\configuration.xml" -P -S -v -s "Z:\project" -d "D:\software\opengrok\opengrok-1.12.12\data"-P 表示为 source root 目录下的每个一级子目录生成一个工程。-S 表示搜索并添加 “external” source repositories。-v 表示打印操作的进度信息。-s 表示指定 source root。-d 表示指定 data root。-W 表示指定将配置写到该文件。还有更多配置选项可以使用 java -jar /path/to/opengrok.jar 查看。
成功时的样子:
一个专注于“嵌入式知识分享”、“DIY嵌入式产品”的技术开发人员,关注我,一起共创嵌入式联盟。