はじめに
業務でSonarQubeを使用していますが、日本語のドキュメントが少ないと感じるので、
ローカルでSonarQubeの環境構築からSpring Boot + Kotlinで作成したアプリのソース解析とテストカバレッジの確認まで記事としてまとめてみました。
SonarQubeとは
ざっくり簡単に言うと、ソースの静的解析を行うオープンソースツールです。
ソースをレビューしてくれて、重複コードの検出や脆弱性のある箇所を教えてくれます。
公式サイト
https://www.sonarsource.com/
環境
macOS Ventura : 13.3.1
SonarQube : 9.9.0
JaCoCo : 0.8.9
Docker : 20.10.24
Gradle : 8.1.1
Spring boot : 3.0.6
kotlin : 1.8.20
IntelliJ IDEA : 2022.2.3 (Community Edition)
DockerでSonarQubeのコンテナを作成する
SonarQubeは各バージョンのイメージが公開されており環境構築が楽なので、
SonarQubeを試してみるならDockerがおすすめです。
https://hub.docker.com/_/sonarqube
docker run -d --name sonarqube -p 9000:9000 sonarqube:9.9.0-community
docker runでコンテナを作成できます。
オプションについては以下の通りです。
-d
:バッグラウンド実行
—name
:コンテナ名
-p
:ポート指定
sonarqube
:使用したいバーション(今回は最新のを使用)
※developerは有償なので、communityを選択してください。
Dockerのインストールがまだの方は下記を参考にしてみてください。
Mac:https://docs.docker.com/desktop/install/mac-install/
Windows:https://docs.docker.com/desktop/install/windows-install/
SonarQubeへログイン
コンテナが正常に作成されるとSonarQubeへ以下のURLでアクセスできます。
初期アカウントはid、Passwordともにadmin
です。
ログインするとPasswordの変更を求めれらので、変更してください。
http://localhost:9000
Passwordを更新するとダッシュボードが表示されます。
ダッシュボード上でプロジェクトを作成することも可能ですが、
今回はローカルで作成したdemoアプリをアップロードします。
Token作成
garadleの設定にTokenが必要なので作成していきます。
gradleの設定
Hello World!
を返すだけのシンプルなAPIですが、
サンプルソースとして以下のリポジトリからクローンできます。
https://github.com/h-i-ist/sonarqube-sample
gradle.propertiesへTokenの設定を行います。
systemProp.sonar.login=Token
sonarqubeの各設定はbuild.gradle.ktsで行います。
プロパティについては公式サイトでまとまっています。
https://docs.sonarqube.org/9.9/analyzing-source-code/analysis-parameters/
sonarqube {
properties {
// プロジェクトキー
property("sonar.projectKey", "demo")
// サーバーURL
property("sonar.host.url", "http://localhost:9000")
// xml形式のテストレポートの場所を指定
property("sonar.junit.reportPaths", "build/test-results/test")
// JaCoCoカバレッジレポートの場所を指定
property("sonar.coverage.jacoco.xmlReportPaths", "build/reports/jacoco/test/jacocoTestReport.xml")
}
}
SonarQubeで解析結果を確認
gradleの設定が完了したらいよいよSonarQubeで解析結果を確認します。
コマンドで実行する場合
./gradlew sonarqube
実行が成功するとhttp://localhost:9000/projectsにdemo
プロジェクトが作成されていることが確認できると思います。
サマリの画面からテストカバレッジやUnitTestの件数も確認できます。
5分もあればSonarQubeをローカルで実行して、サンプルプロジェクトを解析することができると思います。
今回は簡単なものでしたが、自分で作成したプロジェクトを解析してみたり遊んでみてください。
少しでもSonarQubeの理解の助けになれば幸いです。