mcpField
F
find-mismatch

find-mismatch

github.com/utarn测试与质量744 次安装19 周前更新
代码仓库

关于 find-mismatch

find-mismatch 是用于检查项目运行时错误的代码审查技能,结合 JS/TS 的 Fallow 静态分析与多语言人工检查清单,并按模板报告问题。

主要功能

  1. 01JS/TS 的 Fallow 审计
  2. 02区分暂存与未暂存改动
  3. 03检查跨边界接口契约
  4. 04多语言运行时错误清单
  5. 05按模板输出问题报告

适用场景

  1. 01审查暂存的 JS/TS 改动并应用安全修复
  2. 02检查未暂存改动且不修改文件
  3. 03排查序列化或异步处理错误

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/utarn/review-skill --skill find-mismatch

安装后在 Claude Code 中输入/find-mismatch确认已加载。

详细介绍

查找不匹配

逐一检查每个文件。仅关注运行时故障/错误。不要报告风格、格式、性能建议、文档/测试或“考虑使用 X”。

1. 流程

  1. JS/TS(预检查):运行静态分析。
    • 检查是否已安装:fallow --version。
    • 如果未安装,则全局安装:npm install -g fallow。
    • 执行审计:fallow audit --format json --quiet。
    • 根据 git 状态筛选发现项:git diff --staged --name-only。
    • 如果已暂存:自动应用安全修复,然后重新运行审计以验证。
    • 如果未暂存:仅报告(不修改)。
  2. 审查清单:将清单应用于所有变更。
  3. 报告:使用指定模板整理发现项。

2. 清单类别

1. 跨边界契约
  • 调用不匹配:检查 RPC、HTTP、IPC、事件名称/主题是否与接收方匹配。
  • 参数名称/类型:userId 与 user_id、字符串与数字、扁平结构与包装结构。
  • 返回类型:字段访问(result.field)必须与返回签名匹配。
2. 序列化与反序列化
  • 大小写:DB/后端中的 snake_case 与 JSON/前端中的 camelCase。
  • 可选字段:接收方需要的字段在生产方是否为可选字段。
  • 枚举/判别字段:判别字段(type、kind)及其变体是否匹配。
  • Base64:是否存在重复编码层。
3. 逻辑错误
  • 重复计数:循环/分支内和外部都递增计数器。
  • 差一错误:索引、分页边界(page <= total 与 page < total)。
  • 条件:冗余/无效标志、不可达语句、变量遮蔽。
4. 属性与方法访问
  • 空值解引用:未进行空值/长度检查就调用方法或访问数组索引(items[0].name)。
  • 可选链:过早停止检查(例如,user?.address.street 在 address 为 null 时仍会崩溃)。
  • This 上下文:类中的回调绑定。
5. 异步与并发
  • 竞态条件:共享可变状态、并行文件系统访问但未协调。
  • 缺少 await:忽略 Promise,导致错误未被发现。
  • 泄漏:错误路径中未关闭文件/DB/网络连接。
6. CSS 与样式
  • HSL 变量:使用原始 HSL 分量(0 0% 100%)而非函数格式(hsl(0 0% 100%)),在 Tailwind v4 中会失效(与 v3 不同)。
  • 内联主题:循环引用、选择器不匹配(class 与 data-theme)。
7. 占位符与存根代码
  • 未使用的声明/文件/依赖、TODO 注释、空 catch 块。

3. 特定语言的陷阱

  • Python:虚构的库方法(pandas、numpy、requests)、同步/asyncio 混淆、可变默认参数(def f(x=[]))、静默丢失缩进。
  • JS/TS:后端(Node)与前端(Browser)API 混用、滥用 any、仅类型导入不匹配、barrel 文件误报(已导出但未在生产环境中使用,却在测试/库中使用)。
  • C++:原始指针与智能指针混用、缺少标准库头文件 #include、未初始化变量、缓冲区溢出。
  • Rust:借用检查器生命周期过度复杂、对 None/Err 调用 unwrap()、在 .await 挂起点期间持有锁。
  • Java / .NET:虚构的注解/属性、LINQ N+1 查询、Entity Framework 模型快照漂移/缺少迁移(检查 Entities/ 下的模型变更是否对应 Migrations/)。
  • Go:WaitGroup/Channel 死锁、JSON 中未导出的结构体字段、在循环中使用 defer、并发访问 map。
  • PHP:宽松类型比较(== 与 ===)、数组与对象访问混用、键未定义。

4. Fallow 发现项映射与修复

Fallow 类型清单类别自动修复操作
unused_exports占位符与存根移除 export(如果在本地使用),或移除整个声明。
unused_files占位符与存根删除文件(先检查动态导入)。
unused_dependencies占位符与存根从 package.json 中移除依赖。
circular_dependencies跨边界留待人工审查(可能导致初始化错误)。
complexity/duplication逻辑错误留待人工审查。

5. 输出格式

包含 ## Review Summary 标题(仅适用于 JS/TS 项目):

## Review Summary
- **Manual review bugs found**: N
- **Fallow auto-fixed**: N findings (staged files only)
- **Fallow non-auto-fixable**: N findings
- **Fallow verdict**: pass / fail

单条问题的格式(为来自 fallow 的错误添加 [fallow] 标签):

## Bug #1
- **File**: <path>:<line>
- **Category**: <category>
- **What's wrong**: <description>
- **Runtime effect**: <effect>
- **Fix**: <code>

评论

支持 Markdown