mcpField
S
sonar-integrate

sonar-integrate

github.com/sonarsourceテスト・品質11445 回インストール今日更新
リポジトリ

sonar-integrate について

sonar-integrateは、sonarqube-cliの導入・更新、認証、複数のコーディングエージェント向けのSonarQube設定を案内するスキルです。エージェントに応じた設定を行い、コンテナランタイムの稼働も確認します。

主な機能

  1. 01sonarqube-cliの確認と更新
  2. 02SonarQube認証の案内
  3. 03エージェント別の連携設定
  4. 04コンテナランタイムの確認
  5. 05MCPとセキュリティフックの設定

活用シーン

  1. 01新しい環境でCLIを導入・設定
  2. 02CLIを更新してエージェントを再連携
  3. 03MCPツールが読み込まれない原因となるランタイム問題の確認

MCP 対応

Claude Code、Copilot CLI、Codex、Cursorなどで使うSonarQube MCPサーバーを設定します。サーバーはコンテナランタイム内でsonar run mcpにより起動します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sonarsource/sonarqube-agent-plugins --skill sonar-integrate

インストール後、Claude Code で/sonar-integrateを入力して読み込まれたか確認します。

詳細

SonarQube を統合する

必要に応じて sonarqube-cli をインストールし、すでにインストールされている場合は最新バージョンに更新して、認証を行い、エージェント固有の統合を完了するまでユーザーを案内します。SonarQube 自体はすでにセットアップ済みであるものとします。このスキルでは、アシスタントとの接続のみを設定します。

手順

対話ルール:選択が必要な場合はすべて、自由入力を求める代わりに、あらかじめ定義された選択肢を提示してください(必要に応じて単一選択または複数選択)。ユーザーの回答が無効な場合は、同じ選択肢を再表示してください。

手順 1 — sonarqube-cli を確認して更新する

which sonar(macOS/Linux)または Get-Command sonar(Windows)を自分で実行し、sonar が PATH 上で利用できるか確認します。

見つかった場合: まずインストール方法を特定してください。アップグレード方法はインストール方法によって異なります。

  • パッケージまたはバージョン管理ツールで管理されている場合(Homebrew や mise 経由でインストールされ、バイナリが ~/.local/share/sonarqube-cli/bin ではなく管理ツールのプレフィックス配下にある場合など):管理ツールと競合するため、sonar update は実行しないでください。代わりに管理ツールのアップグレードコマンドを自分で実行し(Homebrew:brew upgrade --cask sonarqube-cli、mise:mise upgrade aqua:SonarSource/sonarqube-cli)、その後、手順 2 に進みます。アップグレードに失敗した場合は出力を表示しますが、sonar が引き続き使用可能であれば、手順 2 に進んでください。
  • シェル/PowerShell スクリプトでインストールされている場合、または不明な場合: 自分で sonar update を実行し、完了するまで待ちます。
    • 成功した場合: CLI が最新である(またはアップグレードされた)ことを簡潔にユーザーに伝え、手順 2 に進みます。
    • 失敗した場合: 関連する出力を表示し、(オフラインやネットワークの問題などが原因であれば)sonar update を手動で実行するよう提案します。その後も、sonar が引き続き使用可能であれば、手順 2 に進みます。バイナリが存在しないか壊れている場合を除き、以降の手順を中断しないでください。

見つからない場合: 以下の表からインストールコマンドを選び、ユーザーに表示して、実行する前に明示的な確認を求めてください。ユーザーが確認するまで、コマンドを実行しないでください。

シェル/PowerShell スクリプトがデフォルトで、どの環境でも使用できます。ユーザーが CLI をすでに Homebrew または mise で管理している場合は、今後のアップグレードもそのツールで管理できるため、そちらを優先してください。その場合、手順 1 の更新では管理ツールを使用します。

プラットフォーム/方法インストールコマンド
macOS / Linux(スクリプト)curl -o- https://raw.githubusercontent.com/SonarSource/sonarqube-cli/refs/heads/master/user-scripts/install.sh | bash
macOS / Linux(Homebrew)brew install --cask sonarqube-cli
すべての OS(mise)mise use -g aqua:SonarSource/sonarqube-cli
Windows(PowerShell)irm https://raw.githubusercontent.com/SonarSource/sonarqube-cli/refs/heads/master/user-scripts/install.ps1 | iex

ユーザーが確認した場合: シェルコマンドを使って、自分でコマンドを実行します。完了後、続行する前に、PATH の確認(which sonar または Get-Command sonar)を自分で再実行し、インストールを検証してください。

ユーザーが拒否した場合: このスキルを終了し、sonarqube-cli を手動でインストールしてから sonar-integrate スキルを再度呼び出すようユーザーに依頼してください。


手順 2 — 認証状態を確認する

