#author("2021-11-11T13:36:43+00:00","default:wikiadmin","wikiadmin")
#author("2021-11-15T07:19:57+00:00","default:wikiadmin","wikiadmin")
-コードチェックツール。

#contents

*ライセンス [#wa446329]

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


*インストール [#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

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

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

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

***バージョンアップ時の注意 [#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が使えない時に使うらしい。


**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


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS