首页 > 其他分享 >老板:你来弄个团队代码提交规范

老板:你来弄个团队代码提交规范

时间:2024-10-14 10:23:50浏览次数:7  
标签:代码 规范 评审 提交 团队 禅道

大家好,我是陈哥,今天聊聊禅道的代码提交规范~

背景

《还不知道这个原则的程序员,要小心了》 的文章中,我提到了禅道的代码提交规范。简单来说,我们将工具融入到禅道团队的日常代码提交过程中,利用工具对流程、行为进行规范和约束。

接下来,我将从编码规范、测试规范等方面,和大家简单分享一下禅道团队的代码提交规范。为了方便大家了解和学习,大家可以扫码发送【代码提交规范】,免费领取禅道团队的代码提交规范。

一、编码规范

禅道团队规定: 开发人员每次本地提交(commit)时,变更行数不能超过20行。因此,大家一般采取小批量、多频次的方式提交。我们希望通过这种渐进式的代码改动,逐渐提高团队对代码提交规范的意识。

然而,在实际过程中,仅依赖团队成员的自觉性是远远不够的。因此,引入工具变得尤为重要,我们使用的是在自主研发的DevOps平台。我们在DevOps平台上增加了门禁。每当团队成员在本地进行commit操作时,就会触发hook,会对当前的代码进行diff检查。

如果变更的代码超过20行,团队成员的代码将无法commit。但如果某个开发人员变更了30行,然后又删掉了10行,那这次修改就算作20行。通过DevOps平台这类工具的硬性限制,禅道团队才能做好监督和约束。

此外, 团队成员在push代码时,禅道团队要求一次推送不超过60行, 结合前面提到的commit约束,也就是说每次推送不能超过3次提交。代码推送后,并不会存入代码库,而是发起代码评审(类似Gerrit)。人工评审通过后,代码才能保存到代码仓库中,与其他人的代码进行合并。这种方式适合主干开发,或者对代码质量有严格要求的团队。

其实,禅道团队的做法与 GitHub、 GitLab的流程有一定出入。GitHub是以PR(Pull Request)的方式来确保代码质量,但这种方式并不符合企业的实际流程要求,涉及过多的库 过多会花费较大精力。而GitLab是通多分支合并的方式实现代码评审,而我们会强制做事前代码评审,代码评审不通过就不入库。

在后续的研发管理中,我们还会考虑增加代码的覆盖率等要求,来不断完善和覆盖研发管理流程。

二、 测试驱动开发

禅道团队也曾做过TDD(测试驱动开发),在相当长的一段时间内,团队进行了大规模地单元测试补充。尽管最终全部补上了,但在此过程中,大家依旧没有形成一种自发自觉的习惯。

《勤训》写道:“无如人之常情,恶劳而好逸。”从人性的角度来说,人都是有惰性的。这种情况下,我们就必须要通过工具来强制规范大家的行为,达到提升效能的目的。

目前,我们通过工具强制执行单元测试:只有通过单元测试,代码才能提交。这包括小批次提交、强制性人工代码评审、强制性的调用本地测试代码检查等。

以禅道项目管理软件为例:

1. 集成了Git、Subversion、GitFox代码库,团队能够直接浏览和评审代码并针对代码提交任务或Bug,直接从代码层面跟进需求进度;

2. 集成了GitLab服务,GitLab用户关联禅道用户,关联issue到需求、任务、Bug、提交合并请求。

3. 集成了Jenkins服务,创建Jenkins构建任务,通过流水线进行自动构建,实现持续集成;

4. 支持SonarQube项目的维护和管理,在禅道中可以创建构建任务,并查看检查报告,让代码检测和问题管理更加高效便捷。

此外,我们还会强制性设计评审等流程。设计评审通过引导式表单进行,在后续我们也可能会加入流水线。

三、 禅道代码提交规范

在之前的开发环境中,禅道团队一直采用share+vim的方式。但vim对 competitor的支持相对较弱,如它仅支持编写代码,并没有聊天功能。鉴于此,我们的定制开发部门已切换到具有WAM模式的Visual Studio Code。经过一段时间的试行,我们发现效果还不错。

后续,我们会准备将整个公司都切换成Visual Studio Code,使用WAM模式,充分利用大模型的能力。另外,我们也会将这些集成到DevOps的流水线当中,并尝试利用大模型进行初步的代码评审。

