HighSierra에 OpenGrok 환경을 만들어 보았습니다 (2018/11/4)

5417 단어 MacOSXOpenGrokTomcat

소개...



최근 규모가 큰 소스 코드 읽는 것이 늘어나기 때문에, 자택의 Macbook Pro에 OpenGrok를 넣어 보았다고 하는 기사입니다.
회사에서도 굿즈 사용하고있어 코드 리딩이 매우 편해집니다.
여러분, 꼭 사용해 보면 어떻습니까?



개발 환경



MacOS High Sierra 10.13.2

OpenGrok 1.1-rc70

Homebrew

파이썬 3.6.0

JDK 11

Tomcat 8(최신판에서도 문제 없다고 생각하지만, 여러 사정에 8을 사용)

Ctags

좋아하는 브라우저 (나는 Chrome 사용)

작업 디렉토리



이번 작업을 수행하는 디렉토리는 다음과 같습니다.
WORK_DIR=~/Documents/Qiita/OpenGrok

사전 준비



환경 구축



필요한 물건을 설치합니다. (Homebrew는 설치가 완료되었다고 가정합니다.)
# Tomcatのインストール
$brew install tomcat@8

# Ctagsのインストール
$brew install --HEAD universal-ctags/universal-ctags/universal-ctags

OpenGrok 준비



htps : // 기주 b. 코 m / 오라 c ぇ / 오 펜 g로 k / 레 ぇ 아세 s
위의 URL에서 이번에는 1.1-rc70 바이너리 터볼 (opengrok-1.1-rc70.tar.gz)을 가져옵니다.
※소스 코드가 아니므로 주의
검색된 opengrok-1.1-rc70.tar.gz를 작업 디렉토리에 확장합니다.
# ダウンロード先に移動
$cd ${opengrok-1.1-rc70.tar.gzのダウンロードされたディレクトリ}

# WORK_DIRに展開
$tar xfvz opengrok-1.1-rc70.tar.gz -C $WORK_DIR

OpenGrok 설정



OpenGrok-Tool 빌드



OpenGrok은 처리를 위해 다양한 명령을 제공합니다.
이번에는 해당 명령의 Python 래퍼를 사용합니다.
구체적인 절차는 OpenGrok에서 제공하는 문서를 참조하는 것이 좋습니다.
여기서는 최소한의 준비를 하지 않습니다.
# 上で展開したOpenGrokのディレクトリに入る
$cd $WORK_DIR opengrok-1.1-rc70

# toolsの中に入り,opengrok-tools.tar.gzを展開し,その中に入る
$tar xfvz opengrok-tools.tar.gz
$cd opengrok-tools-1.1rc70

# ここからPythonの処理に入るので,仮想環境を準備
$python3 -m venv env
$. env/bin/activate

# ビルドに必要なものをインストールする.
$python -m pip install -r opengrok_tools.egg-info/requires.txt

# ビルドとインストール
$python setup.py develop
$export PYTHONPATH=`pwd`/src/main/python:$PYTHONPATH
$python setup.py install

# インストールされたか確認
$opengrok-groups
usage: opengrok-groups [-h] [-D] [-j JAVA] [-J JAVA_OPTS] [-e ENVIRONMENT]
                       (-a JAR | -c CLASSPATH)
                       options [options ...]
opengrok-groups: error: the following arguments are required: options
$opengrok-sync                                                                                                                      ✘ 2
usage: opengrok-sync [-h] [-w WORKERS]
                     [-d DIRECTORY | -P [PROJECTS [PROJECTS ...]]] [-I] [-D]
                     [-i [IGNORE_ERRORS [IGNORE_ERRORS ...]]] -c CONFIG
                     [-U URI]
opengrok-sync: error: the following arguments are required: -c/--config


이제 OpenGrok 도구를 설치할 수있었습니다.

배포



빌드가 끝났으므로 Tomcat에 배포합니다.
tomcat의 버전에 따라 파일 경로가 변경되므로주의하십시오. (아래는 내 환경의 경우입니다)
# Tomcatのwebappに.warファイルをデプロイする.
$opengrok-deploy $WORK_DIR/opengrok-tools-1.1rc70/lib/source.war /usr/local/Cellar/tomcat@8/8.5.34/libexec/webapps


코드 판독할 소스 코드 준비



OpenGrok에서 보는 소스 코드를 준비합니다.
적절한 소스 코드를 이번에는 준비합니다.
# 適当なソースコードを準備
$ll -R  NMF_for_cpp-master
total 80
-rwxr-xr-x@ 1 t_sumida  staff   3.8K  3  2  2018 Array2D.hpp
-rwxr-xr-x@ 1 t_sumida  staff   214B  3  2  2018 CMakeLists.txt
-rwxr-xr-x@ 1 t_sumida  staff   6.9K  3  2  2018 NMF.hpp
-rwxr-xr-x@ 1 t_sumida  staff   904B  3  2  2018 README.md
-rwxr-xr-x@ 1 t_sumida  staff    12K  3  2  2018 Separator.h
-rwxr-xr-x@ 1 t_sumida  staff   1.1K  3  2  2018 main.cpp

# OpenGrokで使うディレクトリを作成する.
$sudo mkdir /var/opengrok/src
$sudo mkdir /var/opengrok/data
$sudo mkdir /var/opengrok/etc


인덱싱



마지막으로 인덱싱을 수행하고 Tomcat을 시작합니다.
# ソースコードを/var/opengrok/srcにコピーする
$cp -r NMF_for_cpp-master /var/opengrok/src

# インデキシングを実行(規模によっては時間がかかる)
sudo opengrok-indexer  -a $WORK_DIR/opengrok-1.1-rc70/lib/opengrok.jar -- \
    -s /var/opengrok/src -d /var/opengrok/data -H -P -S -G \
-W /var/opengrok/etc/configuration.xml -U http://localhost:8080

# Tomcatを起動
$catalina start
$catalina run

사용해보기



Tomcat이 시작된 후,
http://localhost:8080/source/
브라우저에서 열면 아래와 같은 화면입니다.


사용법에 관해서는 치트 시트 등이 그 변으로 굴러 있으므로 참조하십시오.
"이 함수가 어디에서 정의되고 어디에서 사용되고 있습니까?"
"이 정의를 색칠하고 싶다!"
등 다양한 일을 할 수 있어요.




운영



앞으로 다른 곳에서보고 싶은 소스 코드가 있다면 매번 인덱싱을 수행하십시오.
C, C++, Java, Python을 지원하므로 여러 가지 시도해보십시오.
※인덱싱시의 커맨드를 조금 바꿀 필요가 있다고 생각합니다만・・・

마지막으로...



회사에서 사용해도 편리하다고 생각했기 때문에, 자택의 Mac에도 OpenGrok를 넣어 보았습니다.
연구실의 낡은 소스 코드라든지, 프로젝트 단위로 등록하면 여러가지 편리할지도 모릅니다.

좋은 웹페이지 즐겨찾기