SonarQube CLIがエージェント開発に多層的な検証をもたらす

9 読了時間

Satinder Khasriya photo

Satinder Khasriya

製品マーケティングマネージャー(コードセキュリティ担当)

Killian Carlsen-Phelan photo

Killian Carlsen-Phelan

開発者向けコンテンツエンジニア

AIコーディングエージェントは、ますます多くのプロダクションコードを生成しています。理想的なエージェントループは、生成、チェック、修正を機械の速度で行い、手動のワークフローよりも速くコードベース全体でコードを生成および修正しますが、現実はそうではありません。制約はもはやボリュームではなく、信頼です。ペースに追いつくコード検証がなければ、速度の向上は後にセキュリティリスク、ガバナンスのギャップ、再作業として表面化します。検証は必須であり、オプションではありません。これをスキップすると、AI生成の欠陥がコードベースに入り込み、停止やセキュリティ侵害を引き起こします。

長年にわたり、SonarはCI/CDにおけるコード品質セキュリティの標準となっています。SonarQube CLIは、その標準をエージェントが動作するすべての環境に拡張します:ターミナル、CIパイプライン、gitフック、AIコーディングエージェント。1回のインストール。1回の認証ステップ。最も重要なSonarQubeの機能—秘密検出、コード品質とセキュリティ分析、依存関係リスクスキャン—が、エージェントが必要とする速度で単一のコマンドラインツールを通じて利用可能になりました。

CLIは、エージェント時代の多層コード検証のために特別に設計されています。秘密スキャン、マルチファイル品質とセキュリティ分析、依存関係リスク検出、問題クエリ、およびAIエージェント統合は、既存のSonarQube CloudまたはSonarQube Serverデプロイメントに接続する単一のバイナリを通じて実行されます。

今日、SonarQube CLIは一般に利用可能です。

エージェント時代におけるCLIの重要性

コマンドラインツールは自動化の自然なインターフェースです:スクリプト、パイプライン、gitフックはすべてターミナルを通じて実行されます。AIエージェントがコーディング作業の多くを引き受けるようになったため、CLIはさらに中心的な存在となっています:それはエージェントがプログラム的に作業を計画、実行、検証するためのインターフェースです。エージェントはサードパーティのソフトウェア機能に構造化されたスクリプト可能なアクセスを必要とします。CLIはそれを提供する最も直接的な方法です。

SonarQube CLIはそのエージェントループにSonarQubeを組み込みます。エージェントはコード生成時にそれを呼び出し、問題を検証し、秘密をスキャンし、依存関係をチェックし、プロジェクトの状態をクエリします。すべてのコマンドでJSON出力が利用可能です。TOON(トークン指向オブジェクト表記)はLLM消費に最適化されており、エージェントは発見を解析し、後処理なしで行動できます。認証はOSのキーチェーンを使用するため、トークンはプレーンファイルに保存されず、以降のすべてのコマンドで保存された資格情報が自動的に再利用されます。

エージェント中心の開発サイクル

Sonarのエージェント中心の開発サイクル(AC/DC)は、ソフトウェア配信の新しいアーキテクチャのためのフレームワークです。エージェントは継続的にコードを生成します。彼らを指導する人々は基準を設定し、出力をレビューし、次のタスクを指示します。コード検証はすべてのステップの間で実行されます。

AC/DCは3つの柱を定義します:

  1. ガイドは、タスクが始まる前にエージェントに必要なアーキテクチャのコンテキストを提供します:コードベースの構造、意図されたアーキテクチャ、コーディングガイドライン、コンポーネントの依存関係を提供し、エージェントが既存のシステムに適合するコードを生成するようにします。
  2. 検証は、エージェントが生成したものに対して決定論的なコード分析を実行します:秘密、コード品質、セキュリティ、依存関係リスクをコードを生成したモデルとは独立してチェックします。
  3. 解決は、発見を解決することでループを閉じます:問題を移行し、AI支援の修正を適用し、コードベースを既知の良好な状態に保ちます。

SonarQube CLIは、ターミナルからこれら3つの柱をすべて接続するインターフェースです。

AC/DCが機能するためには、検証は生成と同じくらい速く自動的でなければなりません。それはエージェントが存在する場所に存在しなければなりません:ターミナル、フック、オーケストレーションレイヤーに。

SonarQube CLIは、その標準をエージェントのワークフローに持ち込みます。一度統合されると、エージェントがファイルを読むときにSonarQubeがスキャンし、エージェントが変更を提案するときにSonarQubeが評価し、エージェントがコードベースに何が問題かをクエリするときにSonarQubeが答えます。CLIは一度設定され、コマンドの出力がエージェントを反復させます。

エージェントワークフローのための多層検証

