OpenGrok代码服务器搭建,解决代码检索慢的问题

一、背景

在前一家公司,公司提供了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

  1. 添加环境变量:

TOMCAT_HOME=D:\software\tomcat\apache-tomcat-10.1.11-windows-x64\apache-tomcat-10.1.11

  1. 用GBK替换conf/logging.properties UTF-8,解决tomcat的乱码问题

  2. 运行bin/startup.bat

  3. 访问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嵌入式产品”的技术开发人员,关注我,一起共创嵌入式联盟。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/446509.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

题目:泡澡(蓝桥OJ 3898)

问题描述&#xff1a; 解题思路&#xff1a; 图解&#xff1a;&#xff08;以题目样例为例子&#xff09; 注意点&#xff1a;题目的W是每分钟最大出水量&#xff0c;因此有一分钟的用水量大于出水量则不通过。 补充&#xff1a;差分一般用于对一段区间每个元素加相同值&#x…

nicegui学习使用

https://www.douyin.com/shipin/7283814177230178363 python轻量级高自由度web框架 - NiceGUI (6) - 知乎 python做界面&#xff0c;为什么我会强烈推荐nicegui 秒杀官方实现&#xff0c;python界面库&#xff0c;去掉90%事件代码的nicegui python web GUI框架-NiceGUI 教程…

2024护网面试题精选(二)完

0x02. 内网渗透篇 00- 内网渗透的流程 拿到跳板后&#xff0c;先探测一波内网存活主机&#xff0c;用net user /domian命令查看跳板机是否在域 内&#xff0c;探测存活主机、提权、提取hash、进行横向移动&#xff0c;定位dc位置&#xff0c;查看是否有能直接提权域 管的漏洞…

JavaSE面试——多态

多态 1. 多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。 2. 多态性分为编译时多态和运行时多态&#xff0c;方法重载&#xff08;overload&#xff09;实现的是编译时多态&#xff0c;而方法重写 &…

【运维】本地部署Gemma模型(图文)

工具简介 我们需要使用到两个工具&#xff0c;一个是Ollama&#xff0c;另一个是open-webui。 Ollama Ollama 是一个开源的大语言平台&#xff0c;基于 Transformers 和 PyTorch 架构&#xff0c;基于问答交互方式&#xff0c;提供大语言模型常用的功能&#xff0c;如代码生…

给 spyter/all-spark-notebook 添加scala支持

spyter/all-spark-notebook默认没有安装scala notebook&#xff0c;需要手动添加。 你可以创建一个新的 Dockerfile&#xff0c;在其中添加你需要的配置和组件。以下是一个简单的例子&#xff1a; FROM jupyter/all-spark-notebook:x86_64-ubuntu-22.04 #冒号后可以是latest&a…

CAE模拟仿真工具CEETRON Envision:大数据可视化助力工业设计与协同

行业&#xff1a; 制造业; 工业设计; 汽车&#xff1b;航天 挑战&#xff1a;工业客户需要有效的方法来处理CAE数据&#xff1b;ESTECO寻求提供CAE可视化功能来帮助客户做出决策&#xff1b;许多可用的可视化工具无法提供对模型中数据的完全访问以进行深入分析 解决方案&…

快速排序hoare优化

目录 三数取中法选key 优化点 基本思想 代码实现 小区间优化 优化点 基本思想 代码实现 由于hoare版快排在一些特殊情况下性能并不优&#xff0c;这里我们进行一些优化。 三数取中法选key 优化点 当数据有序时&#xff0c;快排就会很吃力&#xff0c;这是为什么呢…

OpenJDK 目前主要发展方向

Loom&#xff1a;得赶紧解决 synchronized pin 线程的问题&#xff08;据说 Java 23 会解决&#xff0c;现在有预览版&#xff09;。各个 Java 库需要改造原来使用 ThreadLocal 的方式&#xff1a;如果是为了穿参数&#xff0c;则可以使用 ScopedLocal&#xff1b;如果是对象池…

如何解决新版的anaconda notebook 打不开浏览器

