OpenGrok为一个方便快速的源码搜索及交叉引用查询引擎。它以Java编写,可用于源码搜索、交叉引用查询、以及源码树定位。它支持多种编码语言和多种代码版本控制引擎系统。OpenGrok提供了如下这些功能:
快速的源码搜索引擎:
可搜索全文、定义、符号、路径和版本历史
限定子目录树进行搜索(分层搜索)
增量更新索引,如:仅更新从上次更新后修改过的文件
以类Google搜索语法进行查询,如: path:Makefile defs:target等
搜索指定日期范围内修改过的文件
支持使用通配符*和?进行搜索
在搜索结果中显示匹配行
为版本控制系统,如Mercurial、CVS、SVN、SCCS或TeamWare等提供了只读的Web接口:
文件历史日志;
以udiffs或sdiffs显示两个版本之间的差异;
以RSS格式显示自定目录的累积日志
具有语法高亮功能的在线交叉索引,以CSS样式表提供的高可定制的外观;
可以为新的编程语言或版本控制系统编写新的插件;
OpenGrok is a fast and usable source code search and cross reference engine, written in Java. It helps you search, cross-reference and navigate your source tree. It can understand various program file formats and version control histories of many source code management systems.
Official page of the project is on: {OpenGrok by OpenGrok/
JAVA 11
apache-tomcat-10.0.8.tar.gz
ctags-master.zip
opengrok-1.7.13.tar.gz
其他相关工具,遇到缺少时安装即可。
ubuntu下直接apt install即可
add-apt-repository ppa:linuxuprising/java apt update apt-get install openjdk-11-jdk
下载源码包并解压后
# https://github.com/universal-ctags/ctags ./autogen.sh ./configure make & make install
使用apache-tomcat-10.0.8/bin/catalina.sh
脚本及start/stop/restart
启动关闭或者重启tomcat服务
在浏览器中输入网址http://localhost:8080若能显示tomcat的界面即表示启动成功
建立以下目录 https://github.com/oracle/opengrok/releases/tag/1.7.13mkdir opengrok/{src,data,dist,etc,log}
以上目录要保证web app有写的权限,如无特殊禁忌,可以设为777
将归档文件解压到disttar -C opengrok/dist --strip-components=1 -xzf opengrok-X.Y.Z.tar.gz
将日志配置文件由解压目录拷贝到新建目录,之后log会输出到opengrok/logs
cp opengrok/dist/doc/logging.properties opengrok/etc
log的配置参考
handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler java.util.logging.FileHandler.pattern = /opengrok/log/opengrok%g.%u.log java.util.logging.FileHandler.append = false java.util.logging.FileHandler.limit = 0 java.util.logging.FileHandler.count = 30 java.util.logging.FileHandler.level = ALL java.util.logging.FileHandler.formatter = org.opengrok.indexer.logger.formatter.SimpleFileLogFormatter java.util.logging.ConsoleHandler.level = WARNING java.util.logging.ConsoleHandler.formatter = org.opengrok.indexer.logger.formatter.SimpleFileLogFormatter org.opengrok.level = FINE
将解压出来的opengrok/dist/lib/source.war
拷贝到apache-tomcat-10.0.8/webapps/
目录,之后tomcat会自动识别.war
文件,并将其解压到apache-tomcat-10.0.8/webapps/
目录,文件夹名称为apache-tomcat-10.0.8/webapps/source
再次打开浏览器,输入网址http://10.183.154.165:8080/source,会发现显示一堆错误,原因是我们还没建立索引
便捷apache-tomcat-10.0.8/webapps/source/WEB-INF/web.xml,主要配置opengrok的配置文件路径,示例如下
<context-param> <description>Full path to the configuration file where OpenGrok can read its configuration</description> <param-name>CONFIGURATION</param-name> <param-value>/usr/local/opengrok/etc/configuration.xml</param-value> </context-param
将工程源码准备好,通过在opengrok/src
目录下建立软链接的方式加入代码
ln -s /cloud/workspace/ivi ivi
此方式可以加入多个工程,进而形成多工程检索
生成索引
java \ -Djava.util.logging.config.file=/opt/opengrok/etc/logging.properties \ -jar /opt/opengrok/dist/lib/opengrok.jar \ -c /usr/local/bin/ctags \ -s /opt/opengrok/src -d /opt/opengrok/data -H -P -S -G \ -W /opt/opengrok/etc/configuration.xml -U http://localhost:8080/source
索引建立的时间比较长,中间的warning可以先不管,索引建立完成后再次打开url即可使用opengrok查找。
文件路径opengrok/dist/tools/opengrok-tools.tar.gz
文件夹下有个README.txt
,是安装引导。
一定要设置好计算云的代理,要不然手动安装python包会累死,手动安装了10几个包后,找到了设置办法,pip的设置如下:
# cat .pip/pip.conf [global] trusted-host=mirrors.tools.huawei.com index-url=http://mirrors.tools.huawei.com/pypi/simple/
之后直接运行下面的命令就OK了
python3 -m pip install opengrok-tools.tar.gz
通过命令可获取到帮助
java -jar /opt/opengrok/dist/lib/opengrok.jar --help
有用的配置
-P
表示为 source root 目录下的每个一级子目录生成一个工程。
-d
表示指定 data root
-W
表示指定将配置写到该文件
通过-P
选项和src目录下多个链接可以实现
可以修改apache-tomcat-10.0.8/webapps/source/WEB-INF/web.xml
文件指定编码格式