これは旧eviry tech blogから移行した記事です。
前回までのあらすじ
- 書籍の一文から拡げる技術陣マネジメント001 · eviry tech blog
- 負債とは一体なんなのかということを開発陣も明確にわかっていない
- そんな状態ではビジネスサイド(つまり非開発な人々)にわかってもらえるはずがない
- なので可視化できればお互い数値なりカラフルなグラフを見て意思決定について話し合えるのではないか
SonarQube のインストール
7.3
は2018年10月現在Community Editionの最新版です- LTS版がいいという方は
6.7.5
がいいと思います - Downloads | SonarQube
yum install java VER_SONARQUBE=7.3 INSTALLDIR=/usr/local/sonarqube wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${VER_SONARQUBE}.zip -O /usr/local/src/sonarqube-${VER_SONARQUBE}.zip unzip /usr/local/src/sonarqube-${VER_SONARQUBE}.zip -d /usr/local/ ln -s /usr/local/sonarqube-${VER_SONARQUBE} ${INSTALLDIR} MYSQL_USER=sonarqube MYSQL_PASSWORD=sonarqube MYSQL_DB=sonarqube WEB_IP=0.0.0.0 WEB_PORT=9000 cat > ${INSTALLDIR}/conf/sonar.properties <<EOF sonar.jdbc.username=${MYSQL_USER} sonar.jdbc.password=${MYSQL_PASSWORD} sonar.jdbc.url=jdbc:mysql://localhost:3306/${MYSQL_DB}?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance sonar.web.host=${WEB_IP} sonar.web.port=${WEB_PORT} sonar.web.context=/sonar sonar.web.javaOpts=-server EOF groupadd -g 9999 sonar useradd -u 9999 -o -g 9999 sonar chown sonar:sonar -R ${INSTALLDIR}/*
DB設定(MySQL)
# MySQL 5.7でもインストールしてくれ # 以下の値を必要に応じて変更しないと sonar-scanner がエラーで落ちる # max_allowed_packet = 16M # 以下は誰にでもわかるように書いただけ MYSQL_USER=sonarqube MYSQL_PASSWORD=sonarqube MYSQL_DB=sonarqube # echo " # CREATE DATABASE ${MYSQL_DB}; # CREATE USER '${MYSQL_USER}'@'localhost' IDENTIFIED BY '${MYSQL_PASSWORD}'; # CREATE USER '${MYSQL_USER}'@127.0.0.1 IDENTIFIED BY '${MYSQL_PASSWORD}'; # GRANT ALL ON ${MYSQL_DB}.* TO '${MYSQL_USER}'@localhost; # GRANT ALL ON ${MYSQL_DB}.* TO '${MYSQL_USER}'@127.0.0.1; " CREATE DATABASE sonarqube; CREATE USER 'sonarqube'@'localhost' IDENTIFIED BY 'sonarqube'; CREATE USER 'sonarqube'@127.0.0.1 IDENTIFIED BY 'sonarqube'; GRANT ALL ON sonarqube.* TO 'sonarqube'@localhost; GRANT ALL ON sonarqube.* TO 'sonarqube'@127.0.0.1;
ここまでくると以下で起動できるかと思います
systemctl start mysqld /usr/local/sonarqube/bin/linux-x86-64/sonar.sh start
- 起動失敗するパターンは以下がありました
- そもそも利用可能なメモリ量が足らない
- elasticsearch が起動する分メモリが必要になる
/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start & ; tail -f /usr/local/sonarqube/logs/*.log
で起動時エラー確認ができる
- そもそも利用可能なメモリ量が足らない
起動できると
- http://
sonar.web.host
:sonar.web.port
/ +sonar.web.context
でアクセスできます - 初期設定についてはここでは述べません
SonarQube 用コマンド sonar-scanner
のインストール
# Mac なら brew install sonar-scanner # その他の取得方法が良い人 [Analyzing with SonarQube Scanner](https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner)からダウンロードしましょう
- これ以降は当該コマンドをHomebrewで入れた体で説明します
- コマンド :
/usr/local/bin/sonar-scanner
- 設定ファイル :
/usr/local/etc/sonar-scanner.properties
- コマンド :
設定 /usr/local/etc/sonar-scanner.properties
はこのような感じにしています
sonar.host.url=http://sonarqube.example.com:9000/sonar sonar.sourceEncoding=UTF-8
リポジトリ用設定ファイル sonar-project.properties
の配置
sonar.projectKey
がSonarQube上での設定名です- プロジェクトのリポジトリルートが
./reponame/
ならば./reponame/sonar-project.properties
へ配置します
sonar.projectName=reponame sonar.projectKey=repokey sonar.projectVersion=1.0 sonar.language=php sonar.exclusions=.git, test/**, **/test/**, vendor/**, **/vendor/** sonar.sources=.
sonar-scanner
の実行
- なんやかんやあって初期設定でトークンが払い出されていると思います
- 払い出されていない場合、
設定
->セキュリティ
->ユーザ
でトークンを生成してください
cd ./reponame/ # sonar-scanner -Dsonar.login=${TOKEN} sonar-scanner -Dsonar.login=c0ffeebeafc0ffeebeafc0ffeebeafc0ffeebeaf
- sonar-scanner 失敗するパターンは以下がありました
- ここでいう
repokey
相当のプロジェクトが作成されていない- 本エントリでは当該手順を飛ばしていますので作成してください
- 最後の最後で HTTP Error 500などでてこける
- おそらくコード量(の解析データ量)に対して
max_allowed_packet
の設定値が小さすぎるので、許す範囲で設定し直してください
- おそらくコード量(の解析データ量)に対して
- ここでいう