工欲善其事,必先利其器之—使用OpenGrok阅读源码

2022-09-01 15:57:24 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

OpenGrok的介绍

OpenGrok is a fast and usable source code search and cross reference engine. It helps you search, cross-reference and navigate your source tree. It understands various program file formats and history from many Source Code Management systems. In other words it lets you grok (profoundly understand) source code and is developed in the open, hence the name OpenGrok. It is written in Java.

OpenGrok的安装

前置环境

  • Java运行环境至少是1.8以上
  • 安装Java Web容器(classfish或tomcat8.x以上版本)
  • 安装Universal ctags

Tomcat的安装

Tomcat8的下载 把下载的压缩包解压,并放到你喜欢的某个本地目录,如解压后的目录为

/Users/luogw/dev_tool/apache-tomcat-8.5.31 注:解压的文件默认没有执行权限的,需要对该目录的所有文件加上可执行权限

代码语言:javascript复制
drwxr-xr-x@ 25 luogw  staff     850  4 27 21:25 ./
drwxr-xr-x@ 13 luogw  staff     442  4 27 21:26 ../
-rw-r--r--@  1 luogw  staff   34985  4 27 21:24 bootstrap.jar
-rw-r--r--@  1 luogw  staff    1703  4 27 21:24 catalina-tasks.xml
-rw-r--r--@  1 luogw  staff   15900  4 27 21:24 catalina.bat
-rw-r--r--@  1 luogw  staff   23463  4 27 21:25 catalina.sh
-rw-r--r--@  1 luogw  staff  207125  4 27 21:25 commons-daemon-native.tar.gz
-rw-r--r--@  1 luogw  staff   25145  4 27 21:24 commons-daemon.jar
-rw-r--r--@  1 luogw  staff    2040  4 27 21:24 configtest.bat
-rw-r--r--@  1 luogw  staff    1922  4 27 21:25 configtest.sh
-rw-r--r--@  1 luogw  staff    8509  4 27 21:25 daemon.sh
-rw-r--r--@  1 luogw  staff    2091  4 27 21:24 digest.bat
-rw-r--r--@  1 luogw  staff    1965  4 27 21:25 digest.sh
-rw-r--r--@  1 luogw  staff    3574  4 27 21:24 setclasspath.bat
-rw-r--r--@  1 luogw  staff    3680  4 27 21:25 setclasspath.sh
-rw-r--r--@  1 luogw  staff    2020  4 27 21:24 shutdown.bat
-rw-r--r--@  1 luogw  staff    1902  4 27 21:25 shutdown.sh
-rw-r--r--@  1 luogw  staff    2022  4 27 21:24 startup.bat
-rw-r--r--@  1 luogw  staff    1904  4 27 21:25 startup.sh
-rw-r--r--@  1 luogw  staff   49336  4 27 21:24 tomcat-juli.jar
-rw-r--r--@  1 luogw  staff  405109  4 27 21:25 tomcat-native.tar.gz
-rw-r--r--@  1 luogw  staff    4574  4 27 21:24 tool-wrapper.bat
-rw-r--r--@  1 luogw  staff    5483  4 27 21:25 tool-wrapper.sh
-rw-r--r--@  1 luogw  staff    2026  4 27 21:24 version.bat
-rw-r--r--@  1 luogw  staff    1908  4 27 21:25 version.sh

添加可执行权限

代码语言:javascript复制
luogw@luogw-MacBook-Pro dev_tool$ chmod -R  x apache-tomcat-8.5.31
# 启动Tomcat
luogw@luogw-MacBook-Pro dev_tool$ ./apache-tomcat-8.5.31/bin/startup.sh
Using CATALINA_BASE:   /Users/luogw/dev_tool/apache-tomcat-8.5.31
Using CATALINA_HOME:   /Users/luogw/dev_tool/apache-tomcat-8.5.31
Using CATALINA_TMPDIR: /Users/luogw/dev_tool/apache-tomcat-8.5.31/temp
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home
Using CLASSPATH:       /Users/luogw/dev_tool/apache-tomcat-8.5.31/bin/bootstrap.jar:/Users/luogw/dev_tool/apache-tomcat-8.5.31/bin/tomcat-juli.jar
Tomcat started.

