LoginSignup
0
0

More than 3 years have passed since last update.

静的解析のために LaraDock の SonarQube を Windows 10 + VirtualBox + Docker の環境で動かしてみたメモ

Last updated at Posted at 2019-10-19

概要

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ファイルの修正

laradock/.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の画面を確認することができる。

ログイン

ユーザ:admin,パスワード:admin でログイン
image.png

image.png

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 でプラグイン導入画面へ移動。

image.png

phpと入力してプラグインを絞り込んで、インストール
image.png

インストールできたら再起動する。
image.png

プロジェクトの作成

Adminstration > Projects >Management の順で選択

image.png

Create Project を選択

image.png

Name とKeyを入力してCreate

image.png

Provide TokenにKeyを入力してGenerate。

image.png

このTokenはメモ帳などに保存しておくといい。
tokenを確認したら、 Continue。

image.png

PHPを解析したいので、Other

image.png

SonarQubeクライアントはUbuntuにインストールする予定なので、Linuxを選択。

image.png

クライアントツールの設定

# インストール場所の設定
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から確認できる。

image.png

バグが1つあった。。

image.png
image.png
image.png

参考

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を使ってみた

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0