老板:你來弄個團隊代碼提交規範
原創-
2024-10-11 17:00:00
-
2614
本篇目錄
大家好,我是陳哥,今天聊聊禅道的代碼提交規範~
背景
在 《還不知道這個原則的程序員,要小心了》的文章中,我提到了禅道的代碼提交規範。简单来说,我们将工具融入到禅道团队的日常代碼提交过程中,利用工具对流程、行为进行規範和约束。
接下来,我将从编码規範、测试規範等方面,和大家简单分享一下禅道团队的代碼提交規範。为了方便大家了解和学习,大家可以扫码发送【代碼提交規範】,免费领取禅道团队的代碼提交規範。
一、編碼規範
禅道團隊規定: 開發人員每次本地提交(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仓库本地分支規範、标签命名規範等內容,我已經幫大家整理在文檔中,大家可以添加阿道, 備注【代碼提交規範】即可免費領取。
希望我的分享可以幫助到你,也欢迎给我留言与我讨论。
-
禅道産品
禅道開源版 禅道企業版 禅道旗艦版 禅道IPD版 -
核心功能
産品管理 項目管理 質量管理 效能管理 -
使用文檔
基本版手冊 企業版手冊 旗艦版手冊 IPD版手冊 開發中心手冊 -
幫助中心
积分問答 常見問題 論壇交流 使用視頻 Gitee GitHub -
關于我們
關于我們 禅道軟件 最新動態 禅道活動 -
禅道社區
禅道博客 積分排行 積分商城 禅道書院 -
聯系方式
聯系人:金娟 電話:18562856230 微信:18562856230 Q Q:1826606239北京、上海、深圳分部