当前位置:网站首页>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。
- 检查的时机靠后,反馈周期较长。
常用的检查工具和实践
代码检查
人工评审
自动化测试
总结
边栏推荐
- Several common cross-domain solutions
- php弱类型-攻防世界lottery
- 再获权威认证!马上消费安逸花APP通过中国信通院“金融APP人脸识别安全能力评测”
- 创新云集技术咖,工赋汇聚实战派:2022工赋开发者峰会
- 0725-面试记录
- golang学习之七:并发编程基础(goroutine、channel、select)
- Remember the stuck analysis of an industrial automation control system in .NET
- redis summary_distributed cache
- erp系统和wms系统有什么区别
- MySQL基本语法
猜你喜欢
Wechat Gymnasium Appointment Mini Program Graduation Design Finished Work (5) Task Book
年轻人接棒大妈,金价跌回“4字头”,七夕迎黄金消费小热潮
一文看懂推荐系统:概要01:推荐系统的基本概念
脉脉上的相亲生意
mysql四种隔离级别
shell中awk命令的if条件语句引入外置变量
用函数递归的方法解决汉诺塔问题
腾讯架构师是如何解释:Redis高性能通信的原理(精华版)
Flink Learning 9: Configure the idea to develop the flink-Scala program environment
研发运营一体化(DevOps)能力成熟度模型
随机推荐
红队实战靶场ATT&CK(一)
golang刷leetcode动态规划(8)盈利计划
方法的使用
来亲自手搭一个ResNet18网络
golang刷leetcode 经典(6) 实现跳表
Several common cross-domain solutions
全面认识二极管,一篇文章就够了
我用这一招让团队的开发效率提升了 100%!
如何生成随机数+原理详细分析
在线文档Sheet技术解析
新特性解读 | MySQL 8.0 GIPK 不可见主键
IDEA相关配置(特别完整)看完此篇就将所有的IDEA的相关配置都配置好了、设置鼠标滚轮修改字体大小、设置鼠标悬浮提示、设置主题、设置窗体及菜单的字体及字体大小、设置编辑区主题、通过插件更换主题
golang源码分析(5):sync.Once
Taking advantage of cloud-network integration, e-Surfing Cloud has paved the way for digital transformation for government and enterprises
55.【sort函数的升序降序】
恒驰5真的没大卖
golang刷leetcode 经典(2)拓扑排序
C语言中的一系列操作符
土巴兔IPO五次折戟,互联网家装未解“中介”之痛
小程序毕设作品之微信体育馆预约小程序毕业设计成品(6)开题答辩PPT