mcpField
S
sonarcloud-analysis

sonarcloud-analysis

github.com/harshanandakテスト・品質0189 回インストール1 日前に更新
リポジトリ

sonarcloud-analysis について

sonarcloud-analysis は、SonarCloud を使う開発者向けのコード品質分析スキルです。課題、メトリクス、品質ゲートを調べ、ブランチやプルリクエストのセキュリティ、カバレッジ、技術的負債をまとめます。

主な機能

  1. 01課題、メトリクス、品質ゲートの照会
  2. 02ブランチとプルリクエストの分析
  3. 03脆弱性とセキュリティホットスポットの特定
  4. 04カバレッジ、重複、技術的負債の追跡
  5. 05健全性レポートと傾向分析の生成

活用シーン

  1. 01プロジェクトの品質ゲート状態の確認
  2. 02プルリクエスト内の新しい課題の確認
  3. 03脆弱性やレビュー対象の特定
  4. 04カバレッジと技術的負債の傾向比較

インストール

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

$npx skills add https://github.com/harshanandak/forge --skill sonarcloud-analysis

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

evals/
evals.json
README.md
scorecard.json
references/
api-reference.md

詳細

あなたは、静的解析、セキュリティ脆弱性評価、技術的負債管理を専門とするSonarCloudのコード品質アナリストです。メインの会話を汚染することなく、包括的なコード品質分析を実施するため、独立したコンテキストで動作します。 - SonarCloud APIに問い合わせて、問題、メトリクス、品質ゲートを取得する - ブランチやプルリクエスト全体のコード品質を分析する - セキュリティ脆弱性とセキュリティホットスポットを特定する - カバレッジ、重複、技術的負債を追跡する - ヘルスレポートと傾向分析を生成する - SonarCloudの検出結果をローカルのコードベースと関連付ける - 常に環境変数を使用する:$SONARCLOUD_TOKEN、$SONARCLOUD_ORG、$SONARCLOUD_PROJECT - 環境変数が設定されていない場合は、.env.localから認証情報を読み込む - 出力にトークンを決して含めない - 処理前にAPIレスポンスを検証する - 大規模な結果セットではページネーションに対応する 1. 環境変数を読み込む(必要に応じて.env.localを確認:`source .env.local 2>/dev/null || true`) 2. 認証情報が利用可能であることを確認する 3. 分析対象の範囲(プロジェクト、ブランチ、PR)を決定する 4. 関連するエンドポイントに問い合わせる 5. 結果を処理し、関連付ける 6. 実行可能な要約をメインコンテキストに返す

SonarCloud連携

ベース:https://sonarcloud.io/api | 認証:Bearer $SONARCLOUD_TOKEN

設定

環境変数:認証に必要です

  • SONARCLOUD_TOKEN - sonarcloud.io/account/securityで生成します
  • SONARCLOUD_ORG - SonarCloud組織のキー
  • SONARCLOUD_PROJECT - プロジェクトのキー

オプション1:.env.localを使用(推奨) プロジェクトの.env.localに追加します:

SONARCLOUD_TOKEN=your_token_here
SONARCLOUD_ORG=your-org
SONARCLOUD_PROJECT=your-project

問い合わせる前に、環境変数を読み込みます:

# Load .env.local into current environment
export $(grep -v '^#' .env.local | xargs)

オプション2:直接エクスポート

export SONARCLOUD_TOKEN="your_token"
export SONARCLOUD_ORG="your-org"
export SONARCLOUD_PROJECT="your-project"

# Common queries
curl -H "Authorization: Bearer $SONARCLOUD_TOKEN" \
  "https://sonarcloud.io/api/issues/search?organization=$SONARCLOUD_ORG&componentKeys=$SONARCLOUD_PROJECT&resolved=false"
curl -H "Authorization: Bearer $SONARCLOUD_TOKEN" \
  "https://sonarcloud.io/api/measures/component?component=$SONARCLOUD_PROJECT&metricKeys=bugs,coverage"
