0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SonarQube MCP Serverの機能一覧 - 静的コード解析

0
Last updated at Posted at 2025-12-15

今回は、コード品質管理のデファクトスタンダードである SonarQube を、MCP経由で操作できる 「SonarQube MCP Server」 の機能(Tools)の一つ、静的コード解析 について解説します。

SonarScanner、SonarQube、IDEを設定しなくても、SonarQube MCPサーバ単体でも実はコードも静的解析を実施することも可能です。ただ、本ツールの静的解析は、「手軽さ」と「スピード」 に重点を置いています。 SonarQube (SonarScanner) のような、高度なデータフロー解析や複雑なセキュリティ脆弱性の深掘りまでは行いません。

SonarQube MCP Serverの機能一覧

まずは、提供されている主なツール(Tools)の全容をテーブルでまとめました。これを眺めるだけで、何ができるか概略がつかめるはずです。

SonarQube MCPサーバーのセットアップなどは ここをご参考ください。

No. 機能 内容・役割
1 静的コード解析 バグ、脆弱性、コードスメル(保守性を下げるコード)を自動的に検出します。
2 品質ゲート コード品質の基準(例:「重大な脆弱性が0件」)を定義し、クリアしているか自動判定します。CI/CDに組み込むことで、低品質なコードのマージを未然に防ぎます。
3 課題管理 検出された問題を一覧化し、開発者への割り当て、ステータス変更(修正済み、誤検知など)、コメント追加などを行えます。
4 ダッシュボードと可視化 プロジェクト全体の品質を概観できます。カバレッジ、重複、複雑度などのメトリクスをグラフで可視化します。
5 多言語対応 Java, C#, Python, JavaScript, TypeScriptなど主要な言語に対応しています。(プラグインでの拡張も可能)
6 SCM連携 GitやSubversionと連携し、**「誰が・いつ」**問題のあるコードをコミットしたかを特定・追跡できます。
7 拡張性 プラグインを追加することで、新しい言語のサポート、ルールの追加、外部ツールとの連携などが可能です。
8 Web APIとWebhook APIやWebhookを通じて、Jenkins, GitLab CI, Slackなどの外部システムと連携する機能を提供します。

静的コード解析

開発の基本となる「静的コード解析」機能です。これは、プログラムを実行することなく、ソースコードを解析してバグや保守性の低い記述(コードスメル)を自動的に検出する機能です。

例えば、開発者が以下のようなPythonコードを書いたとします。一見動くように見えますが、いくつか問題が含まれています。

import json  # 【1】使われていないインポート

def login_user(username, password):
    # 【2】ハードコードされた認証情報(セキュリティリスク)
    if username == "admin" and password == "SuperSecret123":
        print("Login successful")
        return True
    else:
        return False

def calculate_area(radius):
    pi = 3.14
    # 【3】typoによるバグの可能性(未定義変数の参照など)
    return pii * radius * radius

入力Prompt例

@test.py に対して静的解析をし、結果をJSONにまとめて

出力例

    1 {
    2   "file": "test.py",
    3   "issues": [
    4     {
    5       "id": "un_used_import",
    6       "severity": "info",
    7       "message": "The 'json' module is imported but not used. Consider removing it for cleaner code.",
    8       "line": 1,
    9       "code_snippet": "import json  # 【1】使われていないインポート"
   10     },
   11     {
   12       "id": "hardcoded_credentials",
   13       "severity": "critical",
   14       "message": "Hardcoded credentials detected. 'admin' and 'SuperSecret123' are directly present in the code, posing a significant security risk. Use environment variables, configuration files, or a secure secrets management system.",
   15       "line": 4,
   16       "code_snippet": "    if username == \"admin\" and password == \"SuperSecret123\":"
   17     },
   18     {
   19       "id": "typo_bug",
   20       "severity": "major",
   21       "message": "Typo detected: 'pii' is used instead of 'pi'. This will result in a NameError as 'pii' is not defined. Change 'pii' to 'pi'.",
   22       "line": 10,
   23       "code_snippet": "    return pii * radius * radius"
   24     }
   25   ]
   26 }

このように、「どこに」「どんな問題があり」「どう修正すべきか」 のコンテキスト情報をピンポイントで指摘してくれるため、レビューの手間を大幅に削減できます。
また、対話形式で教えてくれるため、経験の浅いメンバーでも納得感を持って修正作業に入ることができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?