1 安装nodejs 先安装nodejs&#xff0c;里面有很多需要用node来启动服务 2 一片空白 安装jupyter以后启动&#xff0c; 结果就得到了如下&#xff0c;在chrome里面打开以后&#xff0c;一片空白 3 列出环境 conda create --name pytorch python3.9 conda env list cond…

【数学建模】Topsis法python代码

昨天学习了Topsis法的基本概念&#xff0c;今天就来一起实践一下&#xff0c;用python实现topsis法 代码分块解释 1、引入numpy库 numpy as np 2、输入参评与指标数目 # 用户输入参评数目和指标数目&#xff0c;将输入的字符串转换为数值 print("请输入参评数目&#…

在DeepLn环境中安装VLLM与ChatGLM3

DeepLn | 智慧算力触手可及是一个挺便宜的算力租用平台&#xff0c;里面有大量的显卡可以租用。唯一美中不足的是&#xff0c;提供的pytorch版本低&#xff0c;只支持到2.01&#xff0c;为了匹配vllm&#xff0c;需要手动安装指定版本的pytorch。 vllm介绍 总体而言&#xff0…

AHU 数据库 实验四

【实验名称】 实验4 数据库的嵌套查询和集合查询 【实验目的】 1. 理解并掌握子查询的概念和作用&#xff1b; 2. 掌握DBMS 实现嵌套查询的基本方法和应用&#xff1b; 3. 掌握DBMS 实现集合查询的基本方法和应用&#xff1b; 4. 学习、掌握并熟练…

Spring Boot 面试题及答案整理,最新面试题

Spring Boot中的自动配置是如何工作的&#xff1f; Spring Boot的自动配置是其核心特性之一&#xff0c;它通过以下方式工作&#xff1a; 1、EnableAutoConfiguration注解&#xff1a; 这个注解告诉Spring Boot开始查找添加了Configuration注解的类&#xff0c;并自动配置它们…

Python中random模块:随机数生成与应用

random模块介绍 随机数在计算机编程中扮演着重要的角色&#xff0c;它们被广泛应用于游戏开发、密码生成、仿真等众多领域。 Python提供了丰富而强大的random模块&#xff0c;旨在方便开发者生成高质量的随机数&#xff0c;随机选择和操作数据。 本文将介绍Python中random模…

OB_GINS学习

OB_GINS学习 组合导航中的杆臂测量加速度计的零偏单位转换受到经纬度以及高程影响的正常重力位的计算公式大地坐标系&#xff08;LBH&#xff09;向空间直角坐标系&#xff08;XYZ&#xff09;的转换及其逆转换导航坐标系&#xff08;n系&#xff09;到地心地固坐标系&#xff…

记录一个编译的LLVM 含clang 和 PTX 来支持 HIPIFY 的构建配置

llvm 18 debug 版本 build llvmorg-18.1rc4 debug $ cd llvm-project $ git checkout llvmorg-18.1.0-rc4 $ mkdir build_d $ cd build_d $ mkdir -p ../../local_d cmake \ -DCMAKE_INSTALL_PREFIX../../local_d \ -DLLVM_SOURCE_DIR../llvm \ -DLLVM_ENABLE_PROJECTS&…

深入理解Hive:探索不同的表类型及其应用场景

文章目录 1. 引言2. Hive表类型概览2.1 按照数据存储位置2.2 按照数据管理方式2.3 按照查询优化2.4 按照数据的临时性和持久性 3. 写在最后 1. 引言 在大数据时代&#xff0c;Hive作为一种数据仓库工具&#xff0c;为我们提供了强大的数据存储和查询能力。了解Hive的不同表类型…

Mybatis-plus连接多数据源操作(SQLServer、MySQL数据库)

Mybatis-plus连接多数据源操作&#xff08;SQLServer、MySQL数据库&#xff09; 一、依赖二、yml配置文件三、业务类四、测试 一、依赖 <!--mybatis多数据源--><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spri…

springboot260火锅店管理系统

火锅店管理系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装火锅店管理系统软件来发挥其高效…