mcpField
S
sonarcloud-analysis

sonarcloud-analysis

github.com/harshanandak测试与质量0189 次安装1 天前更新
代码仓库

关于 sonarcloud-analysis

sonarcloud-analysis 是面向代码质量分析的技能,通过 SonarCloud API 检查问题、指标和质量门,并汇总分支及拉取请求的安全、覆盖率与技术债务信息。

主要功能

  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 集成

基础 URL: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/searchBug、漏洞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。

评论

支持 Markdown