Ffranciscuo发布于 4 小时前
0220
写 NestJS 的时候,用 Copilot / Cursor / Claude Code 生成的代码经常有几类框架层面的错:模块循环依赖、Controller 上忘了加 Guard、Controller 里直接调 ORM、注册了但没人用的 provider。ESLint 的 Nest 插件基本不查这些,Nest Devtools 得把应用跑起来才能看。
所以我做了 nestjs-doctor,一个开源(MIT)的 NestJS 静态分析工具,直接读源码:
npx nestjs-doctor@latest .
不启动应用,不调 LLM,代码不上传。扫完给一个 0 到 100 的分,每条问题带文件和行号,同一个 commit 在本地和 CI 得分一致。
加 --report 会生成一个 HTML 报告:
- 模块依赖图,循环依赖会高亮
- 每个 HTTP 接口的调用链,从 Controller 到 Service 再到 Repository,一眼看到哪个接口直接碰了数据库
- Prisma / TypeORM / Drizzle / MikroORM 的 ER 图,从实体代码里读出来
- 在
main.ts加几行、真实启动一次,再加--timings <path>,多一页启动耗时,能看到哪个 provider 拖慢了启动
内置规则分五类:安全、正确性、架构、性能、数据库 schema。团队自己的约定可以写成自定义规则,一个 ts-morph 文件放进 customRulesDir 就能加载,比如"Controller 里不许直接用 Repository"。
也能跑在 pre-commit、GitHub Action(只评论 PR 新引入的问题)和 VS Code 里,支持 monorepo。国内走 npmmirror 也行,版本是同步的。
公开项目今天的分:twentyhq/twenty 99,immich 97,nocodb 95。
仓库:https://github.com/RoloBits/nestjs-doctor
文档(英文):https://www.nestjs.doctor/docs?from=cnode
我是作者,欢迎提 issue,尤其想知道国内团队常见的 Nest 项目结构里有没有规则没覆盖到的。