ツール  /  SonarQube

SonarQube — ZIP(ローカルインストール)による導入・実行・確認

ZIP ファイルを展開してローカルマシンに直接 SonarQube をインストールする方法を解説します。 Docker を使わずに Windows / Linux / macOS 上で SonarQube を動かしたい場合に適した方法です。 Quality Gate / Quality Profile の設定から SonarScanner の実行、解析結果の対応まで網羅します。

1. 前提条件

項目要件
JDKJDK 17 以上(SonarQube 10.x の要件)
メモリRAM 4 GB 以上推奨
OSWindows 10/11、Linux(Ubuntu 20.04+、RHEL 8+)、macOS 12+
データベースH2(組込・開発用のみ)/ PostgreSQL 15 / MySQL 8 / Oracle 19c(本番推奨は PostgreSQL)
ポートデフォルト 9000(変更可)
⚠️ H2 データベースは本番環境非推奨
組込 H2 はデフォルトで使用できますが、データ移行が難しいため本番・長期利用では PostgreSQL を推奨します。

2. 導入方法 — ZIP からのインストール

SonarQube のダウンロードと展開

  1. ZIP ファイルをダウンロード
    SonarQube ダウンロードページ から Community Edition の ZIP をダウンロードします。
  2. 任意のディレクトリに展開する
    bash(Linux / macOS)
    # 展開先の例(/opt/sonarqube)
    sudo unzip sonarqube-10.x.x.zip -d /opt/
    sudo mv /opt/sonarqube-10.x.x /opt/sonarqube
    
    # 実行ユーザーを作成(root では実行不可)
    sudo useradd -r -s /bin/false sonar
    sudo chown -R sonar:sonar /opt/sonarqube
  3. データベースの設定(PostgreSQL を使う場合)
    bash — PostgreSQL セットアップ
    # PostgreSQL へログイン
    sudo -u postgres psql
    
    -- ユーザー・データベースを作成
    CREATE USER sonar WITH ENCRYPTED PASSWORD 'sonar';
    CREATE DATABASE sonarqube OWNER sonar;
    GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonar;
    \q
  4. sonar.properties を編集する
    properties — /opt/sonarqube/conf/sonar.properties(抜粋)
    # PostgreSQL を使う場合は以下のコメントを解除して設定
    sonar.jdbc.username=sonar
    sonar.jdbc.password=sonar
    sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
    
    # Web サーバーのポート変更が必要な場合
    # sonar.web.port=9000
  5. SonarQube を起動する
    bash(Linux)
    # 起動
    sudo -u sonar /opt/sonarqube/bin/linux-x86-64/sonar.sh start
    
    # ステータス確認
    sudo -u sonar /opt/sonarqube/bin/linux-x86-64/sonar.sh status
    
    # ログ確認(起動に 1〜2 分かかる)
    tail -f /opt/sonarqube/logs/sonar.log
    PowerShell(Windows)
    # Windows の場合(管理者権限の PowerShell で実行)
    cd C:\sonarqube\bin\windows-x86-64
    .\StartSonar.bat
  6. 初期ログインとトークン発行
    http://localhost:9000 を開き、 admin / admin でログイン後にパスワードを変更します。 「Create a local project」でプロジェクトを作成し、解析用トークンを発行します。

systemd サービス登録(Linux 本番環境)

ini — /etc/systemd/system/sonarqube.service
[Unit]
Description=SonarQube service
After=network.target

