首页 > 其他分享 >快刀斩乱麻,DevOps让代码评审也自动起来

快刀斩乱麻,DevOps让代码评审也自动起来

时间:2024-04-23 09:11:25浏览次数:31  
标签:开发人员 代码 DevOps 评审 快刀斩乱麻 团队 Bug

在Dr.Michaela Greiler的  How Code Reviews at Microsoft一文中提到,微软有140000名员工,其中44%员工是工程师。这意味着,有超过6000名的工程师同时在同一个代码库上开发Office、Visual Studio、Windows等产品。

想要确保不同子团队开发的代码能完美协作,并不是一件易事。 那么,如此大的工程师规模下,微软到底是如何确保代码质量的呢?秘密在于代码评审!

微软针对900多名开发人员的调查研究表明,有36%的开发人员表示他们一天回进行多次代码评审。以天为单位和以周为单位的开发人员分别占比39%和12%,仅有13%的开发人员一周内未进行任何代码评审。

(图片源自微软调查报告)

代码评审是指在软件开发过程中,对编写的代码进行系统检查和评估的过程。这是一种质量控制方法,旨在发现代码中的潜在Bug。 由此可见,代码评审起到了不可忽视的重要作用,从而确保代码可以在如此大规模的开发人员内实现顺畅的协作。

一、是什么绊住了你的代码评审?

代码评审有着诸多好处,如提高代码质量、发现代码中的缺陷、知识转移等。代码评审的步骤看似很简单,只需要“提交-修改-完善”,但实际过程往往会发生一些预期之外的事情,而这些事情则会降低整个代码评审的积极性甚至可能影响团队的工作效率。

  • 评审时间过长

《软件工程通史》的作者卡珀斯·琼斯(Capers Jones)分析了超过12000个软件开发项目, 从实验分析结果看,一般的代码评审速度约是一小时150行源代码。但对于一些关键的软件(例如安全关键系统的嵌入式软件)来说,一小时审查数百行源代码的审查速度太快,可能无法找到其中的问题。

我们不难看出,虽然代码评审对于发现潜在Bug起到了重要的作用,但也需要投入大量的时间,像业务需求不稳定、时间要求紧迫的项目,就难以进行代码评审。

 

  • 评审效果难以衡量

代码评审的好处通常在长期和多次的实践中才能显示出来。通过代码评审,团队成员可以学习和应用更好的编码技巧和设计原则,从而提高自身的编码能力。这种个人和团队的成长需要时间和经验的积累,因此,代码评审的效果在短期内可能不容易观察到。

 

正是这些原因, 导致不少开发人员的代码会出现“管他有几个Bug,能跑就行”的现象。长此以往,就会出现“屎山代码”导致可读性差、可维护性差等情况。

(当你把代码写成一坨屎,仍然能运行时)

二、DevOps平台在代码评审中的作用

代码评审并不是浪费时间,代码评审一般可以找到并消除约65%的Bug,最高可以到85%。为了解决绊住代码评审的困难,越来越多的团队开始采用DevOps平台来辅助代码评审,DevOps平台提供了一种集成和协作的环境,使得代码评审过程更加高效。

  • 代码可视化和协作

代码仓库通过版本控制系统(如Git)管理代码的不同版本和变更历史。代码评审可以针对特定的代码版本进行,通过对比不同版本之间的变更,开发人员可以更好地理解代码的演变过程和改动内容。同时,代码仓库提供了一个协作平台,团队成员可以在同一个代码库中/共同开发和维护代码。

  • 使用代码静态分析工具

静态代码分析是一种在不执行代码的情况下对代码进行测试的方法,开发人员可以通过DevOps平台管理SonarQube等静态代码分析工具,自动检测潜在的代码Bug,如空指针引用、未使用的变量等。

  • 纳入CI/CD过程

我们可以将代码评审纳入持续集成和持续交付过程。每当有新的代码提交时,自动触发构建、测试和评审流程。这样可以及早发现问题,并确保高质量的代码被纳入主干分支。

  • 数据分析和报告

DevOps平台可以收集和分析代码评审的数据,提供有关代码质量和审查效率的指标和报告。这些数据可以帮助团队了解代码评审的效果,并进行持续改进。例如,通过分析代码评审的结果和Bug的修复时间,团队可以识别代码质量问题的瓶颈,并采取相应的措施进行改进。

 

三、写在最后

一个成熟的团队中,代码评审是整个研发流程中不可或缺的一步。我们注重代码审查的前提是一定要注重代码规范,统一的代码规范才有助于项目研发有效推进。

在此分享一下,禅道团队的代码规范原则:

  • 是否是驼峰还是匈牙利方法不重要,重要的是执行;
  • 最重要的是命名,与其绞尽脑汁写注释,不如想象如何命名;
  • 好的版式易于阅读,学会用换行和注释做代码片段区隔;
  • 注释最重要是正确,一定要和代码保持同步。

 通过上文,我们不难看出,DevOps在代码评审方面发挥着积极作用,能够提高代码评审的效率。 禅道积极响应市场,推出了 禅道DevOps平台版,这不仅仅打通了从产品、需求、项目到开发、测试、运维环节,还具有加快交付速度、提高交付质量、减少团队摩擦、实现快速反馈等优势。

