讲师中心 微信公众号
AI工具推荐 视频效率加速

Beta Code Review

Polar Sponsor
爱发电 赞助
.NET 9.0

系统化代码审查模式,涵盖安全性、性能、可维护性、正确性与测试,附带严重等级和结构化反馈指导

代码检讨检查列表 : 深思熟虑, 结构化的代码检讨方法

功能概述

代码检讨检查列表 : 深思熟虑, 结构化的代码检讨方法是一项面向实际任务的技能,主要用于系统化地通过每个维度而不是随机扫描;OpenClaw / Moltbot / Clawbot.;

核心要点

  • Review Viments.。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。

使用与执行

该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

代码审查清单

采用全面、结构化的方式审查代码。请系统性地逐项检查每个维度,而非随机浏览。

安装

OpenClaw / Moltbot / Clawbot

npx clawhub@latest install code-review

审查维度

维度 关注点 优先级
Security 漏洞、认证、数据泄露风险 Critical
Performance 响应速度、内存使用、可扩展性瓶颈 High
Correctness 逻辑错误、边界情况、数据完整性 High
Maintainability 可读性、代码结构、面向未来的设计 Medium
Testing 测试覆盖率、测试质量、可靠性 Medium
Accessibility WCAG 合规性、键盘导航支持、屏幕阅读器兼容性 Medium
Documentation 注释、API 文档、变更日志条目 Low

安全审查清单

对每一处变更均需检查以下安全漏洞:

  • SQL 注入 — 所有数据库查询均使用参数化语句或 ORM;禁止将用户输入直接拼接到 SQL 字符串中
  • XSS — 用户提供的内容在渲染前必须进行转义或净化;如使用 dangerouslySetInnerHTML 或其等效机制,须有充分理由且确保安全
  • CSRF 防护 — 状态变更类请求必须携带有效的 CSRF Token;Cookie 的 SameSite 属性已正确设置
  • 认证(Authentication) — 每个受保护的端点在处理请求前,必须验证用户是否已通过身份认证
  • 授权(Authorization) — 对资源的访问必须严格限制在当前请求用户的权限范围内;杜绝 IDOR 类漏洞
  • 输入校验 — 所有来自外部的输入(URL 参数、Header、请求体、文件上传等)均需在服务端进行类型、长度、格式及取值范围校验
  • 密钥管理(Secrets Management) — 源码中不得硬编码 API Key、密码、Token 或其他凭证;所有密钥应通过环境变量或密钥管理服务(Vault)注入
  • 依赖安全性 — 新增依赖必须来自可信源、处于活跃维护状态,且无已知 CVE 漏洞
  • 敏感数据处理 — PII(个人身份信息)、Token、密钥等不得记录到日志、不得出现在错误消息中、不得返回至 API 响应体
  • 速率限制(Rate Limiting) — 公共接口与认证接口均需配置合理速率限制,防止暴力破解与滥用
  • 文件上传安全 — 上传文件须校验类型与大小,存储路径须位于 Web 根目录之外,并以安全的 Content-Type 头提供服务
  • HTTP 安全响应头 — 已正确配置 Content-Security-Policy、X-Content-Type-Options、Strict-Transport-Security 等安全头

性能审查清单

  • N+1 查询 — 数据库访问模式已优化为批量查询或 JOIN;避免在循环中逐条发起查询
  • 非必要重渲染 — 组件仅在其相关状态或属性变更时才触发重渲染;对可测量收益的场景应用 memoization
  • 内存泄漏 — 事件监听器、订阅、定时器与周期任务均在组件卸载或资源销毁时被正确清理
  • 构建包体积 — 新增依赖支持 Tree-shaking;大型库采用动态加载;禁止仅为单个函数而引入整库
  • 懒加载(Lazy Loading) — 计算密集型组件、路由及首屏以下内容均已启用懒加载 / 代码分割
  • 缓存策略 — 开销较大的计算结果与 API 响应均已配置合适的缓存机制(如 memoization、HTTP 缓存头、Redis)
  • 数据库索引 — 查询中涉及过滤与排序的字段均已建立索引;新增查询已通过 EXPLAIN 进行验证
  • 分页机制 — 列表类端点与查询均已启用分页或游标式分页;禁止无限制的 SELECT *
  • 异步操作 — 耗时较长的任务已交由后台作业或队列处理,避免阻塞请求线程
  • 图片与静态资源优化 — 图片尺寸适配、采用现代格式(WebP/AVIF),并依托 CDN 分发

