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 |
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の解析結果の見方については以下の記事が参考になります。
- SonarQubeでソースコードの品質チェック
- [実験] 静的コード解析ツールはどの程度バグや脆弱性を検出できるのか? ~ SonarQube編
- SonarQube を構築してプロジェクトを数値化する
3. さいごに
今回はTEARSOLUNA5.xのサンプルアプリを利用してSonarQubeによる静的ソースコード解析の方法について説明しました。
静的ソースコード解析はソースコードの品質を確保するうえで非常に重要になります。といっても、実際に解析するには今回説明した通り、mavenのコマンドで手軽に実行できます。ぜひ利用してみてください。