エージェント規模での信頼できる検証には、単一のゲートではなく、複数の独立したチェックが必要です。単一の分析ではすべてをキャッチできません。SonarQube CLIは、Sonarの多層コード検証をエージェントループに持ち込みます:秘密検出、コード品質とセキュリティ分析、依存関係リスクスキャンが、エージェントが個別に呼び出したり、チェーンでつなげたりできる構成可能なステップとして実行されます。

各レイヤーは異なる方法論を使用します:

  • 秘密エンジンは、ファイルがエージェントのコンテキストウィンドウに入る前にハードコードされた資格情報、APIキー、トークンをキャッチし、450以上のパターンを248のクラウドサービスでカバーします。
  • SonarQube Serverを使用しているチームの場合、CLIはサーバーで定義されたカスタム秘密ルールテンプレートを自動的にダウンロードして適用し、毎回実行時に更新するため、組織固有の検出ルールが追加の設定なしでエージェント環境に伝播します。
  • SonarQubeエージェンティック分析は、SonarQubeのサーバーサイドルールを使用して変更されたファイルのコード品質とセキュリティを評価します(現在SonarQube Cloudで利用可能、SonarQube Serverへの導入予定)。
  • 依存関係リスク分析は、SonarQubeの脆弱性データベースに対してマニフェストをチェックします。

この場合、検証レイヤーはコードを生成したモデルとは独立していることが[重要]です。エージェントは自分の出力をチェックすべきではありません。AIにAIをレビューさせることは十分ではなく、非決定論的システムは自分自身を信頼できる監査を行うことができません。SonarQube CLIは、明確な職務分離を持つ外部の決定論的システムです:同じ入力、同じ出力、毎回、組織の既存の品質権限に接続されています。ファイルごとのサブ100msのレイテンシーにより、フックはエージェントの実行ループで見えなくなり、コード検証は生成とペースを合わせ、エージェントを遅らせることはありません。5%未満の誤検知率により、エージェントは本当に発見がある場合にのみ中断されます。

エージェントはSonarQube CLIで何ができるか?

SonarQube CLI: Code Analysis and AI Agent Setup From The Terminal

SonarQube CLIの分析およびクエリコマンドは、プログラム的に呼び出されるように設計されています:フック、パイプライン、エージェントワークフローから。ワークフローは自然なライフサイクルに従います—発見、行動、検証、解決。

発見:開始前にコードベースを理解する

sonar list projectsは、名前またはキーでアクセス可能なSonarQubeプロジェクトを見つけ、エージェントにマルチプロジェクト組織の出発点を提供します。sonar list issues --format toonは、オープンな問題、重大度の分布、PR固有の発見に関する構造化されたブリーフィングを提供し、LLMの取り込みに最適化された形式で提供します。エージェントは、コードベースの状況を把握した上でタスクを開始します。

行動:リスクが発生したときにブロックする

sonar integrate claudeまたはsonar integrate copilotを介して統合されると、秘密スキャンフックがエージェントの実行ループ内で自動的に発火します—ファイルが読み取られたり書き込まれたりする前、プロンプトが送信される前に—sonar-secretsエンジンを使用して。エージェントは、フックとは独立して、任意のファイル、ディレクトリ、またはstdinでsonar analyze secretsを直接呼び出すこともできます。生成されたコンテンツをディスクに書き込む前にsonar analyze secrets --stdinを通じてパイプすることで、秘密がファイルシステムに触れる前にキャッチします。

sonar analyze dependency-risks -p <project>は、生成されたコードに入る前に脆弱、悪意のある、ライセンス違反のパッケージを表面化します。どちらもAIモデルとは独立して動作します:モデルの判断はなく、同じ入力が毎回同じ出力を生成します。

検証:変更を提案する前に出力を評価する

sonar analyzeは、未コミットの作業に対して秘密スキャンとサーバーサイドのSonarQubeエージェンティック分析を実行します。sonar analyze agentic --stagedは、分析をステージングされた変更のみに限定し、自然なプリコミットステップとなります。特定のファイルの詳細な分析のために、sonar analyze agenticはサーバーサイドのSonarQubeエージェンティック分析を実行し、エージェントが即座に行動できる詳細な品質とセキュリティの発見を返します。

解決:人間の介入なしで発見に対処する

sonar remediateは、ターミナルから直接、対象となる問題に対してAI支援の修正をトリガーします。エージェントパイプラインでの非対話的な使用のために最大20の問題キーを--issuesで渡すか、対話的に実行して問題を選択します。これは現在SonarQube Cloudで利用可能で、SonarQube Serverへの導入が予定されています。

組み込みコマンドを超えた自動化

sonar apiは、エージェントにSonarQube Web APIエンドポイントへの認証済みアクセスを提供し、ステータスの移行、発見の受け入れまたは解決、コメントのプログラム的な追加を行います。

依存関係リスク分析

