定義
Code Review代碼評審是指在軟件開發(fā)過程中,通過對源代碼進(jìn)行系統(tǒng)性檢查的過程贞绵。通常的目的是查找各種缺陷佛寿,包括代碼缺陷、功能實(shí)現(xiàn)問題但壮、編碼合理性冀泻、性能優(yōu)化等;保證軟件總體質(zhì)量和提高開發(fā)者自身水平蜡饵。
之前團(tuán)隊(duì)使用的分支策略弹渔,貼近 git-flow。而基于git-flow 難以進(jìn)行code review溯祸。后面采用git-flow結(jié)合gitlab-flow工作流作為分支管理策略肢专。
code review 的好處
很多舞肆。略。
code review 形式
Team Review / Code Review Meeting:就是將團(tuán)隊(duì)成員都組織起來開會博杖,讓代碼Owner上去講自己代碼的實(shí)現(xiàn)和思路椿胯,其它人發(fā)表意見和進(jìn)行討論,
Single Review:就是項(xiàng)目owner提交代碼之后剃根,讓reviewer在空閑的時候幫忙評審代碼哩盲,并且寫出批注,owner收到批注后狈醉,進(jìn)行修改或者回復(fù)廉油。
peer review:reviewer 并不是只有組長/架構(gòu)師才能做。需要所有經(jīng)驗(yàn)豐富或有專長的同學(xué)參與其中苗傅。
架構(gòu)師/負(fù)責(zé)人 review
建議采用single review抒线。peer review 結(jié)合架構(gòu)師review。例如:架構(gòu)師review前渣慕,代碼提交者可視情況申請經(jīng)驗(yàn)豐富的同學(xué)做 peer review嘶炭。
在feature分支merge到develop分支的時候做code review。
develop分支 merge 到 release時要控制合并的范圍:因?yàn)閐evelop會包含各個feature 分支合并上來的代碼逊桦。但不一定所有feature都包含在此次發(fā)布的范圍內(nèi)眨猎。
code review 實(shí)施要點(diǎn)
使用GitLab進(jìn)行Code Review就是在分支合并環(huán)節(jié)發(fā)起 Merge Request。然后Code Reviewer進(jìn)行代碼審核卫袒。
Code Reviewer review 完成后將代碼合并到目標(biāo)分支。
保證必須以Merge的方式變更develop分支单匣、release分支夕凝、以及master分支。對Push以及Merge權(quán)限進(jìn)行限制
IDEA插件:Gitlab projects Gitlab integration户秤。發(fā)起Merge Request請求
附:幾種分支管理策略
Git-Flow 工作流
master 和 develop 是長期分支码秉。master 分支上的代碼都是版本發(fā)布狀態(tài);develop 分支則代表最新的開發(fā)進(jìn)度鸡号。
當(dāng)需要開發(fā)某些功能時转砖,就從 develop 拉出 feature 分支進(jìn)行開發(fā),開發(fā)完成并驗(yàn)證后就可以合并回 develop 分支鲸伴。當(dāng) develop 上的代碼達(dá)到一個穩(wěn)定的狀態(tài)府蔗,可以發(fā)布版本的時候,會從 develop 合并到 release 分支進(jìn)行發(fā)布汞窗,如果驗(yàn)證有問題就在 release 分支進(jìn)行修復(fù)姓赤,修復(fù)驗(yàn)證通過后進(jìn)行正式發(fā)布,然后合并到 master 分支和 develop 分支仲吏。還有一個 hotfix 分支用來做線上的緊急 bug 修復(fù)不铆,hotfix 直接從 master 拉出分支修改蝌焚,修改驗(yàn)證完成后直接合并回 master,并同步到 develop 分支誓斥。
Git-Flow 流程非常完善只洒,但會稍微有些復(fù)雜,而且沒有圖形頁面劳坑。
GitHub 工作流
GitHub 工作流只有一個長期分支 master毕谴,而且 master 分支的代碼永遠(yuǎn)是可發(fā)布狀態(tài)。如果有新功能開發(fā)泡垃,可以從 master 分支上檢出新分支析珊,開發(fā)完成需要合并時,創(chuàng)建一個合并到 master 到 PR蔑穴,也就是 pull request忠寻。當(dāng) review 通過或者驗(yàn)證通過后,代碼合并到 master 分支存和。GitHub 工作流中 hotfix 熱修復(fù)的流程和 feature 分支完全一樣奕剃。
GitLab 工作流
GitLab 結(jié)合了前兩者的優(yōu)勢,既支持 Git-Flow 的多分支策略捐腿,也有 GitHub Flow 的一些機(jī)制纵朋,比如 Merge Request和 issue 跟蹤。GitLab工作流使用 pre-production 分支來進(jìn)行預(yù)發(fā)管理茄袖,使用 production 分支來發(fā)布版本操软。
可以限定關(guān)鍵分支如:develop、master宪祥、release 必須以Merge的方式變更聂薪。對Merge和Push的權(quán)限進(jìn)行限定。僅 Code Reviewer 具備這些分支的Push蝗羊、Merge權(quán)限藏澳。
參考:
http://szuwest.github.io/code-reviewfang-an.html
Gitlab & IDEA 插件執(zhí)行 Code Review 過程