【SonarQube】Docker Composeでサクッと試してみる
はじめに
Docker ComposeでローカルにSonarQubeを構築して、サクッと試してみたいと思います。
SonarQubeとは
SonarQubeとは、コードの品質を保つための静的解析ツールです。
CIパイプラインに組み込むことで、継続的にコードの品質をチェック、改善することができるようになります。
Docker Composeで試す
Docker Composeを使ってローカルにSonarQubeを構築してみます。
docker-compose.yamlの作成
docker-compose.yaml
は下記のリポジトリのものを利用します。
docker-sonarqube/example-compose-files/sq-with-h2 at master · SonarSource/docker-sonarqube
:whale: SonarQube in Docker. Contribute to SonarSource/docker-sonarqube development by creating an account on GitHub.
1version: "3"
2services:
3 sonarqube:
4 image: sonarqube:community
5 volumes:
6 - sonarqube_data:/opt/sonarqube/data
7 - sonarqube_extensions:/opt/sonarqube/extensions
8 - sonarqube_logs:/opt/sonarqube/logs
9 ports:
10 - "9000:9000"
11volumes:
12 sonarqube_data:
13 sonarqube_extensions:
14 sonarqube_logs:
SonarQubeの起動
Docker ComposeでSonarQubeを起動します。
1docker-compose up -d
localhost:9000
にアクセスすると、SonarQubeにアクセスできます。
初期のログイン情報は下記の通りです。
User
: adminPassword
: admin
サンプルアプリで解析してみる
適当なアプリで、実際にSonarQubeで静的解析をしてみます。
今回は、Paketo Buildpacksのサンプルアプリからgradleアプリを利用します。
samples/java/gradle at main · paketo-buildpacks/samples
A collection of samples. Contribute to paketo-buildpacks/samples development by creating an account on GitHub.
プロジェクトの作成
まずはプロジェクトを作成します。今回はマニュアルで作成します。
リポジトリの設定
次に解析するリポジトリの選択をします。今回はローカルにあるリポジトリを解析したいのでLocally
を選択します。
トークンの作成をします。
サンプルアプリはGradleなのでGradleを選択すると、SonarQubeを実行するための設定と実行コマンドが表示されます。
SonarQubeによる静的解析の実行
表示された方法を参考にbuild.gradle
に下記を追記します。
1plugins {
2 id "org.sonarqube" version "3.4.0.2513"
3}
表示されたコマンドをターミナルから実行して、SonarQubeによる静的解析を開始します。
1❯ ./gradlew sonarqube \
2 -Dsonar.projectKey=test \
3 -Dsonar.host.url=http://localhost:9000 \
4 -Dsonar.login={token}
5Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details
6
7> Task :sonarqube
8SCM provider autodetection failed. Please use "sonar.scm.provider" to define SCM of your project, or disable the SCM Sensor in the project settings.
9
10BUILD SUCCESSFUL in 1m 26s
114 actionable tasks: 4 executed
解析結果
解析が完了すると、GUIから結果を確認できます。
Issuesを確認すると、今回はassertionがないテストケースがあったということがわかりました。
参考
- Code Quality and Code Security | SonarQube
- SonarQube Documentation | SonarQube Docs
- SonarSource/docker-sonarqube: SonarQube in Docker
- paketo-buildpacks/samples: A collection of samples