正确性审查清单

  • 边界情况(Edge Cases) — 已处理空数组、空字符串、零值、负数及最大值等场景
  • 空值处理(Null/Undefined Handling) — 对可能为空的值访问前均已做显式检查;通过可选链(Optional Chaining)或防护条件(Guard Clause)避免运行时错误
  • 差一错误(Off-by-One Errors) — 循环边界、数组切片、分页偏移量及范围计算均已验证
  • 竞态条件(Race Conditions) — 对共享状态的并发访问已通过锁、事务或原子操作保障一致性
  • 时区处理(Timezone Handling) — 时间戳统一以 UTC 存储;展示层负责时区转换
  • Unicode 与编码(Unicode & Encoding) — 字符串操作兼容多字节字符;文本编码明确指定为 UTF-8
  • 整数溢出 / 精度问题(Integer Overflow / Precision) — 大数运算或货币计算已选用合适类型(如 BigInt、Decimal)
  • 错误传播(Error Propagation) — 异步调用及外部服务抛出的错误已被捕获并妥善处理;Promise 不会被静默吞没
  • 状态一致性(State Consistency) — 多步状态变更具备事务性;部分失败后系统仍保持有效状态
  • 边界值校验(Boundary Validation) — 已对合法取值范围的边界值(最小值、最大值、恰好等于阈值)进行测试

可维护性审查清单

  • 命名清晰性(Naming Clarity) — 变量、函数与类名具有描述性,能直观体现其设计意图
  • 单一职责(Single Responsibility) — 每个函数 / 类 / 模块仅承担一项职责;单一关注点的修改不会波及无关代码
  • DRY 原则 — 重复逻辑已提取为通用工具;复制粘贴的代码块已合并
  • 圈复杂度(Cyclomatic Complexity) — 函数分支逻辑简洁;深度嵌套结构已重构
  • 错误处理(Error Handling) — 错误在恰当边界被捕获,附带上下文记录,并以有意义的方式向上暴露
  • 废弃代码清理(Dead Code Removal) — 已移除注释掉的代码、未使用的导入、不可达分支及过时的功能开关
  • 魔法数字与字符串(Magic Numbers & Strings) — 字面量值已提取为具语义的命名常量
  • 风格一致性(Consistent Patterns) — 新增代码严格遵循现有代码库约定
  • 函数长度(Function Length) — 函数足够简短,可一目了然;过长函数已拆解
  • 依赖方向(Dependency Direction) — 依赖关系指向内层(如 infrastructure → domain);核心业务逻辑不反向依赖 UI 或框架层

测试审查清单

  • 测试覆盖率(Test Coverage) — 新增逻辑路径均有对应测试;关键路径同时覆盖正常流程与异常场景
  • 边界情况测试(Edge Case Tests) — 测试覆盖边界值、空输入、null 值及错误条件
  • 非脆弱测试(No Flaky Tests) — 测试确定性强;不依赖时间、外部服务或共享可变状态
  • 测试独立性(Test Independence) — 每个测试独立构建并销毁自身状态;测试执行顺序不影响结果
  • 有意义的断言(Meaningful Assertions) — 断言聚焦于行为与结果,而非实现细节
  • 测试可读性(Test Readability) — 测试遵循 Arrange-Act-Assert 模式;测试名称准确描述场景与预期结果
  • 模拟规范性(Mocking Discipline) — 仅对外部边界(网络、数据库、文件系统)进行模拟
  • 回归测试(Regression Tests) — Bug 修复必须包含复现原问题并验证已解决的测试用例

审查流程

分三轮通读代码,切勿试图一次完成全部审查。

轮次 关注点 耗时 重点检查项
第一轮 高层结构 2–5 分钟 架构适配性、文件组织、API 设计、整体方案合理性
第二轮 逐行细节 主要耗时 逻辑错误、安全问题、性能缺陷、边界情况
第三轮 边界情况与加固 5 分钟 故障模式、并发问题、边界值、缺失测试

第一轮(2–5 分钟)

  1. 通读 PR 描述及关联 Issue
  2. 浏览变更文件列表 —— 变更范围是否合理?
  3. 评估整体方案 —— 这是否是解决该问题的恰当方式?
  4. 确认变更未导致架构漂移(Architectural Drift)

