OpenGrok (Cross Reference Engine)

Table of Contents

1. OpenGrok(查看源码交叉引用)

OpenGrok is a source code search and cross reference engine. It helps programmers to search, cross-reference and navigate source code trees.

It can understand various program file formats and version control histories like Monotone, SCCS, RCS, CVS, Subversion, Mercurial, Git, Clearcase, Perforce and Bazaar.

OpenGrok is being developed mainly by Oracle Corporation (former Sun Microsystems) engineers with help from its community. OpenGrok is released under the terms of the Common Development and Distribution License (CDDL).

参考:http://opengrok.github.io/OpenGrok/

1.1. 安装配置 OpenGrok(0.12.1)

OpenGrok 0.12.1 依赖于:

  1. JDK 1.7 or higher
  2. A servlet container like GlassFish or Tomcat (6.x, 7.x or later) also running with Java at least 1.7
  3. universal-ctags(sudo snap install universal-ctags,建议不要使用 Exuberant Ctags,因为它已经不再维护了)

下面的描述假定 Java 1.7 和 Universal Ctags 已经安装好。

第一步,安装 Tomcat
下载最新的 Tomcat, apache-tomcat-8.0.9.tar.gz

$ tar -xvzf apache-tomcat-8.0.9.tar.gz
$ cd apache-tomcat-8.0.9/bin
$ ./startup.sh

浏览器能正常访问下面网站,说明安装启动成功。
http://localhost:8080/

第二步,下载配置 OpenGrok
OpenGrok 下载地址:http://opengrok.github.io/OpenGrok/ 在该网址中可以下载 OpenGrok 的编译文件,也可以下载源文件。在此我们直接下载编译文件(对 OpenGrok 感兴趣的同学可以下载源码查看究竟),下载后通过以下命令进行解压:

$ tar xvzf opengrok-0.12.1.tar.gz

解压完成后进入到解压目录,将./lib 目录下的 source.war 包拷贝到./apache-tomcat-8.0.9/webapps 目录下,在浏览器中输入http://localhost:8080/source/ (备注:war 包会自动解压)看到 OpenGrok 界面证明 OpenGrok 运行成功。

第三步,为项目源码生成索引
进入到./opengrok-0.12.1/bin 目录,执行以下命令建立源码索引:
如源码在/home/usr1/proj/emacs-22.1 中,我们想把索引和 opengrok 的其它数据文件放在/home/usr1/opengrok/emacs-22.1 中:
$ OPENGROK_INSTANCE_BASE=/home/usr1/opengrok/emacs-22.1 ./OpenGrok index /home/usr1/proj/emacs-22.1
如果想在命令执行时看到详细的信息,可能加上 OPENGROK_VERBOSE=true,即:

$ OPENGROK_VERBOSE=true OPENGROK_INSTANCE_BASE=/home/usr1/opengrok/emacs-22.1 ./OpenGrok index /home/usr1/proj/emacs-22.1

成功建立好索引后,会在生成一个配置文件:OPENGROK_INSTANCE_BASE/etc/configuration.xml

第四步,更新项目的配置文件 configuration.xml 到 Tomcat 的 web app.
进入到 Tomcat 目录,编辑下面文件 webapps/source/WEB-INF/web.xml,修改 CONFIGURATION 对应的 param-value
即把下面内容

<web-app>
  <display-name>OpenGrok</display-name>
  <description>A wicked fast source browser</description>
  <context-param>
    <param-name>CONFIGURATION</param-name>
    <param-value>/var/opengrok/etc/configuration.xml</param-value>
    <description>Full path to the configuration file where OpenGrok can read it's configuration</description>
  </context-param>

修改为:

<web-app>
  <display-name>OpenGrok</display-name>
  <description>A wicked fast source browser</description>
  <context-param>
    <param-name>CONFIGURATION</param-name>
    <param-value>/home/usr1/opengrok/emacs-22.1/etc/configuration.xml</param-value>
    <description>Full path to the configuration file where OpenGrok can read it's configuration</description>
  </context-param>

注:在用 cvs 项目做测试时,发现生成索引时需要在线(会访问 cvs 服务器)。

参考:http://blog.csdn.net/weihan1314/article/details/8944291

1.2. 安装配置 OpenGrok(1.3.2)

推荐直接使用 docker 镜像。下面是一个 docker-compose.yml 实例:

version: "3"

# More info at https://github.com/oracle/opengrok/docker/
services:
  opengrok:
    container_name: opengrok
    image: opengrok/docker:latest
    ports:
      - "8080:8080/tcp"
    environment:
      REINDEX: '60'
    # Volumes store your data between container upgrades
    volumes:
       - '~/opengrok-src/:/opengrok/src/'  # source code
       - '~/opengrok-etc/:/opengrok/etc/'  # folder contains configuration.xml
       - '~/opengrok-data/:/opengrok/data/'  # index and other things for source code

把想要生成交叉索引的源码放入到目录“~/opengrok-src/”的子目录中,然后在 docker-compose.yml 所在目录中执行 docker-compose up 命令即可。

Author: cig01

Created: <2015-08-30 Sun>

Last updated: <2020-05-10 Sun>

Creator: Emacs 27.1 (Org mode 9.4)