首页/开发/代码质量与评审速查/生成代码的检查排除
规范与静态检查65 条

生成代码的检查排除

生成代码不参与 lint 与覆盖率统计:按目录排除(如 protobuf 生成物)、加文件头标记(如 @generated),或使用各工具的内置排除机制,避免噪声淹没真实问题。

生成代码要排除在检查之外

由工具生成的代码(协议缓冲区产物、模板渲染结果、代码生成器输出)不该参与人工检查:它们数量大、风格固定、修改方式是从生成器重新生成,纳入检查只会让真实问题淹没在噪声里。排除方式有三种:按目录整体排除、在文件头加生成标记、利用工具的按后缀或规则排除能力。排除范围要覆盖静态检查、格式化、覆盖率统计与评审清单。

基本信息

手段目录排除、文件头生成标记、工具内置排除规则
覆盖范围静态检查、格式化、覆盖率统计、代码评审
目标只检查人写的代码,噪声不淹没真实问题
配套要求生成器版本锁定,生成命令可复现

典型使用场景

  • 协议缓冲区与接口定义产物:按文件后缀或输出目录整体排除
  • 前端路由与图标索引自动生成:在输出目录配置忽略规则
  • 数据库迁移脚手架:生成的样板文件不纳入风格检查
  • 覆盖率统计:排除生成的客户端与服务端桩代码,避免分母失真
  • 代码评审:生成物只看生成器输入与配置,不逐行评审产物

排除配置示例

排除配置示例
# 按目录或文件后缀排除
ESLint 配置中的 ignores 指向生成目录,例如 src/gen 下全部文件
静态检查工具通过 exclude-dirs 指定生成目录
按后缀识别,例如 *.pb.go 或 *_generated.ts 天然被过滤

# 文件头标记方式:在生成文件首行写入自动生成提示
# 生成器在重新生成时会保留该标记

排除手段对照

手段适用情形注意点
目录排除输出目录固定且独立目录改名时要同步更新规则
文件头标记生成物与手写代码混放标记要由生成器统一写入
后缀过滤文件命名有统一约定新增生成器时需检查命名是否遵守约定
规则内联排除个别规则在生成文件上误报豁免要写原因,避免变成长期忽略
生成物建议只提交产物、不评审内容:评审重心放在生成器配置与输入定义上。产物有争议时,先改定义再重新生成,而不是直接编辑产物。
排除规则要同时覆盖检查与统计两端:只排除静态检查而忘记覆盖率,生成物仍会把覆盖率分母拉大,得出失真的结论。

落地检查清单

  • 生成目录或文件命名有统一约定,便于配置排除
  • 静态检查、格式化、覆盖率统计使用同一套排除清单
  • 生成器版本与生成命令有记录,可复现产物
  • 排除清单定期复核,避免误排除手写代码

易错点

  • 生成物与手写代码混在同一目录:排除规则难以精确,误伤频发,最后只能关闭整类检查
  • 只排除静态检查不排除覆盖率:生成物进入覆盖率分母,数值严重偏低,结论不可用
  • 生成器未锁定版本:产物在不同环境漂移,提交记录里出现大量无关差异
  • 排除范围过宽:手写代码被一并忽略,真实问题长期无人发现

数据来源与参考

  • golangci-lint 配置文档、ESLint 忽略文件文档、Google Engineering Practices(生成文件评审)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