Docker MCP Toolkit と Gateway を介して SonarQube を使用して Copilot を強化する

AI 副操縦士とコード生成ツールの時代では、生産性は急上昇していますが、安全でない、テストされていない、または乱雑なコードが本番環境に滑り込むリスクも高まっています。脆弱性、バグ、または悪い慣行が導入されないようにするにはどうすればよいでしょうか? 

これらの懸念に対処するために広く採用されているツールが SonarQube です。バグ、テストカバレッジ、コードの臭い、セキュリティの問題についてコードを分析するための豊富なルールと品質ゲートのセットを提供します。しかし、フィードバックループという共通の問題点があります。IDE と SonarQube の結果を切り替える必要があることが多く、フォーカスが途切れ、反復が遅くなります。

AI エージェントが、タブを切り替えたりフローを中断したりすることなく、コード品質の問題を IDE で表示した瞬間に確認できるとしたらどうでしょうか?この投稿では、Sonar MCP サーバーと Docker MCP Toolkit を使用して SonarQube 分析を IDE に直接統合することで、開発ワークフローを強化することに焦点を当てます。

Docker MCP Toolkit からの Sonar MCP の使用開始

解決策はここにあります: Sonar MCP サーバー – SonarQube (クラウドまたはサーバー) と統合され、AI エージェント (GitHub Copilot など) が IDE からコード品質の指標と洞察に直接アクセスできるようにするモデル コンテキスト プロトコル (MCP) サーバー。

Sonar MCP を簡単かつ安全に有効にするために、Docker MCP Toolkit を使用します。SonarQubeを含む 150 を超えるMCPサーバーのカタログを提供します。

MCP サーバーと MCP Toolkit がどのように機能するかについては詳しく説明しませんが (以下のリンクを確認してください)、代わりに、Java プロジェクトで Sonar MCP で Docker MCP Toolkit を使用する実践的な例を説明します。

MCP カタログとツールキットに関する詳細記事:

デモ・プロジェクト: Testcontainersを使用したJavaローカル開発

デモでは、製品カタログを管理するためのSpring BootベースのマイクロサービスであるJava Local Development Testcontainers Workshopプロジェクトを使用し、APIとTestcontainersベースのテストを完備します。

GitHubリポジトリ: GannaChernyshova / java-testcontainers-local-development

MCP 統合に入る前に、Java プロジェクトが SonarQube 分析用にすでに設定されていることを確認してください。このデモプロジェクトには、次のものが含まれます。

  • JaCoCoプラグインを使用してテストカバレッジデータを収集する
  • コードスキャン用のSonarQube Mavenプラグインの追加

また、SonarQube Cloudで対応するプロジェクトを作成し、GitHubリポジトリにリンクしました。SonarQube のセットアップの詳細は、この投稿の範囲外ですが、ガイダンスが必要な場合は、 SonarQube の公式ドキュメントを確認してください。

ステップ 1: Docker Desktop 経由で Sonar MCP サーバーを起動する

Docker Desktop で利用できる Docker MCP Toolkit を使用すると、手動セットアップや複雑な依存関係を心配することなく、事前にキュレーションされたカタログから MCP サーバーを迅速かつ安全にスピンアップできます。 

開始するには:

  1. Docker Desktop を開き、[MCP Toolkit] タブに移動します。
  2. カタログを参照して、SonarQubeを見つけてください。
  3. SonarQube URL、組織、アクセストークンを使用して設定します。
  4. [開始] をクリックして MCP サーバーを起動します。
Docker Desktop MCP Toolkit の SonarQube MCP 設定

図 1: Docker Desktop MCP ToolkitのSonarQube MCP設定

これで、MCP サーバーが稼働しているはずです。

ステップ 2: Sonar MCP を GitHub Copilot に接続する (IntelliJ)

IntelliJ では GitHub Copilot を使用し、エージェント モードと MCP の統合をサポートするようになりました。GitHub からの詳細な手順は次のとおりです : モデル コンテキスト プロトコル (MCP) を使用して Copilot Chat を拡張する方法。

  1. Copilot 設定を開きます。
  2. 次の方法でmcp.jsonファイルを編集または作成します。
{
   "servers": {
       "MCP_DOCKER": {
           "command": "docker",
           "args": [
               "mcp",
               "gateway",
               "run"
           ],
           "type": "stdio"
       }
   }
}

この構成では、MCP Toolkit からクライアントまたはエージェントに MCP サーバーを接続する、エージェントと外部ツール間の安全な適用ポイントである Docker MCP ゲートウェイを有効にします。  

Copilot Chat でエージェント モードに切り替えると、接続された MCP サーバー (この場合は Sonar MCP ツール) から使用できるツールのリストが表示されます。

SonarQube MCP サーバーが提供するツール

図 2: SonarQube MCP サーバが提供するツール

ステップ 3: コードの分析と改善

プロジェクトをスキャンしてみましょう。

mvn clean verify sonar:sonar

この場合、デフォルトの品質ゲートが通過しました。ただし、セキュリティ問題 4 、保守性と 72性がほとんどありません。1%のテストカバレッジにフラグが立てられ、改善の余地が残されています。

SonarQubeの初期スキャンの概要

図 3: SonarQube の初期スキャンの概要

Copilot + Sonar MCP を導入する時が来ました!

Copilot Chat に、コンテキストを切り替えることなく、問題のリスト、修正の提案、不足しているテストの追加、イテレーションの高速化を依頼できるようになりました。

数回の反復を経て、エージェントは正常に次のことを行います。

  • 未解決の問題が検出され、修正が提案され、適用されました。
GitHub Copilot Agent は、SonarQube によって報告された問題を検出して修正します 

図 4: GitHub Copilot Agent が SonarQube によって報告された問題を検出して修正する 

  • 発見されたコード行のソナーレポートに基づくテストカバレッジの改善: 
GitHub Copilot Agent は、SonarQube レポートで検出された未検出のコードのテストを記述します 

図 5: GitHub Copilot Agent は、SonarQube レポートで検出された未検出のコードのテストを記述します 

  • セキュリティの問題が解決され、コードの保守性が向上しました。
GitHub Copilot Agent は、SonarQube のオープン セキュリティと保守性の問題に基づいて修正プログラムを実装します

図 6: GitHub Copilot Agent は、SonarQube のオープン セキュリティと保守性の問題に基づいて修正を実装しています

その結果、最終的なSonarQubeスキャンは、すべての分析カテゴリでA評価を示し、テストカバレッジは 15%以上増加し、 91に達しました。1%。

Copilot を使用して行われた修正後の SonarQube スキャン結果

図 7: Copilot を使用して修正された後の SonarQube スキャン結果

結論

生成 AI ツールの急速な台頭により、開発者はこれまで以上に迅速に行動できるようになりました。しかし、そのスピードには責任が伴います。Sonar MCP + Docker MCP Toolkit の組み合わせにより、AI コパイロットはセキュリティと品質を意識したコーディング パートナーに変わります。コードをより速く書くだけでなく、まずより良いコードを書くことが大切です。 

詳細情報

投稿カテゴリ

関連記事