[開発] SonarQube なる CodeChecker

tag: SonarQube Scanner SonarLint PostgreSQL IllegalStateException HeapDumpOutOfMemoryError

// ------------------------------------------------------------
■ quick reference: // 詳細は後述参照

step 0 (optional)
> install Sonar
> set a database for sonar
> start Sonar

step 1
create a folder to keep the target source
e.g. C:\tmp\Sonar\testTargetProject

step 2
create sonar-project.properties, save it under the same folder.
e.g. C:\tmp\Sonar\testTargetProject\sonar-project.properties

step 3
start Sonar, and start check via a CommandPrompt
cd C:\sonar\sonarqube\bin\windows-x86-64
StartSonar.bat
cd C:\_btkouei\20170626_泉岳寺のSonar\target
sonar-scanner.bat

step 4
check the result
http://localhost:9000/about

------------------------------------------------------------ //
 
SonarQubeとは
スイスのSonarSource社が主に開発を行っている
統合的なプログラム品質管理を行える統合品質管理ツール (無償)
https://www.sonarqube.org
 
■ できるとこと
ソースコードの静的解析チェック
プログラムの複雑度の測定
諸々解析結果はブラウザから閲覧
結果のエクセルなりにexportもできる
CI環境への組み込みも可
 
■ 対応言語
いろいろ
 
■ 使い方
 
SonarQube Server
解析結果を表示するサーバ
https://www.sonarqube.org から zip を DL
sonarqube-6.2.zip を展開して、Cドライブに移植
cd C:\sonar\sonarqube\bin\windows-x86-64
 
DB の設定
コマンドプロンプトを開き以下を実行してく
"C:/Program Files/PostgreSQL/9.4/bin/psql" postgres postgres
# postgresユーザのPWを入力
password
# sonarqubeユーザを新規作成
CREATE USER sonarqube WITH PASSWORD 'sonarqube';
ALTER ROLE sonarqube CREATEDB;
# 権限付与
CREATE DATABASE sonar WITH ENCODING 'UTF-8' OWNER=sonarqube;
grant all privileges on database sonar to sonarqube;
# 既存ユーザの確認
\du
\l
# RackInitializationException 回避の為のサーチパスの設定
ALTER USER sonarqube SET search_path to public;
# ログアウト
\q
 
諸項目の設定
C:\sonar\sonarqube\conf\sonar.properties
上記プロパティファイルの当該箇所を以下のように更新
# User credentials.
sonar.jdbc.username=sonarqube
sonar.jdbc.password=sonarqube
#----- PostgreSQL 8.x/9.x
sonar.jdbc.url=jdbc:postgresql://localhost/sonar
 
StartSonar.bat でSonarQubeサーバを起動
http://localhost:9000/ にアクセス
管理ユーザの場合は admin / admin がデフォルト Login ID と PW
 
cf.
InstallNTService.bat             サービスとしてインストール
StartNTService.bat サービスの開始
StopNTService.bat              サービスの停止
UninstallNTService.bat         サービスのアンインストール
 
// ------------------------------
[事象]
StartSonar.bat で HeapDumpOutOfMemoryError
C:\sonar\sonarqube\logs\es.log に詳細あり
詳細
2017.03.02 14:35:17 WARN  es[][o.s.p.ProcessEntryPoint] Fail to start es
org.elasticsearch.transport.BindTransportException: Failed to bind to [9001]
org.elasticsearch.transport.BindTransportException: Failed to bind to [9001]
              at org.elasticsearch.transport.netty.NettyTransport.bindToPort(NettyTransport.java:478)
Caused by: org.jboss.netty.channel.ChannelException: Failed to bind to: /127.0.0.1:9001
              at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:272)
Caused by: java.net.BindException: Address already in use: bind
              at sun.nio.ch.Net.bind0(Native Method)
 