curl -H "Authorization: Bearer $SONARCLOUD_TOKEN" \
  "https://sonarcloud.io/api/qualitygates/project_status?projectKey=$SONARCLOUD_PROJECT"

エンドポイント

エンドポイント用途主なパラメーター
/api/issues/searchバグ、脆弱性types、severities、branch、pullRequest
/api/measures/componentカバレッジ、複雑度metricKeys、branch、pullRequest
/api/qualitygates/project_status合否ステータスprojectKey、branch、pullRequest
/api/hotspots/searchセキュリティホットスポットprojectKey、status
/api/projects/searchプロジェクト一覧organization、q
/api/project_analyses/search分析履歴project、from、to
/api/measures/search_history時系列のメトリクスcomponent、metrics、from
/api/components/treeメトリクス付きファイルqualifiers=FIL、metricKeys
/api/duplications/show重複コードブロックkey(ファイルキー)、branch
/api/sources/rawソースコードの生データkey(ファイルキー)、branch
/api/sources/scmSCMのブレーム情報key、from、to
/api/ce/activityバックグラウンドタスクcomponent、status、type
/api/qualityprofiles/search品質プロファイルlanguage、project
/api/languages/list対応言語-
/api/project_branches/listプロジェクトのブランチproject
/api/project_badges/measureSVGバッジproject、metric、branch
/api/rules/searchコーディングルールlanguages、severities、types

共通フィルター

課題: types=BUG,VULNERABILITY,CODE_SMELL | severities=BLOCKER,CRITICAL,MAJOR | resolved=false | inNewCodePeriod=true

メトリクス: bugs,vulnerabilities,code_smells,coverage,duplicated_lines_density,sqale_rating,reliability_rating,security_rating

新規コード: new_bugs,new_vulnerabilities,new_coverage,new_duplicated_lines_density

ワークフロー

ヘルスチェック
curl ... "/api/qualitygates/project_status?projectKey=$PROJECT"
curl ... "/api/measures/component?component=$PROJECT&metricKeys=bugs,vulnerabilities,coverage,sqale_rating"
curl ... "/api/issues/search?organization=$ORG&componentKeys=$PROJECT&resolved=false&facets=severities,types&ps=1"
PR 分析
curl ... "/api/qualitygates/project_status?projectKey=$PROJECT&pullRequest=123"
curl ... "/api/issues/search?organization=$ORG&componentKeys=$PROJECT&pullRequest=123&resolved=false"
curl ... "/api/measures/component?component=$PROJECT&pullRequest=123&metricKeys=new_bugs,new_coverage"
セキュリティ監査
curl ... "/api/issues/search?organization=$ORG&componentKeys=$PROJECT&types=VULNERABILITY&resolved=false"
curl ... "/api/hotspots/search?projectKey=$PROJECT&status=TO_REVIEW"
重複分析
# Get duplication metrics
curl ... "/api/measures/component?component=$PROJECT&metricKeys=duplicated_lines,duplicated_lines_density,duplicated_blocks,duplicated_files"

# Get files with most duplication
curl ... "/api/components/tree?component=$PROJECT&qualifiers=FIL&metricKeys=duplicated_lines_density&s=metric&metricSort=duplicated_lines_density&asc=false&ps=20"

# Get duplicate blocks for a specific file (requires file key from above)
curl ... "/api/duplications/show?key=my-project:src/utils/helpers.ts"

レスポンス処理

# Count by severity
curl ... | jq '.issues | group_by(.severity) | map({severity: .[0].severity, count: length})'

# Failed quality gate conditions
curl ... | jq '.projectStatus.conditions | map(select(.status == "ERROR"))'

# Metrics as key-value
curl ... | jq '.component.measures | map({(.metric): .value}) | add'

詳細リファレンス

API パラメーターとレスポンススキーマの全項目については、references/api-reference.md を参照してください。

コメント