[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
User=sonar
Group=sonar
Restart=always
LimitNOFILE=65536
LimitNPROC=4096

[Install]
WantedBy=multi-user.target
bash
sudo systemctl daemon-reload
sudo systemctl enable sonarqube
sudo systemctl start sonarqube

3. 実行基準 — Quality Gate / Quality Profile

Quality Profile(ルールセット)と Quality Gate(合否判定の閾値)の設定は Docker 版と同一です。 Administration メニューから設定します。

デフォルト条件(Sonar way Gate)閾値
新規コードのバグ0 件
新規コードの脆弱性0 件
新規コードのセキュリティホットスポット100% レビュー済み
新規コードのカバレッジ80% 以上
新規コードの重複率3% 以下
💡 チームの状況に合わせて Administration → Quality Gates でカスタムゲートを作成してください。 既存コードに多くの問題がある場合は、まず「新規コードのみ対象」として運用を開始するのが効果的です。

4. SonarScanner のインストール

SonarQube 本体とは別に、コードを送信する SonarScanner をインストールします。

bash(Linux / macOS)
# SonarScanner をダウンロード・展開(バージョンは最新版に変更してください)
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-6.x.x-linux-x64.zip
unzip sonar-scanner-cli-6.x.x-linux-x64.zip -d /opt/
ln -s /opt/sonar-scanner-6.x.x-linux-x64 /opt/sonar-scanner

# PATH に追加
echo 'export PATH="$PATH:/opt/sonar-scanner/bin"' >> ~/.bashrc
source ~/.bashrc

# 確認
sonar-scanner --version
Windows の場合
SonarScanner ダウンロードページ から Windows 版 ZIP をダウンロードし、bin フォルダを PATH に追加してください。

5. 実行方法 — SonarScanner の実行

sonar-project.properties の配置

properties — プロジェクトルート/sonar-project.properties
sonar.projectKey=my-project
sonar.projectName=My Project
sonar.projectVersion=1.0

sonar.sources=src/main/java
sonar.tests=src/test/java
sonar.java.binaries=target/classes

# JaCoCo カバレッジレポート
sonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml

sonar.sourceEncoding=UTF-8

SonarScanner の実行

bash
# プロジェクトルートで実行
sonar-scanner \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.token=<発行したトークン>
PowerShell(Windows)
sonar-scanner.bat `
  -D"sonar.host.url=http://localhost:9000" `
  -D"sonar.token=<発行したトークン>"
💡 トークンの安全な管理
トークンをコマンドに直接記述する代わりに、環境変数 SONAR_TOKEN に設定する方法が推奨です。 -Dsonar.token は省略でき、Scanner が自動的に SONAR_TOKEN 環境変数を参照します。

6. 実行後の確認

解析完了後、http://localhost:9000 のプロジェクト画面で結果を確認します。

確認項目確認方法
Quality Gate ステータス プロジェクト概要に「Passed」(緑)/ 「Failed」(赤)が表示される。
Bugs / Vulnerabilities Issues タブで Type = Bug / Vulnerability に絞り込み、件数・深刻度を確認する。
Security Hotspots Security Hotspots タブで未レビューの件数を確認する。
Coverage Measures タブの Coverage から新規コード・全体のカバレッジを確認する。
Duplications Measures タブの Duplications から重複コードのパーセンテージを確認する。

問題の深刻度

深刻度意味対応優先度
BLOCKER即時修正必須。本番動作に直接影響するバグ。最高
CRITICALセキュリティ・データ整合性に影響する重大問題。
MAJOR機能障害・パフォーマンス劣化を招く欠陥。
MINOR可読性・保守性の問題。機能への直接影響はない。
INFO参考情報。最低

7. 確認後の対応

  1. BLOCKER / CRITICAL から対処する
    Issues 画面で Severity フィルターを使い、優先度の高い問題から修正します。 各 Issue には「Why is this an issue?」として原因と修正例が提示されます。
  2. 誤検知をマークする
    意図的な実装・誤検知と判断した Issue は「Won't Fix」または「False Positive」に変更し、理由をコメントします。
  3. Security Hotspots をレビューする
    各 Hotspot を確認し、問題なければ「Safe」、修正が必要なら「To fix」に変更します。
  4. 再解析して Quality Gate を確認する
    コード修正後に再度 sonar-scanner を実行し、Quality Gate が Passed になることを確認します。

除外設定

properties — sonar-project.properties
# 解析対象の除外(自動生成コード・テストクラスなど)
sonar.exclusions=**/generated/**,**/vendor/**

# カバレッジ計測の除外
sonar.coverage.exclusions=**/entity/**,**/dto/**,**/config/**

8. まとめ

フェーズ内容ポイント
導入ZIP 展開 → sonar.properties 設定 → 起動本番は PostgreSQL 使用・systemd 登録を推奨。
基準設定Quality Gate / Quality Profile 確認「Sonar way」を基準に、段階的にカスタマイズ。
Scanner 準備SonarScanner インストール・PATH 設定バージョンは SonarQube に対応するものを選択。
実行sonar-project.properties 配置 → sonar-scanner 実行SONAR_TOKEN 環境変数でトークンを安全に管理。
確認・対応Quality Gate / Issues / Coverage 確認 → 修正 → 再解析BLOCKER / CRITICAL を最優先で対処。