【知识整理】简述 Code Review - 代码审查

news2025/1/17 0:55:42

一、Code Review 简述

为保证上线代码质量,经研究决定0412版本起实行Code Review具体操作方式为组织 review 会。提出的优化点需立即执行更改,Review会要求给出调整方式方法。同时为了确保项目或迭代版本的时间,请各开发同学提前做好时间规划。此流程为试运行流程,在团队操作过程中 Code Review 方式方法会随之进行优化调整。

这里是来自维基百科的官方解释,CR,全称 Code Review,中文名 - 代码审查,其目的是在找出及修正在软件开发初期未发现的错误,提升软件质量及开发者的技术。代码审查常以不同的形式进行,例如结对编程、非正式的过整个代码,或是正式的软件检查。

二、Code Review 目的

  • 交叉排查缺陷:通过团队成员相互审核,避免代码层面出现显而易见的问题
  • 提高代码质量:通过团队成员相互监督,在完成功能的基础之上不断完善代码结构
  • 建立团队意识:代码是团队财产,团队成员在相互督促与改进中共同成长

Code Review 也就是代码评审。代码评审有两种不同的方法,

一种是代码审查(比较正式)。

一种是代码组查(没那么正式)。

之所以需要代码评审,是因为通常自己对自己写的代码都难以发现问题,因此需要以第二双眼睛再次检查代码,帮助我们及时地发现潜在的问题。

1.确保整体代码标准化统一,在一定程度上避免编程引发的基础原则性问题

2.提高研发质量,为提测和交付上线提供双重保障

3.在满足审核标准的情况下,使PHP组整体代码健康状况随着时间的推移而改善

4.审核代码的质量,比如可读性、可维护性、以及基础程序的逻辑和风险点,针对业务逻辑的正常实现不进行深度review

三、Code Review GitLab操作流程

具体操作分支

第一步分支 test 更改为 保护分支,只有指定组长才有权限进行合并操作。具体开发人员只能指定人员发起合并请求。

具体操作通过 Gitlab平台主要Merge-Request机制进行代码审查

1. 开发人员(项目成员)在本地完成一个任务(编码)并通过本地单元测试(自测)。

2. 同步源仓库内容(release_product_hw)至本地仓库「如果跨版了,合并最新代码到本地分支」:可能需要解决冲突,再次进行本地单元测试,通过后push至个 人gitlab远程库。

3. 登录Gitlab,进入目标仓库(Project,后续统称目标仓库),发Merge Request,详见下面截 图:

选择准备申请合并的 Source Branch 与 Target Branch ,如下图:

输入此次合并的关键信息(功能、解决的问题等),指定代码审核人员并提交Merge-Request。提 交后Gitlab将会邮件通知相关的代码审核人员。

4. 相关人员收到邮件通知后登录Gitlab对M-R请求进行处理,也就是进行代码评审。

如果对准备提交的代码不满意,则可以在 有问题的代码行 或 讨论区 给出意见或建议。

如果觉得本次M-R的代码没问题,直接在评论区回复:通过 。并进行合并操作。若没有 Push 权限,则将此M-R请求 assign 给有 Push 权限的人。

5. 在上一步中,如果代码评审未通过,开发人员(M-R申请者)需要根据评审意见进行修改 (当然是得在本地开发环境进行修改测试),即重新根据 步骤1、步骤2 进行操作,最新的提 交信息会实时同步至此前提交的M-R申请单的信息流中。

6. 代码审查流程重新跳回 步骤4 。

7. 具有 Push 权限的开发人员收到M-R请求后,如果讨论区的回复内容为: 通过 ,则执行 Merge 操作。至此整个代码审查流程结束。

M-R申请者也可以提前关闭M-R请求:自己事先发现代码问题等。

如果错误点击了Merge操作,也可以 reopen 。

四、Code Review 时间轴

由 开发人员 根据开发情况,向即将上线版本(由发版人指定)分支发起 Merge Requests 请求,然后通知相关人进行 CodeReview,功能较大更改文件较多的,组织开 Code Review 会议,确定时间、地点、相关人员。

往往发生的实际场景是项目时间比较紧,尽管提出了问题,但是没有细究,CR 直接快速过了。后面果然有问题,花费了两三天去排查解决,整个模块几乎重写。
通常来说:开发 + CR讨论时间 < 不 CR,遇到问题后面修改,设计不合理的维护成本。所以这里的一个点,前期就接受他的存在,并将它计算在排期中。

场景说明:

你在认真的写代码,然后旁边的小菜开心的喊你帮我看个 CR。作为一个认真负责的你,当然是满口答应,准备点进去看看,过了一秒钟打开GIT网页,发现 365 个文件变更,此时求你的心里阴影面积。


