首页/开发/代码质量与评审速查/评审检查项:依赖变更
代码评审64 条

评审检查项:依赖变更

依赖变更评审:新增依赖的必要性与维护状态、版本锁定与可复现构建、许可证兼容、供应链与漏洞影响。

依赖变更怎么审

依赖改动影响面常被低估:它带进的是别人的代码、别人的缺陷与别人的许可证。评审要点是必要性(既有依赖能否覆盖)、引入类型(运行时还是构建期)、版本与锁文件的变更是否可控、许可证是否与项目兼容,以及该依赖的维护状态与已知漏洞。

基本信息

必要性既有依赖能否覆盖需求;引入的是运行时还是构建期依赖
版本与锁变更是否按预期,避免无关升级混入同一个改动
许可证与项目许可证的兼容性,小心传染性许可
维护与安全是否活跃维护、有无已知漏洞公告

逐项看什么

  • 新增依赖的必要性:功能是否可以用标准库或既有依赖实现。
  • 传递依赖数量与体积:一个库可能顺带引入几十个间接依赖。
  • 锁文件 diff:确认本次变更只包含目标依赖,没有顺带升级。
  • 许可证类型:是否与项目分发方式冲突,是否需要保留声明文件。
  • 维护状态:最近提交时间、未处理问题数量、是否有替代方案。

风险与检查点

风险检查点
供应链来源是否可信,是否锁定版本与校验值
许可证与项目许可是否兼容,是否要求开源衍生代码
体积与性能运行时开销、包体积、启动时间影响
维护停滞长期无人维护的库出现漏洞时无人修复
锁文件噪声无关升级混入,出问题难以二分定位

审查依赖改动的切入点

审查依赖改动的切入点
git diff -- package.json package-lock.json   # 只看依赖清单与锁文件
git diff --stat -- '*lock*'                  # 先看锁文件规模是否异常
# 关注:新增/删除项、版本跨度、是否顺带升级了无关依赖
# 再确认:许可证文件与声明是否需要同步更新
锁文件的大规模无关变更会掩盖真实改动:应要求单独提交或给出说明。
引入新依赖前先问一句「这个能力有多少是自己能写的」:为一个小功能引入一个大依赖,长期维护成本通常高于自己实现。

易错点

  • 顺手升级全部依赖混进功能改动:出问题难以二分定位。
  • 只看功能不看许可证:把传染性许可引入项目,分发方式受限。
  • 不锁版本或不看锁文件 diff:构建结果不可复现,同事与 CI 拿到不同依赖。
  • 引入无人维护的库:出现漏洞时无人修复,只能自己接手或紧急替换。

数据来源与参考

  • GitHub Open Source Guides(依赖的许可证与维护性检查)
  • npm Docs(package-lock 语义)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