错误处理反模式规则 Claude-Mem 代码库

发布: (2026年1月12日 GMT+8 23:30)
3 min read
原文: Dev.to

Source: Dev.to

过程

  1. 运行检测器

    # command to run the detector (example)
  2. 分析结果

    • 统计 CRITICALHIGHMEDIUMAPPROVED_OVERRIDE 问题
    • 首先在关键路径上优先处理 CRITICAL 问题
    • 将相似的模式归为一组
  3. 针对每个 CRITICAL 问题

    a. 使用 Read 工具 读取有问题的代码

    b. 解释问题

    • 为什么这很危险?
    • 可能导致什么调试噩梦?
    • 正在吞掉的具体错误是什么?

    c. 确定正确的修复方案

    • 选项 1:添加适当的日志 – 如果这是应该可见的真实错误
    • 选项 2:添加 [APPROVED OVERRIDE] – 如果这是预期的/已记录的行为
    • 选项 3:完全移除 try‑catch – 如果错误应当向上传播
    • 选项 4:添加特定错误类型检查 – 如果只应捕获某些错误

    d. 提出修复方案 并请求批准

    e. 获得批准后 应用修复

  4. 有条不紊地处理问题

    • 一次只修复一个
    • 每批修复后重新运行检测器
    • 跟踪进度,例如 “已修复 3/28 个关键问题”

Detect‑error‑handling‑antipatterns 脚本

detect-error-handling-antipatterns.ts 脚本(约 514 行代码)定义了多个用于定位反模式的函数。
detectAntiPatterns 函数中,使用正则表达式来发现有问题的错误处理,例如:

// Example regex patterns
/,\\s(?:error|err|e).message\\s*)/,
{\\s(?:error|err|e):\\s*(?:error|err|e).message\\s*}/,
][^'"]+['"`]\\s*,\\s*(?:error|err|e).message\\s*)/

这些模式的使用方式如下:

for (const pattern of partialErrorLoggingPatterns) {
  if (pattern.test(trimmed)) {
    if (hasOverride && overrideReason) {
      antiPatterns.push({
        file: relPath,
        line: i + 1,
        // …
      });
    }
  }
}

另一组模式:

'"`['"]\\s*\\)/i,
](\\w+)['"]\\s*\\)/i,
](\\w+)['"`]\\s*)/i,

正则 vs. AST

使用抽象语法树(AST)相比正则表达式可以提供更可靠的检测,尤其是面对复杂的 JavaScript 代码时。参考 Stack Overflow 上关于 AST 的讨论

参考文献

Back to Blog

相关文章

阅读更多 »