当前位置:网站首页>DevOps之代码检查
DevOps之代码检查
2022-08-02 17:43:00 【InfoQ】
什么是代码检查

为什么要做代码检查
- 可读性:代码不只是给机器理解的,也是给人看的。要能够使团队中的每个人都能容易的阅读和理解代码。
- 可维护性:当维护和测试高质量的代码时更加容易、安全和省时,且不易出问题。
- 减低技术债务:高质量的代码设计良好,技术债少,开发人员无须花费大量的时间修复代码的问题和重构,因此,可以加快软件开发的进度。新团队成员容易理解代码,更容易加入项目。
代码检查实践方法
本地检查
- 按照检查前置的原则,本地检查的时机是最合适的,发现问题和修复问题的成本是最低的;
- 因为是在本地执行,执行检查的效率最快。
- 需要开发人员具有很高的自觉性。
- IDE 插件:SonarLint、FindBugs、CheckStyle、PMD、阿里规范插件等,可以检查代码的编码风格,坏味道,漏洞等。
- 本地构建:maven 编译、gradle 编译,可以检查代码语法问题,是否能够编译过。
- 本地测试:单元测试,可以检查代码的逻辑问题。

本地提交检查
- 检查的时机适中;
- 检查的效率较高;
- 基于 Git 的 Hook 机制,在每次提交时运行 Hook,自动识别代码中的简单问题,代码审阅者只专注于代码逻辑和系统结构,避免因为琐碎的样式问题而浪费时间。
- 本地提交对提交速度要求很高,只能进行省时的静态检查,如代码风格等;
- 客户端的 Hook,因为是在开发人员本地,并未实现完全“强制”检查;
- 同样依赖开发人员的自觉性。
远程提交检查
- 能够进行较为深层次的动态检查,比如漏洞、Bug,检查的效果较好;
- 能够做到强制检查,保证任何人提交的代码都是高质量的;
- 代码提交后并未直接提交到代码库中,可以加入人工评审环节,可以检查代码的业务逻辑和架构设计等较复杂问题;
- 可以控制每次提交的代码质量。
- 检查的时机靠后,反馈周期较长;
- 需要搭建代码检查服务器;
- 维护成本较高;
- 每次提交都检查,会拖慢团队的开发节奏。
分支合并检查
- 每次在分支合入时进行检查,既能控制合入其他分支的代码质量,又不会对开发节奏造成影响;
- 分支合并时一般表示一个功能和问题开发完成,可以有相对充足的时间执行较为深层次的动态检查,比如漏洞,Bug 等;
- 可以设置强制检查,保证合入分支的代码是高质量的;
- 可以做 Code Review,评审人一次性评审完整的功能代码(不推荐长期分支,大功能开发);
- 代码托管平台支持,如 GitHub、GitLab。
- 检查的时机靠后,反馈周期较长。
常用的检查工具和实践
代码检查
人工评审
自动化测试
总结
边栏推荐
- 多聚体/壳聚糖修饰白蛋白纳米球/mPEG-HSA聚乙二醇人血清白蛋白纳米球的制备与研究
- 55.【sort函数的升序降序】
- golang刷leetcode 经典(6) 实现跳表
- 「全球数字经济大会」登陆 N 世界,融云提供通信云服务支持
- 谁抢走了华大基因的生意?
- 发挥云网融合优势,天翼云为政企铺设数字化转型跑道
- mui中使用多级选择器实现省市区联动
- Simulink脚本自动创建Autosar Parameter Port及Mapping
- 一文搞懂│php 中的 DI 依赖注入
- Since September, China has granted zero-tariff treatment to 98% of tax items from 16 countries including Togo
猜你喜欢

小程序毕设作品之微信体育馆预约小程序毕业设计成品(7)中期检查报告

Taking advantage of cloud-network integration, e-Surfing Cloud has paved the way for digital transformation for government and enterprises

灵动微电子发布低功耗 MM32L0130 系列 MCU 产品

MySQL基本操作和基于MySQL基本操作的综合实例项目

【秒杀办法】根据二叉树的先序遍历、中序遍历、后序遍历快速创建二叉树

HDF驱动框架的API(1)

故障分析 | 一条 SELECT 语句跑崩了 MySQL ,怎么回事?

如何生成随机数+原理详细分析

在线文档Sheet技术解析

土巴兔IPO五次折戟,互联网家装未解“中介”之痛
随机推荐
本地MSE播放fragment mp4服务
【案例】2D变换-旋转动画
How Tencent architects explained: The principle of Redis high-performance communication (essential version)
多聚体/壳聚糖修饰白蛋白纳米球/mPEG-HSA聚乙二醇人血清白蛋白纳米球的制备与研究
golang刷leetcode动态规划(10)编辑距离
创新云集技术咖,工赋汇聚实战派:2022工赋开发者峰会
C# 术语
Go 语言快速入门指南:第二篇 变量与常量
Several common cross-domain solutions
golang源码分析(5):sync.Once
发挥云网融合优势,天翼云为政企铺设数字化转型跑道
玩转云端 | 天翼云对象存储ZOS高可用的关键技术揭秘
一文看懂推荐系统:概要01:推荐系统的基本概念
查看数据库数据量大小,占用磁盘大小
再获权威认证!马上消费安逸花APP通过中国信通院“金融APP人脸识别安全能力评测”
php弱类型-攻防世界lottery
年轻人接棒大妈,金价跌回“4字头”,七夕迎黄金消费小热潮
故障分析 | 一条 SELECT 语句跑崩了 MySQL ,怎么回事?
LiveGBS国标GB/T28181流媒体平台支持主子码流切换主码流stream/streamprofile
牛津硕士进碳圈,高瓴红杉经纬一起投了