难得请了年假 躺在阳光海浪仙人掌的沙滩上喝着椰汁 突然接到系统报警电话 立刻跳起来抱着电脑到处找WIFI的场景是否似曾相识。
身为技术开发 每逢放假恨不得烧香祈愿线上稳定 如果能够在问题引入前提前扼制风险 就可以放心享受悠闲的假期了。
而代码评审 就是扼制风险的有效手段之一。
代码评审带来的好处不言自明, 但企业业务快速发展的诉求与代码评审推动落地两者之间, 往往存在矛盾。在如今快速发展的互联网时代 数字化、智能化已经是基础能力 单纯只靠人肉审查的时代已经过去了 基于各种自动化检查能力的加持 其实代码评审并没有想象中那么费时费力。今天和大家聊一聊在快节奏的业务现状下基于云效代码管理产品云效Codeup如何更低成本的开展代码评审。
话题开始之前 先简单介绍下代码评审的概念。
代码评审 英文名是Code Review 简称CR 它是结对编程相互切磋相互学习的方式。一定频次的CR能够提升咱们的代码质量、促进人才成长。
一、提升代码质量
所谓代码质量 可以从两个维度来理解 一是可读性 二是减少缺陷。
二、促进人才成长
很多团队都由拥有不同经验的成员组成 代码评审是一个互相检查错误 互相学习代码的机会。如果团队的技术骨干人员 能参与到团队日常的架构评审、设计评审以及代码评审中 除了能够降低出错率 减少设计初期的风险故障外 还可以切切实实的帮助到其他研发人员的成长。体感更明显的团队会发现团队的开发质量在逐渐提高 并且不断在向团队最高水平成员靠拢。
我们可以基于评审过程的严格程度 把评审分为轻/重两类 可以根据自身业务情况选择最合适的评审方式。
1.轻评审很多企业管理者会觉得评审会耽误业务的迭代速度 评审和速度是鱼与熊掌不可兼得的事 当然业务最重要 评审就被自然舍弃了。
对于看重迭代速度的企业 轻评审是一个不错的选择 它没有强制的规则卡点 不要求评审人必须严格的阅读每一行代码给出评审意见 结合自动化检测的能力 在代码合并入重要分支的时候做一次安全和质量扫描 人力投入可控 可以更加灵活的根据当前业务状况决定是否立即合并代码 可以小成本的完成评审。
2.重评审而对于一些流程严格 或上线代码安全质量要求高的公司 从管理层就要求一系列评审的硬性卡点 包括自动化检查、必须通过的评审人数、评论解决状态等等 其中任何一条不满足都不允许合并 这种情况就需要使用重评审特性的一系列管控能力了。
还有一些企业 不仅对保护分支的合入强制管控 甚至对每一次提交都有要求 希望任何推送到服务端的代码都要经过评审 这种场景对评审的要求非常高 而Codeup创新的集中式工作流 Agit-Flow 可以很好的解决这个场景。
接下来我们先看下常规的评审流程是什么样子的
代码评审主要分为三个阶段 评审开始、评审中和评审结束。
常规流程中各个阶段存在的主要困难有
常规的代码评审流程主要有以下问题
1.创建评审麻烦 评审的创建需要手动填写大量信息 很多操作是重复劳动或是无从下手的
2.人力投入成本高 最传统的代码评审是结对编程 以及团队圆桌评审 人力的投入显而易见。代码评审转移到线上后 仍然需要多人仔细校对、分析和线下讨论。缺少自动化评审手段是关键。
3.评审流程体验差 评审过程中纯文本的代码难以展现代码的深刻逻辑 代码是立体的 部分改动的方法需要去查看定义和引用才能看出问题 否则只能是蜻蜓点水 效果有限 负责的评审人往往需要结合本地IDE来配合使用。评审发起人收到评论后 需要去本地修改提交后 再回复评论 路径很长。评审的通过、合并也没有卡点规则 任何有权限的人都能做这些操作 却可能会忽略评审的问题没有解决 导致本可以提前解决的问题带入线上生产环境。
4.评审活动情况难评估 管理者常常希望能够衡量 团队的成员是否真正践行评审 保证评审质量 而不是随意通过评审 只是走个流程。
针对常规代码评审存在的问题 云效Codeup 通过智能算法和流程管控能力 让评审更加高效。
1.提升创建速度创建评审需要填写一堆基础信息 云效Codeup 努力将用户需要输入的内容压缩到最少
增加了自动填充源、目标分支的功能 支持评审人推荐 基于代码库的历史操作 将最熟悉你改动代码的库成员推荐为评审人 让你方便的选择最适合的评审者 针对总是需要重复选择评审人的问题 保护分支支持设置默认评审人 减少冗余手工操作。如果你有按目录设置评审人的强大意愿 还可以使用CodeOwner模式 比如A目录让甲同学负责 B目录下的文件由乙同学负责 设置后会将对应目录的代码负责人自动加为评审人。2.降低人力投入评审的人力投入是最大的成本 随着自动化扫描能力的增加 人工评审前的机器预评审成为了主流。
云效Codeup 提供了代码扫描能力 守护代码安全和质量。内置的代码扫描包括【代码规约扫描】、【依赖包漏洞扫描】、【敏感信息扫描】、【补丁推荐扫描】 也可以基于云效的 Flow 流水线 配置单元测试和自定义扫描节点 例如【源码漏洞检测】、PHP/Python/Go 等常见语言的代码扫描 再将结果关联到评审上。
对于比较简单的评审 自动化测试的保障已经足够 大大减少了人力和时间投入成本 同时也防控了缺陷的引入。
3.优化评审流程体验网页端对于浏览简单逻辑的代码非常方便 但是如果存在较多互相引用的函数调用 阅读起来就比较费力了。云效Codeup 针对评审复杂情况 支持了网页端的函数引用快速跳转 我们称为智能语法服务 避免在网页上艰难的切换文件视图 对于习惯本地IDE看代码的同学 云效Codeup 也支持了IDEA的代码评审插件 不用来回切换编辑器和网页 直接在IDEA里面就可以进行代码评审 甚至一键合并代码 非常方便。
另外 通常一个特性可能需要多人协作开发 为了减少合并代码时的冲突 云效Codeup 提供了冲突预检测的能力 支持通过网页端的 WebIDE 自动解决冲突并快速提交。
在评审协作通知方面 评审的关键动态支持通过站内信、邮件、钉钉的方式及时通知到评审参与方 避免你等我我等你的尴尬 能够更高效的推进评审的进度 更快一步完成迭代。
4.支持查看评审活动情况Codeup 针对评审活动 提供了单独的度量报表 可以看到仓库内每次提交是否经过了评审 查看提交和代码行的评审率 每个仓库成员的评审活动参与次数 收到评审邀约的响应速度 如果有同学评审总是拖延 可能他就是迭代的一个阻塞点 也许应该为他减轻工作或者选择其他评审人帮助补位
在评审活动中 我们也是鼓励评论的 有问题说出来 无论是疑问还是夸赞 也方便后续的回顾追溯。此外 千行代码评论数也可以作为管理者对评审有效性评估的可视化度量参考。
说了这么多 你现在还觉得代码评审会是业务飞驰的绊脚石吗 好的理念要付出实践 快去试试吧
了解 Agit-Flow 阿里巴巴集中式工作流 让创建代码评审像提交一样简单 http://t.tb.cn/36VCKdTVaMGVfKFMLFcyuo
云效 Codeup 支持本地代码评审插件 Cloud Toolkit 编码间隙高效评审 打开「IntelliJ IDEA」- 「Preference」- 「Plugins」 搜索 “Alibaba Cloud Toolkit” 点击安装即可 云效 Codeup 是开放给所有开发者的免费企业级代码托管产品 免费、免费、免费 重要的事情说三遍作者 许力 阿里云原生多模数据库Lindorm与东软云科技推出联合解决方案 共建面向...
1.我手机掉进厕所了怎么办?是屎在给我发信息吗? 2.生活就像新闻联播,不是换...
年味到底是什么?不同的时代,人们迎接春节的方式也在变换。 在70后的眼里,年味...
1.男女之间是真的可以有纯友谊的,只要一个打死不说一个装傻到底。 2.不要迷恋...
我们将创建以下三个Shell脚本来锁定和解锁多个帐户和查看账号状态。 创建锁定用...
?又到一年毕业季,即将开启(实习及正式)职场生涯的同学们会有不少疑惑。比如,...
新冠肺炎疫情的全球大流行不仅深刻影响了世界政治经济格局的发展演进,而且加速...
数据目录已成为企业数据管理策略的重要组成部分,但选择合适的数据目录并不是简...
Knative 是基于 Kubernetes 的开源 Serverless 应用编排框架。阿里云 Knative 在...
1.世界上最悲哀的事莫过于睡眠不足,尤其是在感冒的时候。 2.我是一个很有原则...