静的解析のために LaraDock の SonarQube を Windows 10 + VirtualBox + Docker の環境で動かしてみたメモ
概要
SonarQubeというもので静的解析なるものが出来ると聞いて、前回のソースに試してみたメモ。
エラー修正の方向を間違えて迷走したが、最後には問題なく試すことができた。
環境
- Windows 10 Home
- Vagrant 2.2.6
- virtualbox 6.0.14
- Ubuntu 18.04 LTS (Bionic Beaver)
- Docker version 19.03.2, build 6a30dfc
- docker-compose version 1.24.1, build 4667896b
- Laradoc
- SonarQube Community EditionVersion 7.9.1 (build 27448)
設定
- コマンドは
vagrant ssh
でvirtualboxのubuntuにログインしている状態のもの。
必要な Dockerfile
LaraDockの中にはたくさんのDockerfileが入っているが、これに必要なのは以下の2つ。
- postgres
- sonarqube
.envファイルの修正
### SONARQUBE ################################################
## docker-compose up -d sonarqube
## (If you encounter a database error)
## docker-compose exec --user=root postgres
## source docker-entrypoint-initdb.d/init_sonarqube_db.sh
## (If you encounter logs error)
## docker-compose run --user=root --rm sonarqube chown sonarqube:sonarqube /opt/sonarqube/logs
-SONARQUBE_HOSTNAME=sonar.example.com
+SONARQUBE_HOSTNAME=127.0.0.1
SONARQUBE_PORT=9000
SONARQUBE_POSTGRES_INIT=true
SONARQUBE_POSTGRES_HOST=postgres
SONARQUBE_POSTGRES_DB=sonar
SONARQUBE_POSTGRES_USER=sonar
SONARQUBE_POSTGRES_PASSWORD=sonarPass
ファイルのパーミッションの設定
~/.laradock/data
は.envファイルのDATA_PATH_HOST=./.laradock/data
を参照しているので、
変更している場合はそれに合わせること。
sudo mkdir -p ~/.laradock/data/sonarqube/logs
sudo chmod -R 777 ~/.laradock/data/sonarqube
上記を行わないと、以下のエラーが出て止まってしまう。
2019-10-19 01:53:08,586 main ERROR Unable to create file /opt/sonarqube/logs/es.log java.io.IOException: Permission denied
## (If you encounter logs error) docker-compose run --user=root --rm sonarqube chown sonarqube:sonarqube /opt/sonarqube/logs
を試してみたがうまくいかず、調査に時間がかかってしまった。
仮想メモリの確認
- sonarqube は内部で ElasticSearch を使用しているため、メモリを大量に使う。
- 以下のコマンドで確認して、デフォルトの65530ならば増やす必要がある。
sysctl vm.max_map_count
仮想メモリを増やす
sudo sysctl -w vm.max_map_count=262144
動作確認
docker-compose up -d sonarqube
virtualboxのIPをここでは192.168.74.60とすると、
http://192.168.74.60:9000/ にアクセスすると、SonarQubeの画面を確認することができる。
ログイン
PHPプラグインの導入
プラグインを入れずに進めると以下のようなエラーとなってしまう。
ERROR: Error during SonarQube Scanner execution
ERROR: No quality profiles have been found, you probably don't have any language plugin installed.
ERROR:
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
Administration > MarketPlace でプラグイン導入画面へ移動。
プロジェクトの作成
Adminstration > Projects >Management の順で選択
Create Project を選択
Name とKeyを入力してCreate
Provide TokenにKeyを入力してGenerate。
このTokenはメモ帳などに保存しておくといい。
tokenを確認したら、 Continue。
PHPを解析したいので、Other
SonarQubeクライアントはUbuntuにインストールする予定なので、Linuxを選択。
クライアントツールの設定
# インストール場所の設定
mkdir -p /home/vagrant/sonarqube
# 移動
cd /home/vagrant/sonarqube
# クライアントの入手
sudo wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip
# 解凍ツール導入
sudo apt install -y unzip
# 解凍
sudo unzip sonar-scanner-cli-4.2.0.1873-linux.zip
# 解凍したパスを設定して、フルパスをいれなくても sonar-scanner コマンドが使えるようにする
export PATH="$PATH:/home/vagrant/sonarqube/sonar-scanner-4.2.0.1873-linux/bin"
# ソースコードのあるディレクトリに移動
cd /vagrant/project/whitemap/laravel_docker/whitemap/app
# scan開始
sonar-scanner -Dsonar.projectKey=Larvel -Dsonar.sources=. -Dsonar.host.url=http://192.168.74.60:9000 -Dsonar.login=b00689ae6518e3341dc09f529cc66661e3460d20
確認
sonar-scanner
に成功すると以下のようなメッセージが表示される。
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 8.460s
INFO: Final Memory: 6M/24M
INFO: ------------------------------------------------------------------------
ProjectsでWebから確認できる。
バグが1つあった。。
参考
Laradock 3
issue
仮想メモリ - Elasticsearch 導入前に気を付けておきたいこと!
Docker for Windows で postgres コンテナの Volume マウントを安全にする]
SonarQube で PHP のコードを静的解析する
Get Started in Two Minutes Guide
Jenkins + SonarQube で PHP コードメトリクス計測!
Ubuntu の PATH の設定方法 j
docker volume mount 時の user owner 問題
SonarQubeでソースコードの静的解析とレビューを自動化してみる(前編)
How To Ensure Code Quality with SonarQube on Ubuntu 18.04
【PHP】 PHPでの静的解析 SonarQubeを使ってみた
Author And Source
この問題について(静的解析のために LaraDock の SonarQube を Windows 10 + VirtualBox + Docker の環境で動かしてみたメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/hibohiboo/items/895668209f334f77a9f7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .