SuperAPI AI 工具集

error-handling-audit

测试与质量

查看项目

更新于 10-16 08:20

技能介绍

Error Handling Audit 是一个专注于代码错误处理质量的审计技能,属于 Claude Code 技能,无需注册,也不需要 MCP,可在任意代码仓库中运行。

用途 该技能用于发现代码中“失败被静默隐藏”的地方,即错误被吞掉、未处理或未被正确上报的情况。它可以帮助开发者在合并代码前识别潜在的错误处理缺陷。

主要能力 技能会通过搜索和阅读代码,识别以下反模式:

  • 被吞掉或空的异常处理器:例如 except: pass、except Exception: pass、catch (e) {}、catch { },以及 catch (e) { /* ignore */ } 且没有日志、重新抛出或恢复逻辑。
  • 过宽的捕获:例如 except Exception 或 catch (Throwable) 隐藏了本应导致崩溃的 bug;捕获后返回默认值,掩盖失败。
  • 异步与 Promise 问题:浮动 Promise(异步调用未 await 且未 .catch());Promise.all 中一个拒绝静默丢弃其余工作;缺少顶层 unhandledRejection 或事件循环错误处理。
  • 网络与 IO:fetch 或 HTTP 客户端调用没有超时;对外部不稳定调用没有重试或退避;文件或套接字打开后没有 finally/with/defer 清理。
  • 可观测性:错误被捕获并记录,但调用方仍收到成功或 200;logger.error(e) 没有堆栈或上下文,无法分类处理。

使用方式 触发方式包括:

  • “Audit error handling in this repo”
  • “Where are we swallowing errors?”
  • “Check exception handling on my changes”

工作流程:

  1. 确定范围:整个仓库、某个目录或 git diff(如果有待处理的更改,默认使用 diff)。
  2. 使用 grep 和阅读代码来查找上述反模式。
  3. 对每个发现,给出文件与行号、风险(哪种失败会变得不可见)以及修复建议。

输出格式示例:

Error Handling Audit — services/ (diff)

2 swallowed, 1 floating promise, 1 missing timeout

Swallowed errors

  • services/sync.py:74 — except Exception: pass around the DB write. A failed write is now invisible; the job reports success. Log + re-raise.
  • static/js/upload.js:30 — catch {} on the upload. User sees nothing on failure.

Async

  • services/queue.js:51 — flushMetrics() is called without await or .catch. A rejection becomes an unhandledRejection. Await it or attach a handler.

Network

  • clients/openai.py:22 — httpx.post(...) has no timeout. A hung upstream blocks the worker indefinitely. Add timeout=30 + one retry.

适用场景

  • 在代码合并前进行错误处理质量检查。
  • 审计整个仓库或特定目录的错误处理。
  • 检查代码变更(diff)中引入的错误处理问题。
  • 定位静默失败,提升系统可观测性。

限制

  • 该技能依赖 Claude Code 环境。
  • 需要人工判断修复建议的适用性。
  • 暂未提供关于收费、价格、平台支持范围等更多信息。