[原因]
先に実行した奴のプロセスが残ってて、portを取り合ってるため。
ついでがあったのでPC再起動してやったら普通に軌道できた
------------------------------ //
 
 
SonarQube Scanner
ソース解析して、結果をSonarQubeサーバに送る子
他にmavenプラグインを使用する等、代替手段あり
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
から sonar-scanner-2.8.zip DL
展開して、、Cドライブに移植>C:\sonar\sonar-scanner
 
環境変数Pathに「C:\sonar\sonar-scanner\bin」を追加
コマンドプロンプトで以下を叩いてインストールされてることを確認
sonar-scanner.bat -h
諸々と情報が表示されればOK
 
諸項目の設定
分析したいプロジェクトのフォルダ配下に「sonar-project.properties」を新規に作成
各項目は以下を参照
https://docs.sonarqube.org/display/SONAR/Analysis+Parameters
記載内容例:
// --------------------
# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=My project
sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.
sonar.sources=.

# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
-------------------- //
 
作成した「sonar-project.properties」と同じ階層までコマンドプロンプトで cd していき
そこで「sonar-scanner.bat」を実行して分析開始。
※ sonar-runner.bat はかつて使われてた非推奨な輩
こんなんのが最後に表示される筈↓↓
INFO: More about the report processing at http://localhost:9000/api/ce/task?id=AVqOBVe9614YH3R8UGOd
INFO: Task total time: 13:47.217 s
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 13:48.934s
INFO: Final Memory: 57M/926M
INFO: ------------------------------------------------------------------------
 
http://localhost:9000/ に行き、admin / admin でログイン
対象のプロジェクトまで掘ってくと結果が見れる
 
 
SonarLint
http://www.sonarlint.org/
Eclipse上で静的チェックしてくれる子
結果はSonarQubeへ送付するも、localで確認するも可
条件:
Java 8, SonarQube 5.6+
 
org.sonarlint.eclipse.site-2.6.0.201702201416.zip をDLして展開
org.sonarlint.eclipse.site-2.6.0.201702201416 を、
C:\STS\sts-bundle\sts-3.8.2.RELEASE\plugins に配置
STS を再起動
してみたけど、「SonarQube server view」が無い、、
 
「Views Plugin - Plugins - SonarQube」が必要らしいというのはもはや昔の話で
コレ ↓↓ を入れろ、ってことぽい
https://www.sonarsource.com/why-us/products/plugins/governance.html
が、これ有償なお代物..
ん?これ? ↓↓ よく分からん。
https://docs.sonarqube.org/display/PLUG/Views
https://docs.sonarqube.org/display/PLUG/Governance+Plugin
 
 
ref.
SonarQubeでプログラムの品質管理をはじめる(概要)
http://qiita.com/sh-ogawa/items/fac0eca110c3558dfae9
Analyzing with SonarQube Scanner <-- 日本語サイト漁ったけど、結局、これが最も明快だった、、
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
オカルトから科学へ - SonarQubeで静的コード解析を始めよう
http://koduki.hatenablog.com/entry/2014/02/11/133558
SONNARQUBEでソースコードの品質を解析する
https://t246osslab.wordpress.com/2016/11/20/sonnarqube%E3%81%A7%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E5%93%81%E8%B3%AA%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B/
SonarQubeをインストール
http://gozuk16.hatenablog.com/entry/2016/04/15/171138
コード探知機「Sonar」でプロジェクトの深海を探れ! (2/4)
http://www.atmarkit.co.jp/ait/articles/1010/08/news124_2.html
SonarQube, C++ プラグインの Windows へのインストールと使い方
http://yohshiy.blog.fc2.com/blog-entry-305.html
SonnarQubeを使って有名どころJavaフレームワークの品質を解析してみた
http://daipresents.com/2016/sonnarqube/

tag : SonarQube Scanner SonarLint PostgreSQL IllegalStateException HeapDumpOutOfMemoryError

2017-03-03 08:33 : 開発 : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud