关于 blast-radius
Blast Radius Analysis 用于评估代码改动的影响。有 gauntlet 图谱时使用图谱分析,也可回退到 sem 或手动追踪,并按风险整理受影响节点,包括测试缺口和安全问题。
主要功能
- 01使用代码图谱分析改动影响
- 02回退到 sem 或手动追踪
- 03按风险排列受影响节点
- 04识别受影响且缺少测试的函数
- 05展示总体风险与建议操作
适用场景
- 01合并代码改动前评估影响
- 02找出差异影响到的未测试函数
- 03优先审查涉及安全的改动
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ athola/ claude-night-market --skill blast-radius安装后在 Claude Code 中输入/blast-radius确认已加载。
详细介绍
影响范围分析
使用代码知识图谱分析当前代码更改的影响。
不要使用的情况
- 阅读更改的代码以查找缺陷(使用
pensive:bug-review) - 代码图谱缺失或已过时(使用
gauntlet:graph-build)
前置条件
此技能需要 gauntlet 插件提供图谱数据。检查该插件是否可用:
GRAPH_QUERY=$(find ~/.claude/plugins -name "graph_query.py" -path "*/gauntlet/*" 2>/dev/null | head -1)
如果未安装 gauntlet(GRAPH_QUERY 为空):
使用 git diff 和 grep 跟踪导入和调用点,改为手动分析影响。跳过图谱步骤,直接进入第 3 步(手动模式)。
如果已安装 gauntlet,但不存在 graph.db:
告知用户:“请先运行 /gauntlet-graph build。”
步骤
-
显示当前更改:运行
git diff --stat,向用户展示哪些文件发生了更改。 -
运行影响分析(需要 gauntlet):
python3 "$GRAPH_QUERY" \ --action impact --base-ref HEAD --depth 2回退方案 1(有 sem,无 gauntlet): 使用 sem 跨文件追踪依赖关系:
if command -v sem &>/dev/null; then sem impact --json <changed-file> fi这会追踪真实的函数级依赖关系,而不是匹配文件名。检测模式请参阅
leyline:sem-integration。回退方案 2(无 sem、无 gauntlet):使用 rg(或 grep)追踪更改函数的调用方:
# Prefer rg for speed; fall back to grep if command -v rg &>/dev/null; then git diff --name-only HEAD | while read f; do stem="${f%.*}"; stem="${stem##*/}" [ -z "$stem" ] && continue # skip dotfiles (.gitignore etc.) rg -l "$stem" . 2>/dev/null done | sort -u else git diff --name-only HEAD | while read f; do stem="${f%.*}"; stem="${stem##*/}" [ -z "$stem" ] && continue # skip dotfiles (.gitignore etc.) grep -rl "$stem" . 2>/dev/null done | sort -u fi注意:此操作会搜索所有文件类型。对于仅包含 Python 的项目,可在
rg中添加--type py,或在grep中添加--include="*.py",以减少误报。 -
按优先级顺序显示结果:
将输出格式设为表格:
Risk | Node | File | Anchor | Reason 0.85 | auth.py::verify_token | auth.py:45 | `def verify_token(token):` | untested, security 0.62 | db.py::execute_query | db.py:112 | `cursor.execute(query, params)` | high fan-in 0.41 | api.py::handle_request | api.py:78 | `def handle_request(req):` | flow participantAnchor列是所引用行中的原文。审查者无需重新运行工具,即可据此确认结果。 -
突出显示未经测试的函数:列出所有缺少测试覆盖(没有 TESTED_BY 边)的受影响函数。
-
显示总体风险:根据最高风险评分显示总体风险级别(低/中/高)。
-
建议操作:
- 对于高风险节点:“请考虑在合并前添加测试”
- 对于安全敏感节点:“请仔细审查身份验证和授权逻辑”
- 对于高扇入节点:“此处的更改会影响许多调用方;请验证向后兼容性”
验证结果是否有依据(blast-radius:findings-verified)
将结果写入 .review/findings.json,运行引用验证器(Skill(imbue:review-core) 第 5 步),并删除验证器拒绝的结果,或将其标记为 UNVERIFIED。
退出标准
- 结果表列出每个受影响节点,并包含
File(file:line)和原文Anchor列。 - 显示根据最高风险评分得出的总体风险级别(低/中/高)。
- 每条报告的结果都包含经
citation_verifier.py确认的Location+ 原文Anchor(退出码为0),否则应删除未验证的结果或将其标记为UNVERIFIED。
风险评分模型
五个加权因素(总和上限为 1.0):
| 因素 | 权重 | 含义 |
|---|---|---|
| 测试缺口 | 0.30 | 没有测试覆盖 |
| 安全性 | 0.20 | 身份验证/加密/SQL 关键词 |
| 流程参与度 | 0.25 | 属于执行流程的一部分 |
| 跨模块调用 | 0.15 | 被其他模块调用 |
| 调用方数量 | 0.10 | 高扇入函数 |