如何做好 Code Review

最近公司的業(yè)務(wù)正在發(fā)展蓖墅,參與的人也越來越多库倘。但人數(shù)的增加也伴隨著風(fēng)險(xiǎn)的提升,良莠不齊的人員配置论矾,會(huì)使得代碼質(zhì)量難以控制于樟。這個(gè)時(shí)候,就需要在代碼入庫之前拇囊,加上一道質(zhì)檢步驟迂曲,通過這個(gè)質(zhì)檢步驟,能夠有限地規(guī)避一些風(fēng)險(xiǎn)寥袭。

本文以 Git 作為說明路捧,其他 VCS 工具,原理也大致相同传黄。

實(shí)現(xiàn)代碼審查杰扫,現(xiàn)在大體有兩種方式,分別是 類 Gerrit 或者 類 GitHub/Gitlab膘掰,這篇文章主要介紹后者章姓。

類 Gerrit

Gerrit 是最容易實(shí)現(xiàn)代碼審查的一種方式,它在真正倉庫和開發(fā)者之間建立了一個(gè)審核區(qū)域识埋,所有進(jìn)入代碼倉庫的代碼凡伊,都必須先通過這個(gè)審核區(qū)域。

git push origin dev/v1.0

這是最普通的提交方式窒舟,但在 Gerrit 中就不可以系忙。

git push origin HEAD:refs/for/dev/v1.0

上面是正確的提交方式,注意到兩者的區(qū)別了嗎惠豺?多了一個(gè) refs/for银还,這就是 Gerrit 的審核區(qū)域,只有通過審核洁墙,才能進(jìn)入主倉庫蛹疯。這里給了一個(gè)內(nèi)部實(shí)現(xiàn)圖,有興趣的同學(xué)可以參考热监,這里就不進(jìn)行額外介紹了捺弦。

gerrit_workflow

類 Gitlab/Github

重點(diǎn)說說這類代碼審查如何展開,因?yàn)楝F(xiàn)在公司使用的就是這種方案,而且 Gerrit 的顏值太低羹呵,哈哈骂际。

權(quán)限分組

首先需要對(duì)權(quán)限進(jìn)行分組疗琉,每個(gè)組的?擁有不同的權(quán)限冈欢,一般情況下分為 owner, master 和 developer。owner 擁有最高的權(quán)限盈简,master 次之凑耻。我們用的最多的權(quán)限組就是 master 和 developer。master 能夠在保護(hù)分支上直接 push柠贤,而 developer 就不能香浩。這樣通過權(quán)限的劃分,就能保證屬于 develop 這個(gè)組的人臼勉,?在沒有代碼審查的情況下不能將代碼入庫邻吭。

保護(hù)分支

在 Gitlab/Github 上有保護(hù)分支這個(gè)概念,當(dāng)一個(gè)分支屬于保護(hù)分支的時(shí)候宴霸,developer 是不能直接入代碼的囱晴。

我們所進(jìn)行的?工作,很多時(shí)候瓢谢,都是版本迭代開發(fā)畸写。因而會(huì)有分支去跟蹤當(dāng)前版本迭代。有一種比較好的劃分方式氓扛,是 master / dev/version? / features/version?枯芬。 master 保存著當(dāng)前最穩(wěn)當(dāng)?shù)拇a版本,而dev/version? 則是當(dāng)前開發(fā)版本的代碼采郎,features/version? 是這個(gè)版本代碼開發(fā)?feature的倉庫千所。

developer ?的權(quán)限只能在 features/version? 上進(jìn)行工作。?那么如何合并代碼?到 dev 分支了蒜埋?就只能通過提交 Merge Request真慢,審核通過后,?master 將代碼弄到 dev 分支上去理茎。

Merge Request

merge_request_select_branch

上圖就是提交 Merge ?Request 的界面黑界。開發(fā)者可以選擇自己所在的 features 分支,將相應(yīng)的 commit 提交申請(qǐng)到 dev 分支上皂林。master 會(huì)看到如下的界面朗鸠,該界面顯示?是否需要合并這個(gè) Request。

merge request

是不是很簡單础倍?更多信息可以查看官方文檔烛占,?還有這篇博客


文檔信息


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子忆家,更是在濱河造成了極大的恐慌犹菇,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評(píng)論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芽卿,死亡現(xiàn)場離奇詭異揭芍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)卸例,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門称杨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人筷转,你說我怎么就攤上這事姑原。” “怎么了呜舒?”我有些...
    開封第一講書人閱讀 169,941評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵锭汛,是天一觀的道長。 經(jīng)常有香客問我袭蝗,道長唤殴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評(píng)論 1 300
  • 正文 為了忘掉前任呻袭,我火速辦了婚禮眨八,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘左电。我一直安慰自己廉侧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評(píng)論 6 398
  • 文/花漫 我一把揭開白布篓足。 她就那樣靜靜地躺著段誊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪栈拖。 梳的紋絲不亂的頭發(fā)上连舍,一...
    開封第一講書人閱讀 52,874評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音涩哟,去河邊找鬼索赏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛贴彼,可吹牛的內(nèi)容都是我干的潜腻。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼器仗,長吁一口氣:“原來是場噩夢啊……” “哼融涣!你這毒婦竟也來了童番?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,249評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤威鹿,失蹤者是張志新(化名)和其女友劉穎剃斧,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忽你,經(jīng)...
    沈念sama閱讀 46,760評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡幼东,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了檀夹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筋粗。...
    茶點(diǎn)故事閱讀 40,973評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡策橘,死狀恐怖炸渡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丽已,我是刑警寧澤蚌堵,帶...
    沈念sama閱讀 36,631評(píng)論 5 351
  • 正文 年R本政府宣布霍比,位于F島的核電站最欠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏懈万。R本人自食惡果不足惜嘁灯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評(píng)論 3 336
  • 文/蒙蒙 一泻蚊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丑婿,春花似錦性雄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至诀拭,卻和暖如春迁筛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耕挨。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評(píng)論 1 275
  • 我被黑心中介騙來泰國打工细卧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人筒占。 一個(gè)月前我還...
    沈念sama閱讀 49,431評(píng)論 3 379
  • 正文 我出身青樓贪庙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赋铝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子插勤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 引言 午后的陽光,靜靜地照在你的臉上。這時(shí)候配上一杯82年的java农尖,腦子一片靈光閃過析恋,呃......上午剛寫完需...
    羅拙囈閱讀 2,769評(píng)論 4 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)盛卡,斷路器助隧,智...
    卡卡羅2017閱讀 134,722評(píng)論 18 139
  • 每天都做噩夢
    是錦兒閱讀 227評(píng)論 2 0
  • 采訪 / 林羽凡 孔為云 撰文 / 孔為云 林羽凡 黃一斕并村,女,浙江大學(xué)博士滓技,南京大學(xué)博士后哩牍,現(xiàn)任南財(cái)新聞學(xué)院副教...
    Olivia主編君閱讀 924評(píng)論 0 0
  • Mentor比我大7歲。5年前實(shí)習(xí)時(shí)帶我令漂,作為小跟班膝昆,很佩服他的眼界格局、整合資源尋求價(jià)值叠必、還有推進(jìn)項(xiàng)目時(shí)的為人處...
    糯小米R(shí)omy閱讀 526評(píng)論 0 51