这种场景,其实是一次性囤的代码太多导致的,很多同学觉得,我应该把一个功能完整的开发完毕,再提上去,大家才知道我在写什么,但是实际上,coding 是个循序渐进的过程,建议日常开发的同学控制 commit 粒度,尽可能保证每天提交,以及尽可能写好 commit message,还有就是 commit 跟卡片做好关联,也有助于 reviewer 能更好的理解你的意图。

五、PHP 代码规范参考

【知识整理】PHP研发组代码规范要求-CSDN博客

六、常规Review List

1.测试代码类

  1. podfile、podspec是否修改了本地仓库路径
  2. 测试类代码,假数据 需要移除

2.版本计划类

  1. 是否有不在此次版本计划内的逻辑被错误提交
  2. 是否有偏离本次需求的其他模块代码被误修改

3.数据安全类

  1. 空安全
  2. 数组、字典安全
  3. 线程安全
  4. 内存安全

4.架构设计类

  1. 按照组件化标准,基础组件功能不能冗余在业务里;业务不能冗余在基础组件里
  2. 鲁棒性满足基本要求
  3. 可抽象的重复基础逻辑

5.审核合规类

  1. 用户隐私明文传输
  2. 未加入用户协议隐私协议的隐私功能
  3. 保证最新版本,低版本兼容性
  4. 减少使用即将过期,废弃的api
  5. 敏感词屏蔽
  6. 其他已知政策风险

6.可读性类

  1. 不使用特殊字符表情中文
  2. 建议过长的方法需要拆分
  3. 复杂难懂方法需要添加注释 (适当注释,言简意赅)

七、业务型必要Review

增加新老版代码偏移量检测

  • 通过代码修改对比,发现主Type类型相关逻辑修改,需要研发二次确认。

(例如旧代码type=0跳转详情页,新代码type=1跳转详情页,类似情况需要找研发再次确认逻辑)

  • 通过代码修改对比,发现城市ID逻辑有大量修改,需要研发二次确认。

享受Code Review,相互尊重,相互学习,相互进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1458741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity2023.1.19_ShaderGraph节点说明以及使用技巧

Unity2023.1.19_ShaderGraph节点说明以及使用技巧 目录 Unity2023.1.19_ShaderGraph节点说明以及使用技巧 1. 快捷键CtrlG完成和UE蓝图使用快捷键C一样的蓝图分组注释效果&#xff1a; 2. Tiling And Offset&#xff1a; 3. 以下是两组URP材质渲染的效果对比&#xff1a; 4…

大学生考试搜题用什么软件?学生党都在用的八款搜题工具来了 #经验分享#经验分享#经验分享

人工智能技术的发展正逐渐改变着我们的生活&#xff0c;学习如何运用这些技术将成为大学生的必备素养。 1.颐博查题 这是一个网站 在线搜题、题目答案分享网站。是我用过最好用的搜题类网站,还有小程序、公众号,用起来十分方便,想用哪个就用哪个。而且每天都可以免费使用。 …

【力扣 - 二叉树的中序遍历】

题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 提示&#xff1a; 树中节点数目在范围 [0, 100] 内 -100 < Node.val < 100方法一&#xff1a;递归 思路与算法 首先我们需要了解什么是二叉树的中序遍历&#xff1a;按照访问左子树——…

适用于预算少企业的网络组网方案

在中小企业的日常运营中&#xff0c;建立稳定高效的网络连接至关重要。无论是进行内部协作、访问云应用、处理大量数据还是与客户进行沟通&#xff0c;都需要一个可靠的网络基础设施。然而&#xff0c;由于预算有限和资源限制&#xff0c;中小企业在构建适合自身需求的网络环境…

java面试题之redis篇

1.redis 中的数据类型有哪些 随着 Redis 版本的更新&#xff0c;后面又支持了四种数据类型&#xff1a; BitMap&#xff08;2.2 版新增&#xff09;、HyperLogLog&#xff08;2.8 版新增&#xff09;、GEO&#xff08;3.2 版新增&#xff09;、Stream&#xff08;5.0 版新增&am…

php实现讯飞星火大模型3.5

前期准备 vscode下载安装好 composer下载安装好 php环境安装好 &#xff08;以上可以自行网上查阅资料&#xff09; 开始实现 1.注册讯飞星火用户&#xff0c;获取token使用 讯飞星火认知大模型-AI大语言模型-星火大模型-科大讯飞 2.修改对应php文件中的key等 可以参考…

Vue3自定义全局指令批量注册

指令封装代码&#xff1a; import type { App } from "vue";const content {mounted(el : any, binding : any) {console.dir(binding.value);el.remove();} };const operate {mounted(el : any, binding : any) {console.dir(binding.value);el.remove();} };cons…

第十篇:node处理404和服务器错误

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录</

PostgreSQL教程(四):高级特性