(禅道DevOps平台)

“冰冻三尺非一日之寒,滴水石穿非一日之功”。虽然代码评审会耗费团队不少的精力和时间,但我们不能低估它的长期价值,坚持下去必然会让整个代码库、系统甚至团队更加健康。

标签:开发人员,代码,DevOps,评审,快刀斩乱麻,团队,Bug
From: https://www.cnblogs.com/chenqiAaron/p/18152058

相关文章

  • 掌控基础设施,加速 DevOps 之旅:IaC 深度解析
    在当今的DevOps世界中,基础设施即代码(IaC)是一个非常重要的概念。它在整个行业几乎无处不在,是现代工程角色的绝对关键。 本文将主要包含IaC的定义和它的好处,同时将Walrus作为最佳实践来进行详细讲解。 什么是基础设施即代码(IaC)用最简单的话来说,就是使用代码定义需要在......
  • IaC:实现持续交付和 DevOps 自动化的关键
    基础架构即代码(IaC)和CI/CD流水线最初似乎并不匹配。因为它们代表了两种不同的流程。IaC主要关注基础设施的配置和开发,而CI/CD则围绕软件开发、测试和部署。 然而,将IaC集成到CI/CD流水线中具有多种优势。首先,它可以将新资源调配到部署流程中。此外,一旦资源使用完毕,就能......
  • 揭秘2024年DevOps顶级工具
    DevOps工具对于作为价值流的基本要素的透明度、自动化和合作起着决定性作用。这些工具对于建立一个高效的信息和技术知识分享及交换渠道至关重要,涵盖了包括开发、运维、安全和商业团队在内的所有相关方。这种合作方式确保了沟通和知识能够顺畅流动,极大地促进了产品交付流程的效......
  • 测试和评审
    测试消除缺陷的步骤 发现待测程序的一个异常行为理解程序的工作方式调试程序,找出出错的位置,确定出错的原因确定修改方案,修改缺陷回归测试,以确认修改有效 评审消除缺陷的步骤遵循评审者的逻辑来理解程序流程发现缺陷的同时,也知道了缺陷的位置和原因修正缺陷 经过......
  • 如何描述核心技术?从一个项目评审答辩说起。
    今天去参加我之前做的一个项目参与政府某领域科创申报的评审答辩,开始照例介绍PPT内容巴拉巴拉介绍完成后,就开始了专家评审答辩过程。当专家问到项目产品有什么核心技术的时候,虽然参会前就知道专家会问这样的问题,但一直不知道如何作答,因为项目使用的都是一般项目会使用到的技术,比如......
  • 聊聊发版提测和发布评审
    看到有同学提问关于测试准入准出标准的问题,说自己公司研发测试流程混乱,线上发布后问题比较多,不知道如何优化解决。其实这个问题一般在初创公司或者新项目出现的比较多,优化的方向和方法业内也比较成熟了,这篇文章谈谈我对于准入准出的理解。 从软件工程的角度来说,一个软件产品......
  • DevOps已死?2024年的DevOps将如何发展
    随着我们进入2024年,DevOps也随之发生变化。新兴的技术、变化的需求和发展的方法正在重新定义有效实施DevOps实践。IDC预测显示,未来五年,支持DevOps实践的产品市场继续保持健康且快速增长,2022年-2027年的复合年增长率(CAGR)为16.1%。其主要原因是将安全纳入DevOps流程的需求日益增长,......
  • 【微服务篇】从零开始构建DevOps体系
    DevOps是一种组合了“Development(开发)”和“Operations(运维)”的术语,它不仅是一套流程和方法,更是一种文化和哲学。DevOps旨在通过自动化软件开发和信息技术操作,以及增强这两个领域之间的协作和通信,来提高软件交付的速度和质量。其核心目标是缩短系统开发生命周期,同时提供高质......
  • 2024三掌柜赠书活动第十九期:DevOps企业级CI/CD实战
    目录目录前言关于CI/CD企业级CI/CD实战关于《DevOps企业级CI/CD实战》编辑推荐内容简介作者简介图书目录书中前言/序言《DevOps企业级CI/CD实战》全书速览结束语前言作为开发者,对于编程语言并不陌生,随着技术圈的不断进步和发展,越来越多的编程语言诞生和问世。......
  • [Devops] ubuntu 重装 nvida-docker 驱动
    重装nvidia-docker2apt-getremovedockerdocker-enginedocker.iocontainerdruncapt-getinstallapt-transport-httpsca-certificatescurlgnupg-agentsoftware-properties-commoncurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudoapt-keyadd-a......