文章参考了别人的两篇文章
搭建大型源码阅读环境——使用 OpenGrok
win7本地电脑上搭建OpenGrok

RTFSC (Read the Fucking Source Code )是程序员打怪升级路上避不开的功课,那营造一个舒适的环境来提升上课的体验就很有必要了。

比如阅读 AOSP 这种大型源码,用什么姿势来阅读才能丝般顺滑,让 F**king Source Code 也变得不那么可恶呢?

OpenGrok 特点

  1. 快速搜索代码的引擎
    • 搜索全文、定义、符号、文件路径和修改历史
    • 搜索任意指定子目录(分层搜索)
    • 增量更新索引文件
    • 支持类似 Google 的查询语法,比如 path:Makefile defs:target
    • 搜索日期范围内修改的文件
    • 支持使用通配符搜索,如 * 表示多个字符,? 表示单个字符
    • 在搜索结果中展示匹配行
  2. 一个 Web 只读版的版本历史查看界面
    • 文件的修改日志
    • 文件在两个版本间的 diff
    • 文件夹的历史记录
  3. 带语法高亮的交叉引用显示,可以使用 CSS 自定义样式
  4. 可以开发插件支持新的语言和版本控制系统

安装OpenGrok

OpenGrok概览

搜索功能和源码树:
opengrok搜索功能和源码树

代码导航和版本历史记录:
opengrok代码导航和版本历史记录

OpenGrok安装

这里OpenGrok的安装是在windows7下安装的,如果想要在linux下安装可以参考搭建大型源码阅读环境——使用 OpenGrok这篇文章。
1.安装JDK1.8。安装完成后配置环境变量。直到打开命令执行jdk --version出现如下结果所示:
jdk_cmd
2.安装tomcat。tomcat下载地址。直接解压,到bin目录下,用startup.bat脚本启动tomcat。如果访问http://localhost:8080能够看到如下结果,就表示tomcat安装成功。
tomcat8
这里除了安装tomcat之外,其实也不能称之为安装。因为考虑到后面需要让OpenGrok一直在后台运行,我就把tomcat注册成了一个windows的服务。具体方法为

1
2
3
4
// windows7下一定要以管理员身份打开cmd命令行
// cd到tomcat8根目录下
cd ./bin/
service.bat install

enter description here
安装成功后可以通过 计算器->管理->服务 可以看到Apache Tomcat 8.5这个service.如下所示:
enter description here
后面启动tomcat可以通过windows服务自行开启或者通过命令行开关.

1
2
net tomcat8 start
net tomcat8 stop

如下:
net_start_stop_tomcat

3.安装ctags。我直接用的官方推荐的Universal CtagsUniversal Ctags下载地址。按照系统版本下载好ctags之后,需要把ctags配置到系统环境变量中。配置完成后,执行ctags --version出现如下所示,就表示安装成功了.
enter description here
4.配置下文件夹
其实到第三步的时候,该安装的软件都安装差不多了。这一步是为后面下载源码以及生成源码文件的索引做准备的.文件夹结构如下所示
opengrok
|——- data 生成索引相关数据文件夹。
|——- source 源码文件夹,我们把想看的源码就放在这里。
文件夹搞定之后就是下载源码,执行opengrok的jar包生成相关的索引。这里以jquery为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 下载jquery最新源码
git clone https://github.com/jquery/jquery.git

// 执行opengrok.jar生成相关索引
// java -jar /path/to/opengrok.jar -P -S -v -s /path/to/source/root -d /path/to/data/root -W /path/to/configuration.xml
// 我这里的实际路径是c盘
java -jar C:/opengrok-0.13-rc5/lib/opengrok.jar -P -S -v -s C:/opengrok/source -d C:/opengrok/data -W C:/opengrok/data/configuration.xml

// -P 表示为 source root 目录下的每个一级子目录生成一个工程。
// -S 表示搜索并添加 "external" source repositories。
// -v 表示打印操作的进度信息。
// -s 表示指定 source root。
// -d 表示指定 data root。
// -W 表示指定将配置写到该文件。这个configuration.xml配置文件等会启动opengrok会用到

5.把opengrok中的source.war扔到tomcat中,启动opengrok的相关服务。直接把opengrok的lib目录下的source.war文件拷贝到tomcat的webapps目录下即可。这里大家还记得我们在第四步中生成的configuration.xml文件么。这里需要修改source.war中的web.xml文件,使得source.war启动的时候能够正确的找到我们上面生成的configuration.xml文件。这里我用的好压这款软件,右击source.war->用好压打开->在WEB-INF目录下有一个web.xml->然后右击选中用内部查看器打开。这个时候编辑红框区域

enter description here

修改之后如图所示:
enter description here

opengrok初体验

一切准备就绪。下面就是启动tomcat,之前我们已经把tomcat安装成windows的一个系统服务。这里我们直接在系统的服务中打开tomcat。访问http://localhost:8080/source/就可以看到opengrok已经启动。
opengrok启动画面如下,一个web的源码阅读工具
enter description here

随便撸一发jquery源码,有图:
enter description here