一、简介 在之前的章节里我们已经涉及了使用SQL在PostgreSQL中存储和访问数据的基础知识。现在我们将要讨论SQL中一些更高级的特性&#xff0c;这些特性有助于简化管理和防止数据丢失或损坏。最后&#xff0c;我们还将介绍一些PostgreSQL扩展。 本章有时将引用教程&#xff0…

有事休假店铺无人看守怎么办?智能远程视频监控系统保卫店铺安全

在春节期间&#xff0c;很多自营店主也得到了久违的假期&#xff0c;虽然很多店主都是长期在店铺中看守&#xff0c;但遇到春节这样的日子&#xff0c;多数人还是选择回乡休假。面对店主休假或有事不能管理店铺时&#xff0c;传统的监控虽然可以做到单一的监控&#xff0c;却仍…

【Vuforia+Unity】AR01实现单张多张图片识别产生对应数字内容

1.官网注册 Home | Engine Developer Portal 2.下载插件SDK&#xff0c;导入Unity 3.官网创建数据库上传图片&#xff0c;官网处理成数据 下载好导入Unity&#xff01; 下载好导入Unity&#xff01; 下载好导入Unity&#xff01; 下载好导入Unity&#xff01; 4.在Unity设…

白银交易新手指南:怎样选择可靠的现货交易平台?

在投资市场上&#xff0c;白银作为一种贵金属&#xff0c;具有较高的投资价值和风险防范功能。对于白银交易新手来说&#xff0c;选择一个可靠的现货交易平台是至关重要的。那么&#xff0c;如何挑选一个适合自己的现货交易平台呢&#xff1f; 1. 平台资质 一个正规的现货交易…

微信小程序-表单提交和校验

一、使用vant组件生成如下页面 二、前端代码如下 <form bindsubmit"submitForm"><view class"cell-group"><van-cell-group><van-field value"{{ title }}" label"商品名称" placeholder"请输入商品名称&qu…

不再烦恼!微信自动回复,消息秒回利器!

在当今社交网络高度发达的时代&#xff0c;微信已成为人们日常沟通不可或缺的重要工具。然而&#xff0c;随着微信好友数量的增加&#xff0c;消息的频繁和多样化也让人感到压力倍增。 针对这一现状&#xff0c;微信管理系统应运而生&#xff0c;为用户提供了一种便捷而高效的…

胶管生产中可自动控制外径的测径仪 你心动吗?

摘要&#xff1a;在线测径仪是测控一体的精密仪器&#xff0c;PID闭环控制方法&#xff0c;提升产品外径质量&#xff0c;可以说连测带控才是真绝色&#xff0c;为胶管品质负责。 关键词&#xff1a;胶管测径仪,测径仪,在线测径仪,外径测量仪,直径测量仪 引言 胶管应用领域众多…

云数据库 Redis 性能深度评测(阿里云、华为云、腾讯云、百度智能云)

在当今的云服务市场中&#xff0c;阿里云、腾讯云、华为云和百度智能云都是领先的云服务提供商&#xff0c;他们都提供了全套的云数据库服务&#xff0c;其中 Redis属于RDS 之后第二被广泛应用的服务&#xff0c;本次测试旨在深入比较这四家云服务巨头在Redis云数据库性能方面的…

2024-02-19(Flume,DataX)

1.flume中拦截器的作用&#xff1a;个人认为就是修改或者删除事件中的信息&#xff08;处理一下事件&#xff09;。 2.一些拦截器 Host Interceptor&#xff0c;Timestamp Interceptor&#xff0c;Static Interceptor&#xff0c;UUID Interceptor&#xff0c;Search and Rep…

C# OpenCvSharp DNN Image Retouching

目录 介绍 模型 项目 效果 代码 下载 C# OpenCvSharp DNN Image Retouching 介绍 github地址&#xff1a;https://github.com/hejingwenhejingwen/CSRNet (ECCV 2020) Conditional Sequential Modulation for Efficient Global Image Retouching 模型 Model Properti…

steam搬砖项目真的假的,2024年到底还能不能做?

2024年steam搬砖项目到底还能不能做&#xff0c;很多小伙伴比较关注国外steam搬砖项目&#xff0c;那steam搬砖到底需要什么东西就可以启动&#xff1f;它被很多人吹得天花乱坠&#xff0c;神神秘秘&#xff0c;高深莫测。甚至还有人说steam搬砖需要特定的环境和国外手机。 st…

【PX4-AutoPilot教程-TIPS】PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法

PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法 问题描述解决方法 问题描述 无人机在Gazebo中飞行时&#xff0c;无人机始终处于画面中央&#xff0c;会带着视角乱晃&#xff0c;在Gazebo中进行任何操作视角都无法固定。 观察Gazebo左侧Wo…