OpenGrok とは?
OpenGrokとは、ブラウザを使用してソースコード閲覧・検索できるようにするWebサーバー側のツールです。
emacs【テキストエディタ】と grep【検索ツール】を組み合わせて解析してますよね。
OpenGrokを導入すると、関数定義やその呼出し箇所をブラウザ上で簡単に検索できるようになります。
必要なパッケージのインストール
必要なパッケージ
- Java JDK 1.8
- GlassFish または Tomcat8.x 以降
- Universal ctags (下記注意!)
注意
Universal ctags は、apt でインストールする標準の ctags とは異なります。
(標準だと正常に動きません)
Java JDK 1.8 のインストール
command
$ sudo apt install default-jdk
Tomcat のインストール
universe リポジトリを追加してインストールします。
command
$ sudo vi /etc/apt/sources.list
$ cat /etc/apt/sources.list
deb http://jp.archive.ubuntu.com/ubuntu bionic main
deb http://jp.archive.ubuntu.com/ubuntu bionic-security main
deb http://jp.archive.ubuntu.com/ubuntu bionic-updates main
deb http://jp.archive.ubuntu.com/ubuntu bionic universe
deb http://jp.archive.ubuntu.com/ubuntu bionic-security universe
deb http://jp.archive.ubuntu.com/ubuntu bionic-updates universe
$ sudo apt update
$ sudo apt install tomcat8 tomcat8-admin
$ sudo service tomcat8 start
動作確認
ブラウザで http://localhost:8080/ を表示して動作を確認する。
Tomcat のページが表示されれば成功です。
Universal Ctags のインストール
apt にリポジトリを追加して実行します。
command
$ sudo add-apt-repository ppa:hnakamur/universal-ctags
$ sudo apt install universal-ctags
$ sudo update-alternatives --config ctags
その他、小物のインストール
command
$ sudo apt install ant jflex
OpenGrok のインストール
簡単な流れ
- Github からダウンロードし、/usr/local に展開
- OpenGrokの最新版は、ココを確認
- WebApp から参照される Config ファイルの保存先とする /etc/opengrokを作成
- 検索対象のソースコードを配置する /var/opengrok/src を作成
- インデックスデータの格納先となる /var/opengrok/dataを作成
command
$ wget https://github.com/oracle/opengrok/releases/download/1.2.7/opengrok-1.2.7.tar.gz
$ tar xf opengrok-1.2.7.tar.gz
$ cd opengrok-1.2.7/lib
$ ln -snf /usr/share/java/jflex.jar jflex.jar
$ cd ../..
$ sudo cp -r opengrok-1.2.7 /usr/local/opengrok
$ sudo mkdir -p /etc/opengrok /var/opengrok/{src,data}
OpenGrok に同梱の Tool をインストール
Python pip のインストール
OpenGrok 同梱の Tool をインストールするために Python の pip をインストールします。
command
$ sudo apt install python3-pip
OpenGrok Tool のインストール
command
$ sudo python3 -m pip install /usr/local/opengrok/tools/opengrok-tools.tar.gz
デプロイして OpenGrok の動作確認
command
$ sudo opengrok-deploy -c /etc/opengrok/configuration.xml /usr/local/opengrok/lib/source.war /var/lib/tomcat8/webapps
動作確認
http://localhost:8080/source にアクセスし、下記のエラー画面が表示されることを確認する。
ソースコードの登録
簡単な流れ
- インストール時に作成した /var/opengrok/src 下にソースコードを登録
- /var/opengrok/src 直下のディレクトリ名がプロジェクト名
- /var/opengrok/data 下に解析した結果が格納される
- indexを付ける
command
$ opengrok-indexer -J=-Djava.util.logging.config.file=/usr/local/opengrok/doc/logging.properties
-J=-Xmx2048m
-a /usr/local/opengrok/lib/opengrok.jar --
-c /usr/bin/ctags
-s /var/opengrok/src -d /var/opengrok/data -H -P -S -G
-W /etc/opengrok/configuration.xml
-U http://localhost:8080/source
トラブルシューティング
「Failed to get xref file」というエラー
もし、xref の参照で「Failed to get xref file」というエラーが出た場合、index を付ける時に付与した「-H -S -G」を省くと上手くいく場合があります。
JavaVMでHeap Spaceに関するエラー
JavaVMでHeap Spaceに関するエラーが出た場合は、「-J=-Xmx2048m」のオプション(サイズは自身の環境に合わせる)をログプロパティファイルの後ろに付けると上手くいく場合があります。
一般公開されている OpenGrok 設置例
参考
- GitHub – How-to-setup OpenGrok
- GitHub – Python-scripts-transition-guide
- Redler – Opengrok 1.1-rc37 を Ubuntu 18.04.1 へインストール
- Qiita – OpenGrokの導入
- Corgi Lab. ~備忘録のための技術ブログ~