用浏览器打开 http://localhost:8080/ ,正常情况下看到所示页面,表明安装成功

在.bash_profile中添加如下启动与并闭的Tomcat的alias

代码语言:javascript复制
# for tomcat
alias start_tomcat='${HOME}/dev_tool/apache-tomcat-8.5.31/bin/startup.sh'
alias close_tomcat='${HOME}/dev_tool/apache-tomcat-8.5.31/bin/shutdown.sh

Universal Ctags的安装

使用brew安装Ctags

代码语言:javascript复制
brew install --HEAD universal-ctags/universal-ctags/universal-ctags

OpenGrok的安装

OpenGrok下载列表 下载对应的压缩包并解压,解压出来的目录放在你喜欢的某个目标即可,如我的解压目录位置是 /Users/luogw/dev_tool/opengrok-1.1-rc29

OpenGrok的使用实践

示例:搭建JDK源码的阅读环境

环境配置

在.bash_profile文件中添加如下环境变量的配置

代码语言:javascript复制
# for tomcat
alias start_tomcat='${HOME}/dev_tool/apache-tomcat-8.5.31/bin/startup.sh'
alias close_tomcat='${HOME}/dev_tool/apache-tomcat-8.5.31/bin/shutdown.sh'

# for opengrok,实际目录位置视具体的情况更改
OPENGROK_INSTANCE_BASE=${HOME}/dev_tool/opengrok-1.1-rc29
export OPENGROK_INSTANCE_BASE
OPENGROK_TOMCAT_BASE=${HOME}/dev_tool/apache-tomcat-8.5.31
export OPENGROK_TOMCAT_BASE
OPENGROK_CTAGS=/usr/local/bin/ctags
export OPENGROK_CTAGS
OPENGROK_SRC_ROOT=${HOME}/personal/code
export OPENGROK_SRC_ROOT
OPENGROK_DATA_ROOT=${HOME}/personal/opengrok_index
export OPENGROK_DATA_ROOT
OPENGROK_VERBOSE=true
export OPENGROK_VERBOSE
alias opengrok='${HOME}/dev_tool/opengrok-1.1-rc29/bin/OpenGrok'

发布Web应用

代码语言:javascript复制
luogw@luogw-MacBook-Pro opengrok_index$ opengrok deploy
Loading the default instance configuration ...
Installing /Users/luogw/dev_tool/opengrok-1.1-rc29/bin/../lib/source.war to /Users/luogw/dev_tool/apache-tomcat-8.5.31/webapps ...

Start your application server (Tomcat),  if it is not already
running, or wait until it loads the just installed web  application.

OpenGrok should be available on <HOST>:<PORT>/source
  where HOST and PORT are configured in Tomcat.

生成索引

代码语言:javascript复制
luogw@luogw-MacBook-Pro notes$ source ~/.bash_profile
luogw@luogw-MacBook-Pro notes$ opengrok index
Loading the default instance configuration ...
WARNING: OpenGrok generated etc path /Users/luogw/dev_tool/opengrok-1.1-rc29/etc  doesn't exist Attempting to create generated etc directory ... Creating default /Users/luogw/dev_tool/opengrok-1.1-rc29/logging.properties ...

生成索引需要些时间…..

搜索代码

代码语言:javascript复制
# 启动Tomcat
start_tomcat
# 浏览器打开链接 [http://localhost:8080/source/](http://localhost:8080/source/)

效果截图如下

参考资料

  • opengrok官网
  • 搭建大型源码阅读环境——使用 OpenGrok
  • Ubuntu搭建OpenGrok环境阅读Linux内核源代码
  • OpenGrok简单使用说明

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141722.html原文链接:https://javaforall.cn

0 人点赞