ツール / SonarQube
SonarQube — ZIP(ローカルインストール)による導入・実行・確認
ZIP ファイルを展開してローカルマシンに直接 SonarQube をインストールする方法を解説します。 Docker を使わずに Windows / Linux / macOS 上で SonarQube を動かしたい場合に適した方法です。 Quality Gate / Quality Profile の設定から SonarScanner の実行、解析結果の対応まで網羅します。
1. 前提条件
| 項目 | 要件 |
|---|---|
| JDK | JDK 17 以上(SonarQube 10.x の要件) |
| メモリ | RAM 4 GB 以上推奨 |
| OS | Windows 10/11、Linux(Ubuntu 20.04+、RHEL 8+)、macOS 12+ |
| データベース | H2(組込・開発用のみ)/ PostgreSQL 15 / MySQL 8 / Oracle 19c(本番推奨は PostgreSQL) |
| ポート | デフォルト 9000(変更可) |
⚠️ H2 データベースは本番環境非推奨
組込 H2 はデフォルトで使用できますが、データ移行が難しいため本番・長期利用では PostgreSQL を推奨します。
組込 H2 はデフォルトで使用できますが、データ移行が難しいため本番・長期利用では PostgreSQL を推奨します。
2. 導入方法 — ZIP からのインストール
SonarQube のダウンロードと展開
-
ZIP ファイルをダウンロード
SonarQube ダウンロードページ から Community Edition の ZIP をダウンロードします。 -
任意のディレクトリに展開する
# 展開先の例(/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 -
データベースの設定(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 -
sonar.properties を編集する
# PostgreSQL を使う場合は以下のコメントを解除して設定 sonar.jdbc.username=sonar sonar.jdbc.password=sonar sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube # Web サーバーのポート変更が必要な場合 # sonar.web.port=9000 -
SonarQube を起動する
# 起動 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# Windows の場合(管理者権限の PowerShell で実行) cd C:\sonarqube\bin\windows-x86-64 .\StartSonar.bat -
初期ログインとトークン発行
http://localhost:9000 を開き、admin/adminでログイン後にパスワードを変更します。 「Create a local project」でプロジェクトを作成し、解析用トークンを発行します。
systemd サービス登録(Linux 本番環境)
[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
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 をインストールします。
# 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 に追加してください。
SonarScanner ダウンロードページ から Windows 版 ZIP をダウンロードし、bin フォルダを PATH に追加してください。
5. 実行方法 — SonarScanner の実行
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 の実行
# プロジェクトルートで実行
sonar-scanner \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.token=<発行したトークン>
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. 確認後の対応
-
BLOCKER / CRITICAL から対処する
Issues 画面で Severity フィルターを使い、優先度の高い問題から修正します。 各 Issue には「Why is this an issue?」として原因と修正例が提示されます。 -
誤検知をマークする
意図的な実装・誤検知と判断した Issue は「Won't Fix」または「False Positive」に変更し、理由をコメントします。 -
Security Hotspots をレビューする
各 Hotspot を確認し、問題なければ「Safe」、修正が必要なら「To fix」に変更します。 -
再解析して Quality Gate を確認する
コード修正後に再度sonar-scannerを実行し、Quality Gate が Passed になることを確認します。
除外設定
# 解析対象の除外(自動生成コード・テストクラスなど)
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 を最優先で対処。 |