シェルコマンドを使って、自分で sonar auth status を実行します。

すでに認証済みの場合: 出力に表示された接続先サーバーと組織を伝え、手順 4 に直接進みます。

未認証の場合: 手順 3 に進みます。


ステップ 3 — 認証する(sonar auth login)

このステップではユーザーの操作が必要です。自分で実行しないでください。

まず、次の選択肢を持つ単一選択セレクターを使って接続タイプを確認します。

  1. SonarQube Cloud - EU(デフォルト)
  2. SonarQube Cloud - US
  3. セルフホストの SonarQube Server

この選択について、自由回答形式の質問はしないでください。

次の情報を収集します。

シナリオ必要な情報
SonarQube Cloud — EU(デフォルト)organization key(例:my-org)
SonarQube Cloud — USorganization key + US リージョンの確認(https://sonarqube.us)
SonarQube Serverserver URL(例:https://sonarqube.yourcompany.com)

ログインコマンドを組み立て、ユーザーに表示します。

シナリオコマンド
SonarQube Cloud — EUsonar auth login -o <org-key>
SonarQube Cloud — USsonar auth login -o <org-key> -s https://sonarqube.us
SonarQube Serversonar auth login -s <server-url>

ユーザーに次のように伝えます。

"以下のコマンドを実行してください。ログインするためにブラウザーが開きます。トークンは システムのキーチェーンに安全に保存され、このチャットに表示されることはありません。"

ユーザーがログインしたことを確認するまで待ち、その後、自分で sonar auth status を実行して確認してから続行します。


ステップ 4 — エージェント固有の統合

コンテナーランタイムの要件: SonarQube MCP Server はコンテナー内で実行され、sonar run mcp(Docker、Podman、Nerdctl を検出します)によって起動します。MCP ツールを読み込むには、コンテナーランタイムがインストールされ、実行中である必要があります。そうでない場合、統合は正常に完了しても、セッションに mcp__sonarqube__* ツールが表示されません。必ず自分で確認してください: docker ps を実行し、失敗した場合は podman ps/nerdctl ps を実行します。いずれかが成功すればランタイムは起動しています。そのまま続行してください。どれも成功しない場合は、コンテナーランタイムが実行されていないことをユーザーに伝え、起動するよう依頼してください。その後、ツールを読み込むにはエージェントセッションを再起動する必要があることを伝えます(デーモンの起動とセッションの再起動だけは、ユーザーに代わって実行できません)。

以下から、自分が使用しているエージェントに応じてブランチを正確に 1 つ選択してください。他のブランチは実行しないでください。

  • Claude Code -> 4.a
  • Copilot CLI -> 4.b
  • Codex -> 4.c
  • Cursor -> 4.d
  • Antigravity -> 4.e
  • Gemini CLI -> 4.f
  • Factory Droid -> 4.g
4.a — Claude Code(sonar integrate claude)

sonar integrate claude を実行します。このコマンドは、SonarQube MCP Server、シークレットスキャンフック、および CLI が適用するその他のサポート対象の統合を設定します。

これにより、MCP(sonar-quality-gate、sonar-analyze、sonar-coverage、sonar-duplication、sonar-dependency-risks などのスキル用)とシークレットスキャンフックがユーザーの Claude Code 設定に組み込まれ、このマシン上のすべての Claude Code セッションに適用されます。利用可能な場合は、SonarQube Vortex の分析フックもインストールされます。

シェルコマンドを使って、このコマンドを自分で実行してください。

sonar integrate claude --non-interactive
4.b — Copilot CLI(sonar integrate copilot)

sonar integrate copilot を実行します。このコマンドは、SonarQube MCP Server、シークレットスキャンフック、および CLI が適用するその他のサポート対象の統合を設定します。

これにより、MCP(sonar-quality-gate、sonar-analyze、sonar-coverage、sonar-duplication、sonar-dependency-risks などのスキル用)とシークレットスキャンフックがユーザーの Copilot CLI 設定に組み込まれ、このマシン上のすべての Copilot CLI セッションに適用されます。

シェルコマンドを使って、このコマンドを自分で実行してください。

sonar integrate copilot --non-interactive
4.c — Codex (sonar integrate codex)

sonar integrate codex を実行すると、SonarQube MCP Server、シークレットスキャンのフック、さらに SonarQube Cloud の組織で Vortex 分析が有効な場合は、編集後に検出結果をインラインで表示する apply_patch の PostToolUse フックが設定され、このマシン上のすべての Codex セッションに適用されます。

シェルコマンドを使って、このコマンドを実行してください。

sonar integrate codex --non-interactive
4.d — Cursor (sonar integrate cursor)

sonar integrate cursor を実行すると、シークレットスキャンのフック(beforeSubmitPrompt、beforeReadFile、preToolUse)、MCP、コンテキスト拡張(利用資格がある場合)、Vortex 分析の指示(利用資格がある場合)が設定され、このマシン上のすべての Cursor セッションに適用されます。注意:Cursor のクラウド/バックグラウンドエージェントが認識するのは、プロジェクト自体にインストールされたフックのみであり、マシン全体にインストールされたフックは認識しません。そのため、これらのエージェントにはインストールされたフックが表示されません。

シェルコマンドを使って、このコマンドを実行してください。

sonar integrate cursor --non-interactive

integrate の完了後、Cursor で MCP サーバーを手動で有効にするようユーザーに伝えてください。Settings → MCP を開き、sonarqube エントリを見つけてオンに切り替えます。また、コンテナランタイム(Docker、Podman、または Nerdctl)が実行中であることを確認するよう伝えてください。ツールを表示するには、Cursor セッションの再起動が必要な場合があります。

4.e — Antigravity (sonar integrate antigravity)

sonar integrate antigravity を実行すると、シークレットスキャンのフック、prompt-secrets および Vortex 分析の指示、コンテキスト拡張(利用資格がある場合)、MCP が Antigravity ハーネスに設定され、このマシン上のすべての Antigravity セッションに適用されます。

シェルコマンドを使って、このコマンドを実行してください。

sonar integrate antigravity --non-interactive

コンテナランタイム(Docker、Podman、または Nerdctl)が実行中であることを確認するようユーザーに伝えてください。また、integrate の完了後に MCP ツールが表示されない場合は、Antigravity セッションを再起動するよう伝えてください。

4.f — Gemini CLI (レガシー)

Gemini CLI は sonar run mcp を介して SonarQube MCP Server を起動します。このコマンドはコンテナランタイム(Docker、Podman、Nerdctl)の検出と認証を自動的に処理します。認証は手順 2~3 で完了しています。

統合の準備ができていることを確認してください。Gemini CLI が gemini-extension.json を読み込むと、MCP サーバーが自動的に起動します。

Antigravity(4.e)への移行を推奨してください。agy plugin import gemini を実行し、続いて sonar integrate antigravity を実行します。Gemini CLI は SonarQube のフックや Vortex 分析の連携をサポートしていません。

4.g — Factory Droid

Factory Droid は、プラグインの mcp.json から sonar run mcp を介して SonarQube MCP Server を起動します。このコマンドはコンテナランタイム(Docker、Podman、Nerdctl)の検出と認証を自動的に処理します。認証は手順 2~3 で完了しています。

Factory Droid に適用される sonar integrate コマンドはありません。Factory Droid は SonarQube のフックや Vortex 分析の連携をサポートしていません。


まとめメッセージ

すべての手順が完了したら、次のまとめを出力します。

✅ SonarQube integration is ready.

  sonarqube-cli:     up to date
  Authentication:    token stored in system keychain
  MCP Server:        configured (ensure a container runtime (Docker, Podman, or Nerdctl) is running, then restart the agent session if tools do not appear)

You can verify at any time with:  sonar auth status
To refresh CLI + wiring later:    invoke the sonar-integrate skill again

パス 4.a(Claude Code)を選択した場合は、次の行をまとめに追加します。

  Secrets scanning:  hooks registered via sonar integrate claude

パス 4.b(Copilot CLI)を選択した場合は、次の行をまとめに追加します。

  Secrets scanning:  hooks registered via sonar integrate copilot

パス 4.c(Codex)を選択した場合は、次の行をまとめに追加します。

  Hooks & MCP:       wired via sonar integrate codex

パス 4.d(Cursor)を選択した場合は、次の行をまとめに追加します。

  CLI integrate:     wired via sonar integrate cursor
  MCP Server:        enable manually in Cursor Settings → MCP (ensure a container runtime (Docker, Podman, or Nerdctl) is running; restart may be needed)

また、デフォルトの MCP Server 行は省略してください(上記の Cursor 専用の行に置き換わります)。

パス 4.e(Antigravity)を選択した場合は、次の行をまとめに追加します。

  CLI integrate:     wired via sonar integrate antigravity

パス 4.f(Gemini CLI)を選択した場合は、デフォルトの MCP のまとめ以外に追加の行は必要ありません。

パス 4.g(Factory Droid)を選択した場合は、デフォルトの MCP のまとめ以外に追加の行は必要ありません。

手順 1 で sonarqube-cli を新規インストールした場合は、まとめの sonarqube-cli の行を sonarqube-cli: installed に置き換えます。

手順 1 で sonar update が失敗した場合は、まとめを調整します。sonarqube-cli の行を省略するか、CLI が更新されなかったことを記載し、ターミナルで sonar update を実行するよう提案します。

その他の手順で失敗した場合は、失敗したことを明確に記載し、修正方法を提案してください。

コメント