错误处理反模式规则 Claude-Mem 代码库
发布: (2026年1月12日 GMT+8 23:30)
3 min read
原文: Dev.to
Source: Dev.to
过程
-
运行检测器
# command to run the detector (example) -
分析结果
- 统计
CRITICAL、HIGH、MEDIUM和APPROVED_OVERRIDE问题 - 首先在关键路径上优先处理
CRITICAL问题 - 将相似的模式归为一组
- 统计
-
针对每个
CRITICAL问题a. 使用 Read 工具 读取有问题的代码
b. 解释问题
- 为什么这很危险?
- 可能导致什么调试噩梦?
- 正在吞掉的具体错误是什么?
c. 确定正确的修复方案
- 选项 1:添加适当的日志 – 如果这是应该可见的真实错误
- 选项 2:添加
[APPROVED OVERRIDE]– 如果这是预期的/已记录的行为 - 选项 3:完全移除 try‑catch – 如果错误应当向上传播
- 选项 4:添加特定错误类型检查 – 如果只应捕获某些错误
d. 提出修复方案 并请求批准
e. 获得批准后 应用修复
-
有条不紊地处理问题
- 一次只修复一个
- 每批修复后重新运行检测器
- 跟踪进度,例如 “已修复 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 的讨论。