第二轮(审查主要耗时)

  1. 自上而下逐行阅读每个文件 Diff
  2. 对照上述各清单逐项核查每个函数变更
  3. 验证所有 I/O 边界处的错误处理逻辑
  4. 对任何引发疑虑的内容及时标记 —— 信任你的直觉

第三轮(5 分钟)

  1. 思考该代码在生产环境中可能发生的故障场景
  2. 检查此前标记路径是否补充了相应测试
  3. 验证回滚安全性 —— 此变更能否在不丢失数据的前提下安全回退?
  4. 确认文档与变更日志(Changelog)是否按需更新

严重程度分级

为每条评论标注严重程度,便于作者快速识别哪些问题会阻断合并。

等级 标签 含义 是否阻断合并?
Critical [CRITICAL] 存在安全漏洞、数据丢失风险或导致生产环境崩溃 是
Major [MAJOR] 存在 Bug、逻辑错误或显著性能退化 是
Minor [MINOR] 有助于降低未来维护成本的改进建议 否
Nitpick [NIT] 风格偏好、命名建议或微小清理项 否

务必在每条评论开头添加严重程度标签,消除理解歧义。

反馈撰写规范

基本原则

  • 具体明确 — 指出确切行号,并解释问题本质,而非简单断言“此处有误”
  • 阐明原因 — 说明潜在风险或后果,而非仅复述规则
  • 提供方案 — 尽可能给出具体修改建议或可运行的代码片段
  • 以问代令 — 对主观判断点使用提问语气:“您觉得……如何?”
  • 肯定亮点 — 明确指出简洁的实现、巧妙的优化或完备的测试
  • 区分阻断与非阻断项 — 使用严重程度标签帮助作者快速识别优先级

示例评论

反面示例:

此处有误,请修正。

正面示例:

[MAJOR] 此查询将用户输入直接拼接进 SQL 字符串(第 42 行),存在 SQL 注入风险。建议改用参数化查询:

SELECT * FROM users WHERE id = $1

反面示例:

为何未补充测试?

正面示例:

[MINOR] 新增的 calculateDiscount() 函数包含多个分支路径,建议补充零数量与负价格等边界情况的测试用例,以防回归。

反面示例:

我会用不同方式实现。

正面示例:

[NIT] 当前实现效果良好。另一种思路是将重试逻辑抽离为共享的 withRetry() 封装器 —— 此为可选优化,可后续跟进。

审查反模式

避免以下常见误区,以免浪费时间并损害团队信任:

反模式 说明
走形式审批(Rubber-Stamping) 未经审阅即批准。制造虚假信心,导致缺陷流入生产环境。
伪优先级争论(Bikeshedding) 花费 30 分钟争论变量命名,却忽视一个潜在竞态条件。
因风格阻断(Blocking on Style) 拒绝批准仅因格式问题 —— 此类问题应由 Linter 自动强制执行。
过度管控(Gatekeeping) 强行要求采用个人偏好的实现方式,而提交方案本身完全正确。
路过式审查(Drive-by Reviews) 仅留下一条模糊评论便不再跟进。请承诺全程参与闭环。
范围蔓延审查(Scope Creep Reviews) 提出与当前 PR 无关的重构需求,此类工作应拆分为独立 PR。
滞留式审查(Stale Reviews) 任由 PR 悬置数日。应在 24 小时内完成审查,或主动移交他人。
情绪化表达(Emotional Language) 使用“这很糟糕”或“明显错误”等表述。请批评代码,而非开发者本人。

绝对禁止事项

  1. 绝对禁止未逐行审阅即批准 —— 走形式审批比不审查危害更大
  2. 绝对禁止仅因风格偏好阻断 PR —— 交由 Linter 自动约束;人工审查聚焦逻辑正确性
  3. 绝对禁止未标注严重程度的反馈 —— 模糊性将导致无效返工
  4. 绝对禁止未说明原因即要求修改 —— “请修复此处”无法传递任何知识
  5. 绝对禁止单次审查超过 400 行 —— 理解力急剧下降;大 PR 应拆分为多次审查
  6. 绝对禁止跳过安全审查清单 —— 一个遗漏的漏洞,其危害远超百条风格建议
  7. 绝对禁止人身攻击 —— 审查对象是代码,不是开发者;请始终假定对方善意
目录

热门AI工具

更多
UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

0

2026.10.28

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

0

2026.10.28

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

0

2026.10.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

0

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

0

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

0

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

0

2026.10.22

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn