技術管理者---提升研發程式碼質量---程式碼稽核Code Review
本文是《技術管理者---提升研發程式碼質量》系列文章第三篇,第一篇整體介紹請看博文《技術管理者---提升研發程式碼質量---總體方法論》,第二篇整體介紹請看博文《技術管理者---提升研發程式碼質量---程式碼檢查工具Sonar》。本文重點講兩部分內容:1)GitLab MergeRequest介紹;2)研發體系流程中如何強制使用MergeRequest。
GitLab MergeRequest介紹
現在越來越多的企業選擇自建程式碼私服GitLab,用於託管本企業的產品程式碼。依附GitLab平臺,做Code Review有兩種方式,一種方式是使用外部同步系統Gerrit,第二種方式是使用GitLab自帶的Merge Request功能(當然還有其他的Code Review方式,博主就不介紹了)。 下面大致分析一下兩者的差異
結合第二篇博文中介紹的Gerrit使用的代價稍大一些,故博主所在公司使用GitLab自帶的Merge Request方式做Code Review。
同理,要想讓Code Review發揮作用,並且是持續的發揮作用,就必須將Code Review這一過程作為公司研發流程中必須經歷的一個環節,這樣才能保證Code Review持續的發揮作用。下面博主介紹GitLab的Merge Request與研發流程整合方法:
最重要的一環,Review管理員做MergeRequest的過程就是Code Review的過程,就這需要研發體系根據企業自身的研發規範與業務特徵,不斷沉澱出MergeRequest檢查項Item(博主將在後期單獨以一篇博文的形式介紹研發規範)。
研發體系流程中如何強制使用MergeRequest(配置、提交過程詳解)
- 建立GitLab賬號打通Idea(建開發人員賬號)
由管理員在GitLab中建立賬號:劉青/LiuQin/[email protected]/qwer1234,此過程較簡單。
- 建立開發人員SSH祕鑰上傳GitLab
在劉青機器所在客戶端建立SSH祕鑰:任意位置右鍵選單,選擇“Git Bash Here”
輸入如下內容(注意最後要回車三次):
$ git config --global user.name "LiuQin"
$ git config --global user.email " [email protected]"
$ ssh-keygen -t rsa -C "[email protected]"
到如上所在目錄,拿到id_rsa的內容,上傳到GitLab對應賬號當中:
- Idea依據遠端Dev分支,建立本地Dev分支(依據“研發體系怎麼使用GitLab 的MergeRequest(簡圖)”逐個展開詳解)
開發下載指定protected分支程式碼,並建立本地個人分支LiuQin_dev_20180820做開發(注意這裡必須將程式碼提交的目標分支設定為protected,只有管理員才能做Merge操作,不允許直接push到此分支)
- Idea依據本地Dev分支,建立個人Dev分支
- Idea在個人Dev分支開發程式碼,然後做Commit程式碼
- Idea中Checkout到Dev分支,Pull最新Dev分支程式碼
- Idea中Checkout到個人Dev分支,做原生代碼Merge(原Dev-->目的個人Dev)
- Idea中解決衝突,將個人Dev再次提交併Push到遠端伺服器
- 開發登入GitLab,看到自己分支發起MergeRequest請求
- Review管理員登入GitLab處理此MergeRequest做程式碼稽核工作
稽核通過程式碼入庫(刪除開發個人分支),稽核不通過直接關閉此MergeRequest
如果管理員處理MergeRequest做code view的時候,發現待合併的有衝突了,會出現如下的情況(需要儘量避免這種情況,因為GitLab頁面做程式碼Merge很不方便),需要處理好衝突 再通過。
通過點選上面的“Resolve conflicts”就可以處理衝突,然後再返回做code view,處理Merge Request即可。
這樣就可以將Code Review(用GitLab的Merge Request功能實現)作為研發流程必須經歷的一個環節發揮作用啦,祝各位讀者所在研發的研發質量越來越高。歡迎通過評論方式做討論。