总结来说,禅道团队的代码提交流程规范:执行强制性小批量提交,同时进行本地单元测试结果的检查,以及强制性的人工代码评审。实际上,在这之前,我们还存在一个强制性的设计以及设计评审环节。

具体的远程分支规范、Git仓库本地分支规范、标签命名规范等内容,我已经帮大家整理在文档中,大家可以备注【代码提交规范】即可免费领取。

希望我的分享可以帮助到你,也欢迎给我留言与我讨论。

标签:代码,规范,评审,提交,团队,禅道
From: https://www.cnblogs.com/chenqiAaron/p/18463530

相关文章

  • 10.12 代码源 2024 CSP-S 模拟赛 Day 14
    省流:\(100+0+0+8=108\)简称:唐诗T1T2T2很有思路,几分钟就推出来一个\(a_i\)不全为奇数的柿子,然后发现大样例是全为奇数的()然后就一直在推式子,然后快推完了比赛结束了……然后赛后发现全为奇数的用暴力搞……T3一眼DP但是想写T2,甚至连暴力都没码……正解是状压(一位大......
  • 毕业论文(设计)题目+毕设选题代码+paper+教程-计算机选题大集合-计算机视觉实战项目集
    选题(包括但不限于下列)基于YOLOv8的道路缺陷检测系统设计基于YOLOv5的手部关节骨龄预测系统设计基于CNN的雨雾天气下车辆检测和颜色识别系统基于YOLOv5算法的智慧零售商品识别系统设计基于YOLOv5的输电线路鸟巢检测系统设计基于深度学习的车型检测系统设计基于CNN的行......
  • yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
    多目标追踪+实例分割+目标检测YOLO(YouOnlyLookOnce)是一个流行的目标检测算法,它能够在图像中准确地定位和识别多个物体。本项目是基于YOLO算法的目标跟踪系统,它将YOLO的目标检测功能与目标跟踪技术相结合,实现了实时的多目标跟踪。在目标追踪+语义分割+目标检......
  • 基于YOLOv8的道路缺陷检测系统设计(代码+教程+pyqt)
    路面裂缝检测是计算机视觉在基础设施维护中的一个重要应用。使用YOLOv8进行路面裂缝检测的过程与绝缘子检测类似,包括数据准备、模型训练和部署。下面是一个详细的流程,包括代码示例。YOLOv8是YouOnlyLookOnce(YOLO)系列目标检测算法的最新版本,它以其快速和准确的目标......
  • 代码随想录2
    题目:移除元素:给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例1:给定nums=......
  • 102基于java ssm springboot软件技术交流平台系统代码分享(源码+文档+运行视频+讲解视
    项目技术:Springboot+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows......
  • 2021年华为杯数学建模竞赛D题论文和代码
     抗乳腺癌候选药物的优化建模乳腺癌是女性癌症高发性恶性肿瘤,近年来发病率和死亡率逐年上升,严重危害了女性健康。如何使用数学模型辅助专家高效研发抗乳腺癌药物具有重要意义。本文通过构建化合物的定量结构-活性关系(QSAR)模型来筛选潜在活性化合物,使其不仅具有较好的生物......
  • 2021年华为杯数学建模竞赛E题论文和代码
     草原放牧策略研究本文研究了多因素影响下的草原生态环境演化与放牧策略的关系,通过机理分析分别构建了放牧策略对土壤湿度、植被生物量、土壤化学性质影响模型,以此为基础得到了未来土壤湿度和土壤化学物质含量的预测值,并通过分析得到能够实现可持续发展的最优放牧策略和不......
  • 两段相同的代码【async await】
    asyncfunctiondoSubmitFile(){constfileInput=document.getElementById('fileInput')constfileObj=fileInput.files[0]constformData=newFormData()formData.append('file',fileObj)try{constresponse=await_axi......
  • 代码审计[二] [GYCTF2020]Easyphp
    代码审计做的好难受的一道反序列化[GYCTF2020]Easyphp参考[GYCTF2020]Easyphp-CSDN博客查看整个网站,尝试弱口令登录,不行。猜网页,register、upload都试了一下,发现www.zip可以下载网页源码。login.php<?phprequire_once('lib.php');?><?php$user=newuser();if(isset($_......