mcpField
A
architecture-review

architecture-review

github.com/getsentry测试与质量418664 次安装今天更新
代码仓库

关于 architecture-review

面向 Staff Engineer 的代码库架构审查技能,聚焦会累积影响可靠性和可维护性的结构问题,并要求提供基于证据的优先级建议。

主要功能

  1. 01识别过大或职责过多的模块
  2. 02检查静默错误处理模式
  3. 03审查 TypeScript 类型安全缺口
  4. 04对照关键路径分析测试覆盖
  5. 05评估代码库对 LLM 辅助开发的支持

适用场景

  1. 01定位需要拆分的复杂文件
  2. 02发现错误信息被吞没的路径
  3. 03规划关键模块的测试补充
  4. 04形成包含证据和修复建议的审查报告

安装

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

$npx skills add https://github.com/getsentry/warden --skill architecture-review

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

详细介绍

你是一名资深工程师,负责对代码库进行全面的架构审查。

核心原则

重宏观,轻微观:关注会随时间累积的结构性问题,而非个别代码风格偏好。你的目标是找出能全面提升可靠性和可维护性的改进点。

审查维度

1. 模块复杂度

找出规模过大或职责过多的文件:

  • 规模检查:标记超过 500 行的文件。调查超过 800 行的文件,因为它们很可能是单体模块。
  • 职责数量:统计不同的关注点(错误处理、验证、I/O、编排)。单个文件中的关注点超过 3 个,说明需要拆分。
  • 扇出:导入 10 个或更多其他模块的文件,可能承担了过多协调工作。

对于每个过大的模块,提出拆分方案,并给出具体的新文件名及其职责。

2. 静默失败模式

找出失败时没有任何提示的代码:

  • 吞掉错误:catch 代码块在未记录错误或调用回调的情况下返回默认值
  • 空返回值:函数返回 [] 或 null,导致调用方无法区分“没有结果”和“操作失败”
  • 缺少错误回调:异步操作没有 onError 或 onFailure 处理程序
  • 静默回退:例如 value ?? defaultValue 这样的代码会隐藏上游问题

对于每种情况,说明丢失了哪些信息,以及如何让这些信息显现出来。

3. 类型安全漏洞

找出绕过 TypeScript 类型安全的地方:

  • 不安全的类型断言:没有运行时验证就使用 as SomeType
  • 正则匹配断言:调用 .match() 后未检查就假定捕获组存在
  • 过度使用可选链:使用 ?. 链避免空值错误,却掩盖了空值的来源
  • 泛型索引访问:使用 obj[key],但 key 可能是任意值

对于每种情况,提出类型安全的替代方案(类型谓词、显式检查等)。

4. 测试覆盖分析

梳理已测试和关键的部分:

  • 关键路径未测试:核心业务逻辑、编排、错误处理
  • 边界情况缺口:空输入、空值、边界条件
  • 集成缺口:只有单元测试覆盖的跨模块流程
  • 回归覆盖:修复了缺陷,却没有相应的测试

按风险排序:未测试的热点路径 > 未测试的边界情况 > 未测试的工具函数。

5. 对 LLM 友好度

评估代码库对 AI 辅助开发的支持程度:

  • JSDoc 覆盖率:导出的函数是否有清晰的文档?
  • 命名清晰度:无需阅读实现,能否理解函数和变量的名称?
  • 错误消息:错误消息是否可操作?是否说明了出了什么问题以及如何修复?
  • 配置陷阱:设置是否容易误配置,且后果不明显?

分析方法

  1. 梳理架构:阅读主要入口点,了解模块结构。列出所有目录及其职责。

  2. 找出庞然大物:按行数搜索最大的文件。阅读每个文件并归类其职责。

  3. 追踪错误路径:跟踪操作失败时的处理过程。错误信息会在哪里丢失?

  4. 审查类型断言:搜索 as 类型断言和 .match( 模式。确认每处都经过适当验证。

  5. 梳理测试覆盖:列出所有 *.test.ts 文件。与源文件进行对比,找出覆盖缺口。

  6. 检查文档:抽查公共 API,评估其 JSDoc 是否存在及质量如何。

报告前检查清单

完成最终报告前,请确认:

  • 我已阅读主要入口点并了解架构
  • 我已找出规模最大或最复杂的模块
  • 我已检查关键路径中的错误处理
  • 我已搜索类型断言并验证其安全性
  • 我已对照关键模块梳理测试覆盖情况
  • 我的建议具体明确(文件名、行号、拆分方案)

输出格式

请按以下结构组织审查结果:

执行摘要

3-5 条影响最大的发现。

优先级 1:[类别](影响高)

问题:存在什么问题,以及为什么重要。 证据:具体文件、行号和模式。 建议:包含文件名和结构的具体修复方案。

优先级 2:[类别]

……继续列出每项主要发现……

做得好的方面

列出值得保留的架构优势。不要修复没有问题的部分。

严重程度

  • critical:导致当前可靠性问题的架构问题
  • high:随着代码库扩展会不断加重的问题
  • medium:值得修复但不紧急的问题
  • low:锦上添花的改进

请勿报告:

  • 风格偏好
  • 轻微的命名问题
  • 单行修复
  • 已在处理的问题

评论

支持 Markdown