複数プロジェクトで共有するSonarQubeサーバー
cd ~/dev/SonarQube
make up # 起動
make down # 停止
make status # 状態確認
make logs # ログ表示
make clean # 完全削除(データも消える)URL: http://localhost:9000 初回ログイン: admin / admin
- http://localhost:9000 を開く
- Projects → Create Project → Manually
- Project key を設定(例:
my-project) - Set Up をクリック
- 右上アイコン → My Account → Security
- Generate Tokens でトークンを作成
- トークンをコピー
.env.local に追加:
SONAR_TOKEN="生成したトークン"
sonar-project.properties を作成:
sonar.projectKey=my-project
sonar.host.url=http://localhost:9000
sonar.sources=src
sonar.exclusions=**/node_modules/**,**/*.test.ts,**/*.test.tsx
sonar.sourceEncoding=UTF-8sonar: ## SonarQubeでコード分析を実行
@echo "SonarQubeでコード分析を実行します..."
$(eval SONAR_TOKEN_VAL := $(shell grep '^SONAR_TOKEN=' .env.local 2>/dev/null | cut -d'=' -f2 | tr -d '"'))
@if [ -z "$(SONAR_TOKEN_VAL)" ]; then \
echo "SONAR_TOKEN が設定されていません"; \
echo ".env.local の SONAR_TOKEN を設定してください"; \
exit 1; \
fi
@if ! curl -s http://localhost:9000/api/system/status | grep -q '"status":"UP"'; then \
echo "SonarQubeサーバーが起動していません"; \
echo "起動方法: cd ~/dev/SonarQube && make up"; \
exit 1; \
fi
docker run --rm \
-v "$$(pwd):/usr/src" \
--network host \
-e SONAR_TOKEN=$(SONAR_TOKEN_VAL) \
sonarsource/sonar-scanner-cli:latest
@echo "分析完了!結果: http://localhost:9000/dashboard?id=my-project"make sonar- サーバーは
make downで停止してもデータは保持される make cleanを実行するとプロジェクト設定も全て削除される- トークンは
.env.localに保存し、Git にコミットしないこと
SonarQube MCP サーバーを使うと、Claude Code から直接 SonarQube の問題を取得・修正できます。
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_URL",
"mcp/sonarqube"
],
"env": {
"SONARQUBE_TOKEN": "${SONAR_TOKEN}",
"SONARQUBE_URL": "http://host.docker.internal:9000"
}
}
}
}docker pull mcp/sonarqube.mcp.json に追加しただけではサーバーは有効になりません。
以下のコマンドで ~/.claude.json に有効化設定を追加してください:
python3 << 'EOF'
import json
import os
config_path = os.path.expanduser('~/.claude.json')
project_path = os.getcwd()
with open(config_path, 'r') as f:
data = json.load(f)
if project_path not in data.get('projects', {}):
data['projects'][project_path] = {}
data['projects'][project_path]['enabledMcpjsonServers'] = ['sonarqube']
data['projects'][project_path]['disabledMcpjsonServers'] = []
with open(config_path, 'w') as f:
json.dump(data, f, indent=2)
print(f'✅ sonarqube MCP enabled for {project_path}')
EOFその後、Claude Code を再起動すると /mcp で sonarqube が表示されます。
Claude Code を再起動後、以下のように依頼できます:
「SonarQubeの問題を取得して修正してください」
「jewelry-stock プロジェクトのセキュリティ問題を確認して」
「MAJORの問題だけ修正してください」
| ツール | 説明 |
|---|---|
get_issues |
問題一覧を取得 |
get_metrics |
コードメトリクスを取得 |
get_hotspots |
セキュリティホットスポット |
get_quality_gate |
品質ゲートの状態 |