mcpField
F
find-mismatch

find-mismatch

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

关于 find-mismatch

这是一个代码审查技能,使用 fallow 静态分析和检查清单查找仓库中的运行时错误。它聚焦功能故障,不处理风格、性能、文档或测试建议。

主要功能

  1. 01运行 fallow 静态分析
  2. 02按 Git 状态筛选发现项
  3. 03自动修复符合条件的暂存项
  4. 04检查跨边界契约
  5. 05排查异步、逻辑和语言特定错误
  6. 06按指定格式报告发现项

适用场景

  1. 01审查暂存的 JavaScript 或 TypeScript 修改
  2. 02发现 API 参数或返回字段不匹配
  3. 03检查空值访问和异步错误
  4. 04生成结构化的运行时错误报告

安装

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

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

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

附带文件agents/openai.yaml

详细介绍

查找不匹配项

使用 fallow 运行静态分析,并修复其指出的问题。逐一检查每个文件。只关注运行时故障/错误并修复。不要报告风格、格式、性能建议、文档/测试或“考虑使用 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. 序列化与反序列化
  • 大小写:数据库/后端中的 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,导致错误被静默处理。
  • 泄漏:错误路径中未关闭文件/数据库/网络连接。
6. CSS 与样式
  • HSL 变量:Tailwind v4 中原始 HSL 分量(0 0% 100%)会失效,应使用函数格式(hsl(0 0% 100%)),与 v3 不同。
  • 内联主题:循环引用、选择器不匹配(class 与 data-theme)。
7. 占位代码与存根代码
  • 未使用的声明/文件/依赖、TODO 注释、空 catch 块。

3. 特定语言的陷阱

  • Python:虚构的库方法(pandas、numpy、requests)、同步/asyncio 混淆、可变默认参数(def f(x=[]))、静默的缩进丢失。
  • JS/TS:后端(Node)与前端(Browser)API 混用、滥用 any、仅类型导入不匹配、桶文件误报(导出但未在生产中使用,却在测试/库中使用)。
  • 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