コード品質可視化DockerでSonarQube!WSL2で構築

開発
SonarQube

※この記事にはプロモーションが含まれています。

今回は、コード品質を可視化できるSonarQubeを、WindowsのDocker Desktop上にDocker-Composeを使って構築します。SonarQubeがあれば、ソースコードの改善ポイントを定量的に判断することができます。

スポンサーリンク
スポンサーリンク

SonarQubeとは

SonarQubeは、静的分析を使用してコード品質を検査し、バグ・コードの臭い・セキュリティの脆弱性を検出するためのOSSです。SonarQube は、重複コード・コーディング標準・単体テスト・コードカバレッジ・コードの複雑さ・コメント・バグ・セキュリティの脆弱性に関する情報を表示します。

無料版であるSonarQube Communityは、以下の15の言語に対応しています。

Java・JavaScript・C#・TypeScript・Kotlin・Ruby・Go・Scala・Flex・Python・PHP・HTML・CSS・XML・VB.NET

有償版との差異は、Download | SonarQubeに記載されています。

環境構築

WSL2設定

WindowsにDocker Desktop for WindowsおよびWSL2のインストールを行ってください。また、Docker DesktopはLinuxコンテナに切り替えてください。手順の詳細は、Docker Desktop for Windowsでコンテナ起動に記載してあります。

最後に、SonarQube起動用にファイルディスクリプタ等の設定として、PowerShellを起動し、以下のコマンドを実行します。

wsl -d docker-desktop

sysctl -w vm.max_map_count=262144

sysctl -w fs.file-max=65536

ulimit -n 65536

exit

SonarQubeインストール

docker-composeでSonarQubeおよびPostgreSQLを起動します。

docker-compose.ymlは以下の設定としました。SonarQubeのバージョンは、今後C++プラグインを導入したいので、プラグインが記事記載時点でサポートしている7.x系を選択しています(Compatibility Matrix)。

version: "3"

services:
  sonarqube:
    container_name: sonarqube
    image: sonarqube:7.9.5-community
    depends_on:
      - postgresql
    environment:
      - sonar.jdbc.url=jdbc:postgresql://postgresql:5432/sonar
      - sonar.jdbc.username=sonar
      - sonar.jdbc.password=sonar
    volumes:
      - sonarqube_conf:/opt/sonarqube/conf
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
      - sonarqube_data:/opt/sonarqube/data
    ports:
      - "9000:9000"
    networks:
      - sonarnet
      
  postgresql:
    container_name: postgresql
    image: postgres:11
    environment:
      - POSTGRES_USER=sonar
      - POSTGRES_PASSWORD=sonar
    volumes:
      - postgresql:/var/lib/postgresql
      - postgresql_data:/var/lib/postgresql/data
    networks:
      - sonarnet
      
networks:
  sonarnet:
    driver: bridge
    
volumes:
  sonarqube_conf:
  sonarqube_extensions:
  sonarqube_logs:
  sonarqube_data:
  postgresql:
  postgresql_data:

以下のコマンドで、SonarQubeおよびPostgreSQLを起動します。

docker-compose up -d

2コンテナが起動した場合、ポート9000からログインします。初期ログイン情報は、admin / adminです。

http://localhost:9000/

システム情報から、SonarQubeおよびPostgreSQLの状態が分かります。

プロジェクト作成

管理コンソールから、プロジェクトを作成します。

まず、[Administration] > [Projects] > [Management] > [Create Project]をクリックします。

入力画面が出てくるので、Project NameとKeyを入力します。

Keyは、Scannerで情報をアップロードする際に指定するもので、システムでユニークな値であることが必要です。

Visiblityは、Publicだとログイン前に品質状況の概要が表示されており、privateはログイン後に確認できるものです。運用に合わせて変更してください。

Sonar Scanner導入

コード情報をサーバーに送り込むためのクライアントモジュール(スキャナー)を用意します。

公式サイトから動作環境に合わせたモジュールをダウンロードし、任意のフォルダに展開します。

SonarQubeサーバーの配置がhttp://localhost:9000以外の場合、以下のファイルのURLを実環境に合わせて変更します。

<sonar scannerの配置フォルダ>/conf/sonar-scanner.properties

コードチェック

適当なpythonコードを対象に、Scannerを適用しサーバーの画面を確認します。

設定ファイル

解析するソースコードフォルダのトップフォルダに、sonar-project.propertiesファイルを作成し、以下の内容を記述します。

管理コンソールで作成したプロジェクトに指定したNameとKeyを使用しています。

sonar.projectKey=xyz
sonar.projectName=Test-Python
#sonar.projectVersion=1.0
sonar.sources=.
sonar.sourceEncoding=UTF-8

実行

sonar-project.propertiesファイルのフォルダをカレントフォルダとして、CMDもしくはPowershellから、sonar-scanner.batを実行します。解析及び情報のアップロードを行ってくれます。

アップロードが完了したら、管理コンソールでプロジェクトを覗いてみましょう。ソースコードの診断結果が表示されているはずです。問題がある点は修正を検討しましょう。

まとめ

SonarQubeを使用すると、コードの品質を定量的に表示してくれるので、コードの弱い点、改善点が分かります。日々のコード更新にこの様なチェックを加えて、少しづつ改善していけば、強いコードを作成することができます。弱点のないコードに仕上げていきたいですね。

以上、WSL2上にDockerでSonarQubeを構築する手順の紹介でした。

コメント