mcpField
S
sonar-analyze

sonar-analyze

github.com/sonarsourceその他11439 回インストール今日更新
リポジトリ

sonar-analyze について

sonar-analyzeは、SonarQubeツールで単一のコードファイルを分析するスキルです。コーディングエージェントが利用可能なMCP分析ツールまたは案内されたCLI代替手段を選び、行番号と深刻度別に結果を示します。

主な機能

  1. 01一度に1ファイルを分析
  2. 02SonarQube MCP分析ツールを利用
  3. 03Vortex分析用のCLI代替手段
  4. 04テストまたは本番コードの範囲を判定
  5. 05行番号と深刻度別に結果を整理

活用シーン

  1. 01最近編集したソースファイルの確認
  2. 02テストファイルのコード問題の確認
  3. 03MCPツールが使えない場合のCLI分析

MCP 対応

SonarQube MCPサーバーの設定が必要で、利用可能な場合は高度なコード分析またはファイルリスト分析ツールを使います。どちらも使えない場合のCLI代替手段も記載されています。

インストール

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

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

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

詳細

SonarQube — コード解析

SonarQube MCP Server を使用して、コードの品質とセキュリティに関する問題を解析します。

使用方法

sonar-analyze                        # analyze the file currently in context
sonar-analyze src/auth/login.py      # analyze a specific file

前提条件

このスキルを使用するには、SonarQube MCP Server が設定済みで、mcp__sonarqube__run_advanced_code_analysis または mcp__sonarqube__analyze_file_list のいずれかのツールがセッションで利用できる必要があります。

先に進む前に、これらのツールの少なくとも 1 つにアクセスできることを確認してください。どちらも利用できない場合は、諦める前にステップ 3 の CLI フォールバックを試してください。他の CLI コマンドを作り上げないでください(例:sonar mcp call は存在しません)。

CLI フォールバックも失敗するか、適用できない場合は、原因を絞り込んでください。このエージェントの設定で sonarqube MCP サーバーが有効になっているか確認します。

  • 有効化されていない/登録されていない → sonar-integrate スキルの実行を推奨します。
  • 有効だが、ツールを引き続き利用できない → 設定は正しいものの、サーバーの起動に失敗しています。最も多い原因は、コンテナランタイムが起動していないことです。MCP サーバーは sonar run mcp を介して Docker/Podman/Nerdctl 内で起動するため、デーモンが停止していると、サーバーが正しく設定されていてもツールは利用できません。どちらの原因か確認するため、docker ps を自分で実行し(失敗する場合は podman ps/nerdctl ps を試してください)、エラーが出た場合はランタイムが停止しています。ユーザーが起動した後、エージェントセッションの再起動を依頼する前に、同じコマンドが成功することを確認してください。

いずれの場合も、ユーザーに次のように表示してください。

SonarQube MCP Server に接続できません。

考えられる原因:

  • MCP サーバーが登録されていない — sonar-integrate スキルを呼び出して SonarQube MCP Server を設定し、その後エージェントセッションを再起動してください
  • コンテナランタイムが起動していない — SonarQube MCP Server はコンテナ(Docker、Podman、または Nerdctl)内で動作します。コンテナランタイムを起動してから、エージェントセッションを再起動してください
  • 認証情報が設定されていない — sonar-integrate スキルを呼び出してください
  • プロジェクトキーがないか無効 — 必要に応じて明示的なキーを渡し、sonar-project.properties を確認するか、このプロジェクトで sonar-integrate スキルを再実行してください

次に、今すぐ sonar-integrate スキルを実行するか、ユーザーに「はい/いいえ」で確認してください。スキルの内容を簡潔に説明します。ユーザーのマシン上の SonarQube のセットアップを確認し、sonarqube-cli をインストールまたは更新して認証を検証したうえで、SonarQube MCP サーバーとシークレットスキャン用フックを含む、このエージェントの統合を再設定します。ユーザーが了承した場合は、自分で sonar-integrate スキルを呼び出し、このセッション内で最後まで実行してください。その後、新しい MCP ツールを利用できるように、コンテナランタイム(Docker、Podman、または Nerdctl)が起動していることを確認し、エージェントセッションを再起動するようユーザーに依頼してください。ユーザーが断った場合は、そこで終了してください。

手順

ステップ 1:解析対象を特定する

どちらの解析ツールも、一度に 1 ファイルを処理します。単一のファイルパスを特定してください。

  • ユーザーがファイルパスを指定している場合は、それを使用します。
  • ファイルパスが指定されていない場合は、最近言及または編集されたファイルがないか、現在の会話の文脈を確認します。
  • 何も明確でない場合は、次のように尋ねます。「どのファイルを解析しますか?」

ディレクトリは入力として受け付けないでください。ユーザーがディレクトリを指定した場合は、単一のファイルを指定するよう依頼してください。

ステップ 2:ファイルを読み、スコープを判断する
  1. ファイルの全内容を読み取ります。これは、フォールバックとして run_advanced_code_analysis の fileContent パラメーターを使用する場合にのみ必要です(ステップ 3 を参照)。
  2. ファイルのスコープを "TEST" または "MAIN" に決定します。ファイルパスからスコープを推測します。たとえば、ファイルパスに test、spec、または __tests__ が含まれている場合は、"TEST" スコープである可能性が高いです。
ステップ 3:適切な分析ツールを呼び出す

sonar-integrate スキルを実行した後、SonarQube MCP Server では、このワークスペースのデフォルトプロジェクトが設定されていることがよくあります。そのため、projectKey は不要な場合があります。ツールのスキーマで必須の場合、またはユーザーが別のプロジェクトを指定した場合にのみ渡してください。

接続先の組織が Vortex 分析の対象であるかどうかによって、利用できるツールが異なります。

まず mcp__sonarqube__run_advanced_code_analysis を試してください(組織が Vortex 分析の対象である場合に利用可能です)。

呼び出す前に、git branch --show-current を使って現在のブランチ名を確認してください。git を利用できない場合は、代わりに main を使用してください。

次の値を指定して呼び出します。

  • projectKey — ツールで必須の場合を除き省略してください(通常、初期 MCP 設定でデフォルトプロジェクトが指定されています)。必須の場合、ユーザーの引数に値があればその値を使用し、なければリポジトリのルートにある sonar-project.properties の sonar.projectKey を使用します
  • branchName — 確認したブランチ名
  • filePath — プロジェクトからの相対ファイルパス(例:src/auth/login.py)
  • fileContent — ファイルの全内容。ツールで必須の場合のみ渡してください(MCP サーバーにマウントがある場合はファイルを直接読み取るため、このパラメーターは不要です)
  • fileScope — ["TEST"] または ["MAIN"]

このツールを利用できない場合は、mcp__sonarqube__analyze_file_list にフォールバックしてください(このセッションにブリッジ接続された、実行中の SonarQube for IDE インスタンスが必要です)。

  • file_absolute_paths — ファイルの絶対パスを含む配列(例:["/home/user/project/src/auth/login.py"])。ステップ 1 で見つかったファイルパスから解決します

どちらの MCP ツールも利用できない場合は、CLI の Vortex 分析にフォールバックしてください。

sonar analyze agentic --file <file-path> [--file <other-file-path> ...] --format json [--branch <branch-name>] [-p <project-key>]

run_advanced_code_analysis と同じバックエンドを使用します(繰り返し指定できる --file は複数ファイルにも対応します)。また、analyze_file_list の実用的な代替手段でもあります。直接対応する CLI はありませんが、同じ目的を達成できます。

Vortex 分析の対象となる組織が必要です。組織が対象外の場合、または sonar がインストールされていないか認証されていない場合は、推測で追加のコマンドを提示せず、「前提条件」に記載された標準メッセージを表示してください。

ステップ 4:結果を整形する

問題が見つかった場合は、行番号順に並べた表で提示します。

## SonarQube Analysis — `src/auth/login.py`

Found **3 issue(s)**:

| Line | Severity  | Rule         | Message                                               |
| ---- | --------- | ------------ | ----------------------------------------------------- |
| 12   | 🔴 Blocker | python:S2077 | Make sure that executing this SQL query is safe here. |
| 34   | 🟠 Major   | python:S1481 | Remove the unused local variable "token".             |
| 67   | 🟡 Minor   | python:S1135 | Complete the task associated to this "TODO" comment.  |

重大度アイコン(ラベルはサーバーのバージョンによって異なります)。

  • 🔴 ブロッカー
  • 🟠 クリティカル/高
  • 🟡 重大/中
  • 🔵 軽微/低
  • ⚪ 情報

問題が見つからなかった場合:

## SonarQube Analysis — `src/auth/login.py`

✅ No issues found.
ステップ 5:次のステップ

結果の後には、必ず次の内容を追加してください。

  • 問題が見つかった場合:"特定の問題を修正するには、<rule> <file>:<line> を指定して sonar-fix-issue スキルを呼び出してください。すべて修正するよう依頼することもできます。"
  • ユーザーが別のファイルを分析したい場合:ファイルパスを指定して sonar-analyze スキルを呼び出すよう伝えてください。

コメント