#author("2023-04-10T21:02:29+00:00","default:wikiadmin","wikiadmin")
#author("2023-04-11T06:13:02+00:00","default:wikiadmin","wikiadmin")
-コードチェックツール。

#contents

*ライセンス [#wa446329]

無料なのはCommunityでそれ以外のバージョンはServerIDに基づいてライセンスが発行される。ServerIDはJDBC文字列で生成しているらしい。

*API DOC [#w3cba359]

https://next.sonarqube.com/sonarqube/web_api

|再起動|curl -u admin:admin123 -XPOST http://localhost:9000/api/system/restart|
|メトリクス一覧|curl -u admin:admin123 -XPOST http://localhost:9000/api/metrics/search|
|プロジェクトごとにメトリクス取得| curl -u admin:admin123 -XGET "http://localhost:9000/api/measures/component?component=com.rutake%3Abatch&metricKeys=ncloc"|


*バージョニング [#h20258d1]

メジャー.マイナー.パッチ

LTSだとマイナーバージョンは上がらない。LTSのみパッチリリースがある。
バージョンアップには必ずLTSを挟む必要がある。

*インストール [#wed642bd]

サーバーとクライアントがある。V5.1ではJDK7以上が必要。内部でElasticSearchを利用しており、メモリをかなり利用するので注意。またバージョンアップが早くV6だとMySQL5.6以上を必要とするなどハードウェア&ミドルウェアの条件が厳しい。2019年ならdockerで試すのが楽。

**Dockerバージョン [#cb5adbe8]

 docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest

 http://localhost:9000/ のadmin/adminで入れる

 mvn compile sonar:sonar -Dsonar.login=admin -Dsonar.password=admin -Dsonar.svn.username=xxx -Dsonar.svn.password.secured=xxx

-ESが起動しないことがある  vm.max_map_count [65530] is too low
-vm.max_map_count = 262144を/etc/sysctl.confに追加
-sudo sysctl --system

 echo "vm.max_map_count = 262144" >> /etc/sysctl.conf
 sudo sysctl --system

***9.0だとエラー [#dbf47c1a]

 could not find java in ES_JAVA_HOME at /usr/lib/jvm/java-11-openjdk/bin/java

 privileged: trueを加えることで回避できたが、特権付与になるので他の方法を模索中

dockerのバージョンを最新(公式リポジトリを利用し23.0.3)上げることで回避できた

***バージョンアップ時の注意 [#y5999fa6]

-データのマイグレーションは容量に比例するのでなるべくブランチを削除しておく
-プラグインのディレクトリはクリアしておかないとそのまま引き継がれる。互換性のないプラグインは削除しておくべき。

-7.9でデフォルトで入っているプラグインを受け継いだまま8.9を立ち上げるとイカのとおり。全部消しておくべし!

 Web server startup failed: The following plugins are no longer compatible with this version of SonarQube: 'authgithub', 'authsaml', 'ldap', 'scmgit', 'scmsvn'

***DB_importの罠 [#yb5ccf95]

-docker-compose stop ではなくdocker-compose downする。
-DBだけupする。流し込む
-その後sonarを立ち上げる。
-docker stop でやると流し込んでもProjectは復元できない


***PHPをスキャン [#n711c215]

+プロジェクト作成
+Sonar-scannerをダウンロードしてパスを通す
+コマンドが出るのでそのとおりに実施

 sonar-scanner   -Dsonar.projectKey=tftool   -Dsonar.sources=.   -Dsonar.host.url=http://localhost:9000   -Dsonar.login=TOKEN -Dsonar.svn.username=xxx -Dsonar.svn.password.secured=xxx

sonar-scannerはmavenやgradlewが使えない時に使うらしい。新しいバージョンのsonar-scannerは下位互換があるので、気軽にバージョンアップしてOK

-設定ファイルはsonar-project.propertiesをroot直下に配置
-実行時オプションを与えた場合はそちらが優先される

上記と同じ値を設定したが、sonar.usernameにtokenを指定してログインで弾かれるので謎。sonar.passwordを追加してしのいだ

 sonar.projectKey=tftool
 sonar.projectName=php
 sonar.sources=.
 sonar.host.url=http://localhost:9000
 #sonar.login=055fec9a0efce1dc33a10ac3863584417e69eb04
 sonar.login=xxx
 sonar.password=xxx
 sonar.svn.username=xxx
 sonar.svn.password.secured=xxx
 # javaの場合に必要
 sonar.java.binaries=target


projectKeyがユニークなIDで、
ProjectNameは表示上のラベル(表によくでてくるのはこちらで、勘違いしないようにProjectNameは指定しないほうが良いかも)


**SonarQube Server インストールと起動 [#x7ddbdee]

+zipダウンロード、解凍
+batまたはshをたたく
+http://localhost:9000/にアクセス

**SonarQube YUMインストール [#s263275e]

 sudo wget -O /etc/yum.repos.d/sonar.repo http://downloads.sourceforge.net/project/sonar-pkg/rpm/sonar.repo
 sudo yum -y install sonar
**Apacheとの連携 [#s5a1a1e2]

-sonar.confとして/etc/httpd/conf.dあたりに配置

 ProxyPass         /sonar  http://localhost:9000/sonar nocanon
 ProxyPassReverse  /sonar  http://localhost:9000/sonar
 ProxyRequests     Off
 AllowEncodedSlashes NoDecode

-sonar.properties更新

コンテキストパス/sonarを定義する。

 sonar.web.context=/sonar

**初期設定管理者アカウント [#h3c6d655]

admin/admin

*設定 [#d2885102]

-SONAR_HOME/conf/sonar.propertiesファイルで設定を行う。MySQLに接続するなら以下の3行だけでよい。sonar.web.contextは/sonarでアクセスするためのもの。

 sonar.jdbc.username=sonar
 sonar.jdbc.password=sonar
 sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
 sonar.web.context=/sonar

事前にsonarデータベースとsonarユーザーを作成しておくこと!

-sonar.web.javaOpts

メモリの設定はこちらで!

**プラグイン [#h4ea5c0a]

プラグインはDB移行ではついてこないので、手動で入れる

|プラグイン名|備考|
|checkstyle||
|Cobertura|A code coverage utility for Java|

***Dockerの場合 [#feeef962]

 test_docker_sonarqube_extensions/_data/plugins以下にjarファイルを配置して再起動。



*yumインストール [#z89c85bd]

yumパッケージもある
 sudo wget -O /etc/yum.repos.d/sonar.repo http://downloads.sourceforge.net/project/sonar-pkg/rpm/sonar.repo
 sudo yum install sonar

*コード解析の実行 [#p0ecd99e]

**maven [#j75543d5]

maven-sonar pluginを利用すれば実行可能。デフォルトでlocalhost:9000に行く。docker sonarなら以下だけでOK。設定が毎回引数で与えるのが面倒ならばsettings.xmlへ記載

 mvn compile sonar:sonar -Dsonar.java.binaries=target/classes

*Jenkinsとの連携 [#iaa6f9b0]

*記事 [#y4258d2d]

http://yoshio.velvet.jp/blog/archives/4076

*移行 [#ke9d4a8f]

+DB移行(mysqldump)
+http://SONARSERVER:9000/setupにアクセス(Database is up-to-date)が出る

*カスタマイズ [#af8e6d77]

ruby on railsをjavaで動かしている模様。viewも.erbファイルとなる。

**view置き場 [#l79facab]

SONARQUBE_DIR/web/WEB-INF/app/views/

**controller置き場 [#p7ca0655]

SONARQUBE_DIR/web/WEB-INF/app/controllers/
http://docs.sonarqube.org/display/DEV/Extend+Web+Application

*9.9 Docker起動できない問題 [#u3e1ac38]

16Gだと起動できたが、

 [0.294s][warning][os,thread] Failed to start thread "GC Thread#0" - pthread_create failed (EPERM) for attributes: stacksize: 1024k, guardsize: 4k, detached.
 #
 # There is insufficient memory for the Java Runtime Environment to continue.
 # Cannot create worker GC thread. Out of system resources.
 # An error report file with more information is saved as:
 # /tmp/hs_err_pid1.log

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS