【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.
version: "3"
services:
  sonarqube:
    image: sonarqube:community
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
    ports:
      - "9000:9000"
volumes:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:

SonarQubeの起動

Docker ComposeでSonarQubeを起動します。

docker-compose up -d

localhost:9000にアクセスすると、SonarQubeにアクセスできます。

初期のログイン情報は下記の通りです。

  • User: admin
  • Password: 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に下記を追記します。

plugins {
  id "org.sonarqube" version "3.4.0.2513"
}

表示されたコマンドをターミナルから実行して、SonarQubeによる静的解析を開始します。

❯ ./gradlew sonarqube \
  -Dsonar.projectKey=test \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.login={token}
Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details

> Task :sonarqube
SCM provider autodetection failed. Please use "sonar.scm.provider" to define SCM of your project, or disable the SCM Sensor in the project settings.

BUILD SUCCESSFUL in 1m 26s
4 actionable tasks: 4 executed

解析結果

解析が完了すると、GUIから結果を確認できます。

Issuesを確認すると、今回はassertionがないテストケースがあったということがわかりました。

参考

タイトルとURLをコピーしました