Quan Zhuo's Blog

OpenGrok 源码搜索环境搭建

2016-08-08

OpenGrok 是一个极速的源代码搜索与交叉引用引擎。使用它你可以快速搜索,定位,交叉引用源代码。它 可以识别各种各样的编程语言以及各种各样的版本控制系统。安卓 6.0 的源代码仓库异常庞大,仓库有 16G, 检出最新版本源码之后有 35G,使用OpenGrok可以大大加快源代码的搜索与定位,提高生产力。OpenGrok 使用 Java 编写。这是它的官方站点

前提条件

搭建步骤

  1. AOSP项目源码的获取。

    可以访问AOSP项目主页的直接按照上面的介绍即可获取 Android 的源码。不能访问的可以通过几个镜像站点获取:清华大学TUNA镜像站中国科学技术大学镜像站

  2. 安装 ctags

     sudo apt install ctags
    
  3. 安装 jdk,tomcat, opengrok

    假设 tomacat 的安装路径为: ~/opt/apache-tomcat-8.0.32

    opengrok 的安装路径为:~/opt/opengrok-0.12.1.5/

  4. 部署OpenGrok webapp

    将文件 ~/opt/opengrok-0.12.1.5/lib/source.war 复制到 ~/opt/apache-tomcat-8.0.32/webapps/ 目录下。并启动 tomacat,tomcat 会自动部署 opengrok。

     $ cp ~/opt/opengrok-0.12.1.5/lib/source.war ~/opt/apache-tomcat-8.0.32/webapps/
     $ cd ~/opt/apache-tomcat-8.0.32/bin
     $ ./startup.sh
    
  5. 配置 opengrok webapp

    打开文件 ~/opt/apache-tomcat-8.0.32/webapps/source/WEB-INF/web.xml,在第一个 context-param 元素中更改 param-value 为 opengrok 的配置文件所在地: ~/opt/opengrok-0.12.1.5/etc/configuration.xml

  6. 导出一些环境变量

     $ export OPENGROK_INSTANCE_BASE=~/opt/opengrok-0.12.1.5
     $ export OPENGROK_GENERATE_HISTORY=off
     $ export OPENGROK_SCAN_REPOS=false
     $ export OPENGROK_VERBOSE=true
     $ export OPENGROK_PROGRESS=true
    

    上面的五个环境变量中,OPENGROK_INSTANCE_BASE 用于指定 opengrok 的安装路径; OPENGROK_GENERATE_HISTORY 和 OPENGROK_SCAN_REPOS 用于禁止历史索引和仓库扫描,加快 索引速度。仓库的提交历史完全可以在命令行中查看。如果不禁用历史索引的话,对于大型仓库,索引 的速度是非常慢的; OPENGROK_VERBOSE 使索引的过程中有详细的输出,OPENGROK_PROGRESS 可以使输出中显示进度

  7. 指定要索引的源码路径

     $ cd ~/opt/opengrok-0.12.1.5
     $ mkdir src; cd src
     $ ln -s ~/source/aosp AOSP
    

    ~/source/aosp 是你的安卓源代码所在的路径, 你应该改成你自己的路径。如果想要 opengrok 索引其他的源码仓库,再在 src 目录下另外建立软链接即可,每一个软链接都是 opengrok 中的一个 项目。

  8. 开始索引

     $ cd ~/opt/opengrok-0.12.1.5/bin
     $ ./OpenGrok update
    

    开始索引,大约需要一个小时,具体视你的机器的速度而定。当在 src 目录下面添加新的软链接后, 只需要再次执行 ./OpenGrok update 就可以添加新的项目。

  9. 索引完成后访问 localhost:8080/source 即可看到 AOSP 项目,可以在搜索框进行搜索了。

参考


上一篇 AOSP 构建系统

下一篇 Markdown 语法

评论