エージェントは依存関係を引き込みます。彼らは承認されたリスト、セキュリティポリシー、またはパッケージが先週マルウェアとしてフラグ付けされたかどうかを知りません。ギャップは開示ではなく、ワークフローです。

$ sonar analyze dependency-risks -p my-project --format table
[VULN] lodash@4.17.20 · CVE-2021-23337 · CVSS 7.2 · Fix: upgrade to 4.17.21
[VULN] axios@0.21.1   · CVE-2021-3749  · CVSS 7.5 · Fix: upgrade to 0.21.2
[OK]   react@18.2.0   · No known vulnerabilities
Exit code: 51

Sonarコンテキスト拡張

エージェントは、作業しているコードベースについてステートレスです。彼らはアーキテクチャがどのように構成されているか、チームのコーディングガイドラインが何であるか、または変更しようとしているコンポーネントがシステムの他の部分とどのように関連しているかを知りません。その理解がなければ、エージェントは機能的には正しいがアーキテクチャ的には一貫性のないコードを生成し、既存の慣習と矛盾するパターンを導入し、コンポーネント間に意図しない結合を作成し、すでに他の場所に存在するロジックを重複させます。

Sonarコンテキスト拡張は、これをソースで解決します。コーディングセッションが始まる前に、コードベースのアーキテクチャをナビゲートし、コンポーネントの関係と依存関係のグラフを構築し、チームのコーディングガイドラインを表面化し、すべてをエージェントのコンテキストウィンドウに直接注入します。エージェントは、渡されたファイルだけでなく、操作しているシステムの作業理解を持ってタスクを開始します。SonarQube CLIは、sonar contextを通じてSonarコンテキスト拡張を表面化し、コマンドをコンテキスト拡張エンジンに渡します。

# Get coding guidelines before a session
sonar context guidelines get --categories "error-handling,security"

# Explore the architecture of a module
sonar context architecture get-current --ecosystem java

# Find code by declaration pattern
sonar context navigation search-signatures --pattern ".*Repository" --limit 5

エージェントフック

sonar integrate claudeは、Claude Codeの設定に3つのフックをインストールします:エージェントがファイルを読む前に秘密をスキャンするPreToolUseフック、LLMプロバイダーにプロンプトが到達する前にプロンプトをスキャンするUserPromptSubmitフック、およびエージェントがファイルを編集または書き込んだ後にSonarQubeエージェンティック分析を実行するPostToolUseフックです。sonar integrate copilotは、秘密スキャンのためのPreToolUseフックをインストールし、Copilotの指示と設定システムを通じてSonarQubeエージェンティック分析とMCPを構成します。

どちらもsonar-secretsバイナリを使用し、モデルとは独立した決定論的エンジンであり、検出時にブロック信号を返します。これは独立したコード検証です:エージェントが自分の作業をチェックするのではなく、独自の方法論を持つ別のシステムが、毎回、すべてのファイルで実行され、すべての発見の完全に監査可能な記録を持っています。

公開リポジトリで発見された漏洩した秘密を修正するまでの中央値:94日(Verizon 2025 DBIR)。秘密フックは、時計が始まる前に漏洩を防ぎます。

SonarQube CLIの開始方法

SonarQube CLI: Code Analysis and AI Agent Setup From The Terminal

一度だけ認証—トークンはOSキーチェーンに保存され、プレーンファイルには保存されません

# Install (Linux/macOS)
curl -o- https://raw.githubusercontent.com/SonarSource/sonarqube-cli/refs/heads/master/user-scripts/install.sh | bash

# Install (Windows PowerShell)
irm https://raw.githubusercontent.com/SonarSource/sonarqube-cli/refs/heads/master/user-scripts/install.ps1 | iex

# Authenticate once—token stored in OS keychain, never in plain files
sonar auth login

# Wire agents into the verification loop
sonar integrate claude -p <project>          # Claude Code: secrets hooks + Agentic Analysis + MCP + Context Augmentation
sonar integrate claude -g                    # Or deploy globally across all projects
sonar integrate copilot                      # GitHub Copilot: secrets hooks + Agentic Analysis + MCP + Context Augmentation
sonar integrate git --hook pre-commit        # Block secrets at every commit
sonar integrate git --global                 # Or deploy the hook across all repositories

# Agents call these continuously
sonar analyze agentic --file <path>          # Inner-loop quality gate
sonar analyze dependency-risks -p <project>  # Check dependencies for risks
sonar list projects                          # Discover accessible projects
sonar list issues -p <project> --format toon # Brief the agent before a task
sonar context guidelines get                 # Prime the agent with coding guidelines

# Keep the CLI current
sonar self-update                            # No package manager required

完全なドキュメントとコマンドリファレンス:https://www.sonarsource.com/sonarqube/cli/

コードの1行1行に信頼を組み込む

SonarQubeをワークフローに統合し、今すぐ脆弱性の発見を始めましょう。

Rating image

4.6 / 5