Maven
SonarQube
静的コード解析
TERASOLUNA5

SonarQubeでTERASOLUNA5.xアプリを静的ソースコード解析する方法

1. はじめに

SonarQubeでTERASOLUNA5.xアプリを静的ソースコード解析する方法について説明します。SonarQubeのインストール方法については「WindowsにPostgreSQL対応のSonarQubeをインストールする方法」を参照ください。

1.1. 検証環境

  • Java 1.8.0_131
  • SonarQube 5.6.6

2. TERASOLUNA5.xのサンプリアプリを静的ソースコード解析

2.1. ダウンロードとお試しビルド

今回はTERASOLUNA5.xのサンプルアプリケーションとして公開されている「Tour Reservation Sample Application」をSonarQubeで静的ソースコード解析してみたいと思います。

まずはここからサンプリアプリをダウンロードして任意のディレクトリに展開します。
今回はterasoluna-tourreservation-mybatis3-5.3.0.RELEASE.zipで試してみます。

お試しビルド
C:\Temp\terasoluna-tourreservation-mybatis3-5.3.0.RELEASE>mvn clean install -Dmaven.test.skip=true
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Parent
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Environment Layer
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Domain Layer
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Web Layer
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Parent 5.3.0.RELEASE
[INFO] ------------------------------------------------------------------------
... 省略 ...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Parent  SUCCESS [11.606s]
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Environment Layer  SUCCESS [2:11.820s]
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Domain Layer  SUCCESS [3.526s]
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Web Layer  SUCCESS [5.694s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2:32.958s
[INFO] Finished at: Wed Sep 20 21:15:14 JST 2017
[INFO] Final Memory: 40M/339M
[INFO] ------------------------------------------------------------------------
C:\Temp\terasoluna-tourreservation-mybatis3-5.3.0.RELEASE>

2.2. SonarQubeで静的ソースコード解析

静的ソースコード解析を行うには事前にSonarQubeサーバが起動している必要があります。
SonarQubeサーバの起動方法が分からない方はここを参照ください。

今回はSonarQubeのリポジトリとして以下のPostgreSQLのデータベースを利用する前提とします。

項番 項目
1 ポート番号 5432
2 データベース名 sonarDb01
3 ユーザID sonarUser
4 パスワード sonarPass
SonarQubeで静的ソースコード解析を行うmvnコマンド
mvn sonar:sonar ^
-Dsonar.host.url=http://localhost:9000 ^
-Dsonar.jdbc.username=sonarUser ^
-Dsonar.jdbc.password=sonarPass ^
-Dsonar.jdbc.url=jdbc:postgresql://127.0.0.1:5432/sonarDb01 ^
-Dsonar.scm.disabled=true

sonar.scm.disabled=trueはエラーが発生した場合に付与してください。
SonarQube 4.5.2を利用していた時は付与していませんでした。
sonar.scm.disabled=trueの説明についてはこちらの記事が参考になりますので参照ください。

サンプルアプリを静的ソースコード解析してみる
C:\Temp\terasoluna-tourreservation-mybatis3-5.3.0.RELEASE>mvn sonar:sonar ^
More? -Dsonar.host.url=http://localhost:9000 ^
More? -Dsonar.jdbc.username=sonarUser ^
More? -Dsonar.jdbc.password=sonarPass ^
More? -Dsonar.jdbc.url=jdbc:postgresql://127.0.0.1:5432/sonarDb01 ^
More? -Dsonar.scm.disabled=true
[INFO] Scanning for projects...
... 省略 ...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Parent  SUCCESS [25.761s]
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Environment Layer  SKIPPED
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Domain Layer  SKIPPED
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Web Layer  SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.544s
[INFO] Finished at: Wed Sep 20 21:24:10 JST 2017
[INFO] Final Memory: 42M/732M
[INFO] ------------------------------------------------------------------------
C:\Temp\terasoluna-tourreservation-mybatis3-5.3.0.RELEASE>

BUILD SUCCESSと表示されれば完了です。
Webブラウザで http://localhost:9000/ にアクセスします。
既に表示している場合は画面を更新(F5ボタンを押下等)してください。

右側の Projects に
「TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Parent」
が表示されていると思います。
このリンクをクリックすると静的ソースコード解析結果の詳細画面が表示されます。
SonarQubeの解析結果の見方については以下の記事が参考になります。

3. さいごに

今回はTEARSOLUNA5.xのサンプルアプリを利用してSonarQubeによる静的ソースコード解析の方法について説明しました。
静的ソースコード解析はソースコードの品質を確保するうえで非常に重要になります。といっても、実際に解析するには今回説明した通り、mavenのコマンドで手軽に実行できます。ぜひ利用してみてください。