国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

我們是怎么做Code Review的

移動開發(fā) 開發(fā)
本文是介紹我們公司是如何實施Code Review的,我們是如何解決我們遇到的問題的,希望我們的經(jīng)驗?zāi)芙o大家?guī)硇椭?/div>

前幾天看了《Code Review 程序員的寄望與哀傷》,想到我們團隊開展Code Review也有2年了,結(jié)果還算比較滿意,有些經(jīng)驗應(yīng)該可以和大家一起分享、探討。
我們?yōu)槭裁匆菩蠧ode Review呢?我們當時面臨著代碼混亂、Bug頻出的狀況。
當時我覺得要有所改變,希望能提高產(chǎn)品的代碼質(zhì)量,改善開發(fā)團隊面臨的困境。并且我個人在開發(fā)上有很多經(jīng)驗,也希望這些知識能夠在團隊內(nèi)傳播。
各種考慮后,我們***認為推行Code Review能改善或解決我們面臨的很多問題。

這篇文章的目的不是告訴大家怎么在一個團隊內(nèi)推行Code Review,首先因為我個人僅在一家公司內(nèi)推行過,并沒有很多經(jīng)驗。
其次每家公司、每個團隊的情況都不太一樣,應(yīng)該根據(jù)公司或團隊的實際情況選擇恰當?shù)姆桨福⒏鶕?jù)成員的反饋來及時調(diào)整,推動Code Review的實施。
所以,本文是介紹我們公司是如何實施Code Review的,我們是如何解決我們遇到的問題的,希望我們的經(jīng)驗?zāi)芙o大家?guī)硇椭?br /> 行文倉促,如有遺漏或錯誤,歡迎指正。

***程和規(guī)則

經(jīng)過簡單的對比、試用,我們***采用了Git Flow+Pull Request(PR)模式來做Code Review。(PR模式詳情可參見 Git工作流指南:Pull Request工作流

Pull Request(PR)簡單的說就是你沒有權(quán)限往一個特定的倉庫或分支提交代碼,你請求有權(quán)限的人把你提交的代碼從你的倉庫或分支合并到指定的倉庫或分支。
由于PR需要有權(quán)限的人確認,所以非常適合在這個過程中做Code Review,是否接受或者拒絕就取決于Code Review的結(jié)果。
在支持PR模式的軟件里,每一個PR都有一個新增代碼的對比(diff)界面。
代碼審核者可以在線瀏覽請求合并的新增代碼,并針對有疑問的代碼行添加評論,通過這種方式來實現(xiàn)Code Review。
評論可以被所有有權(quán)限查看倉庫的人看到,每個人都可以回復(fù)任何人的評論,有點像論壇里某個帖子的討論。
這種模式是事后審核,也就是代碼已經(jīng)提交到了中心倉庫,Review過程中頻繁的改動會造成歷史簽入記錄的混亂。
當然Git可以采用更改歷史記錄來解決這個問題,由于容易誤操作,我們一般只在基礎(chǔ)類庫這類要求比較嚴格的項目上實施。

我們所了解到的支持PR模式的軟件都采用Git作為源代碼版本控制工具,所以我們的源代碼版本控制工具也遷移到了Git。
由于Git太靈活了,因此誕生了很多的Git流程,用來規(guī)范Git的使用。
常見的有集中式工作流、功能分支工作流Gitflow工作流、Forking工作流、Github工作流。
我們對Git Flow做了些調(diào)整,調(diào)整后的流程被命名為Baza Flow,定義見后文。
根據(jù)Baza Flow,我們大部分倉庫只定義了2個主干分支,master和develop。(例外,我們有一個倉庫有3個開發(fā)小組同時進行開發(fā),定義了4個主干分支,目前還比較順暢,再多估計主干分支之間的合并就比較繁瑣了。)
master對應(yīng)生產(chǎn)環(huán)境代碼,所有面向生產(chǎn)環(huán)境的發(fā)布來源都是master分支的代碼。develop則對應(yīng)本地測試環(huán)境的代碼。
絕大多數(shù)情況下,QA(測試)只測試develop分支和master分支的代碼。

由于開發(fā)人員都在一個團隊內(nèi),所以我們沒有采用基于倉庫的PR,采用的是基于分支的PR。
我們對主干分支的操作權(quán)限做了限制,只有特定的人才能操作,develop分支是項目開發(fā)Leader和架構(gòu)師,master分支是QA。
有權(quán)限往主干分支合并的成員會按照約定的規(guī)則來執(zhí)行合并,不會合并沒有完成審核的PR。
上面這點其實蠻重要的,所以我們會對有權(quán)限合并的人有特別的約定,在什么情況下才能合并代碼。(見后文PR的說明)
PR的發(fā)起人要主動的推動PR的審核,Leader也會密切關(guān)注PR審核的進度,在需要的時候及時介入。

我們配置了CI服務(wù)器(什么是CI)只編譯特定的分支,通常是develop和master分支。
所有的代碼合并到了主干分支之后,都會自動觸發(fā)編譯和本地測試環(huán)境的發(fā)布,QA無需依賴開發(fā)人員編譯的代碼來測試,也無需自己手工操作這些,保證了開發(fā)人員和測試人員的相互獨立。
我們本地測試環(huán)境的發(fā)布包含了數(shù)據(jù)庫和站點的發(fā)布,全自動的,發(fā)布完成以后就是一個可用的產(chǎn)品,有時間這部分也可以分享一下。

我們還使用了Scrum里面一個很重要的概念:完成定義。
就是我們規(guī)定了我們一個任務(wù)的完成被定義為:代碼編寫完成,經(jīng)過自測,提交的PR經(jīng)過審核并且合并到主干分支。
也就是說,所有的代碼被合并到了主干分支之后任務(wù)才算是完成,而被合并到主干分支必須要經(jīng)過Code Review,這是強制的。

 Baza Flow

當前版本 V0.9

Baza Flow 由 Git Flow 演化而來,Git Flow的開發(fā)模式如下圖所示:

Git Flow的開發(fā)模式

由于我們的托管軟件對于Pull Request的限制,我們對Git Flow做了改動,改動的地方有:
1、每一個大功能我們會創(chuàng)建一個單獨的feature分支,項目開發(fā)人員基于這個單獨的feature分支創(chuàng)建自己的任務(wù)分支。
      比如,對于CS 2項目來說,啟動的時候分支的創(chuàng)建是:master -> develop -> feature/v2。
      開發(fā)人員應(yīng)該基于這個大特性分支feature/v2來創(chuàng)建自己的任務(wù)分支,比如創(chuàng)建XXXX,可以用一個單獨的分支feature/v2-xxxx。
      完成這個任務(wù)以后,立即向上游分支(feature/v2)提交pull request。然后從feature/v2-xxxx 創(chuàng)建自己的下一個任務(wù)分支,比如YYYY編輯 feature/v2-yyyy。
      請注意,合并到上游分支的功能必須相對獨立而且是可用的,分支任務(wù)工作量0.5-1個工作日,不宜超過2個工作日,超過2個工作日不向上游合并,需要向團隊解釋。
      代碼經(jīng)過Review以后,可能會進行必要的修改,修改在原分支修改,修改完畢代碼合并進上游分支,原分支會定期刪除。
      項目組成員在收到合并成功的通知后,請自行從上游大特性分支向下合并到自己當前的開發(fā)分支。
      提交pull request后創(chuàng)建新任務(wù)分支的時候務(wù)必知會一下相關(guān)配合同事(比如前端的同事),讓他們在新的分支上繼續(xù)開發(fā)。

2、對于小功能,預(yù)計在0.5-1個(不超過2個)工作日工作量的開發(fā)任務(wù),直接基于develop分支創(chuàng)建特性分支即可。

3、在各個分支遇到的bug,請基于該分支創(chuàng)建一個Bug分支。
      如果在缺陷跟蹤管理系統(tǒng)上有對應(yīng)的項,命名請使用缺陷跟蹤管理系統(tǒng)的ID,比如BAZABUG-1354 比如這個Bug的分支命名就是bugfix/BAZABUG-1354。
      如果在缺陷跟蹤管理系統(tǒng)上沒有對應(yīng)的項,命名請簡短的說明修改內(nèi)容,比如“JX 9df2b01 引用bootstrap css虛擬路徑重寫,避免出現(xiàn)字體無法找到的問題”,分支命名可以是bugfix/miss-font。
      完成修改以后提交并推送到中心倉庫然后立即向上游分支提交pull request。
4、發(fā)起pull request以后,請將pull request的鏈接在IM上發(fā)給代碼審核者,以此通知對方及時進行審核。
二、執(zhí)行

我們在團隊內(nèi)部提倡質(zhì)量優(yōu)先,開發(fā)團隊不能為了進度犧牲質(zhì)量,并在團隊內(nèi)部達成了共識。
所以,無論進度有多么緊迫,Code Review的過程都一定會做。
所有的問題一定會被提出,只是會根據(jù)進度的緊迫程度,以及問題的大小,改動成本,決定問題是現(xiàn)在解決,還是加一個TODO,并記錄在缺陷跟蹤管理系統(tǒng)內(nèi),以防日后遺忘。
多數(shù)情況下,我們都會要求立即解決,哪怕因此造成了發(fā)布的推遲。
我們深知,其實多數(shù)情況下,現(xiàn)在不解決,日后不知道猴年馬月才能解決。

我們在團隊內(nèi)推行Code Review的過程中沒有遇到太多阻力。
原因大概有兩點,首先管理層方面了解之前遇到的各種問題,也迫切希望能有所改善,所以從一開始就是支持的態(tài)度。
其次,絕大部分開發(fā)人員覺得在這個過程中能自己能學習到東西,并沒有抵觸,遇到很好的意見時大家都還是很高興的。
***,慢慢的形成了一種氛圍,整個團隊都會自覺的維護它。
附一張我們審核的對話圖,這位童鞋嘗試對系統(tǒng)內(nèi)部散落各地發(fā)業(yè)務(wù)郵件的代碼做一個整理,用一套模式來處理,調(diào)整了3版才定調(diào),然后修改了很多細節(jié)才通過了合并,前后大概用一個多星期時間:

對話圖

表面上看來Code Review會延緩項目的進度,但是在我們2年多的執(zhí)行過程中,大多數(shù)時候沒感覺到有延緩。
原因是,雖然代碼合并的周期變長了,但是由于代碼質(zhì)量提高了,導致Bug變少了,由于Bug引起的返工問題也變少了,因此整體的進度其實并沒有延緩。
我個人認為對一個成熟的團隊其實做Code Review反而會加快整體的項目進度,但是手頭上沒有統(tǒng)計數(shù)據(jù)支撐我的觀點。(對于軟件開發(fā)的度量,歡迎有心得的同學告知我)

我們每個分支有權(quán)限合并的人都不止一個,這樣可以保證有人請假不在的時候,代碼仍然可以被其他同事審核通過之后合并。

半年前,我們團隊加入了很多新成員,剛加入的新同事對規(guī)范、項目、產(chǎn)品的熟悉程度都不高,導致了有一段時間,我們遇到了PR審核周期變長的問題。
加上之前遇到的一些問題,我們總結(jié)了一個說明,目的是減輕Code Review對開發(fā)人員工作的負擔,加快PR審核通過的過程。
說明如下: 

Pull Request 的說明 

任務(wù)完成才能提交PR。
PR應(yīng)該在一個工作日內(nèi)被合并或者被拒絕。
PR在有嚴重問題(包括但不限于架構(gòu)問題、安全問題、設(shè)計問題),太多問題,或者任務(wù)無效的情況下會被拒絕。
嚴禁一個PR里面有多個任務(wù),除非它們是緊密關(guān)聯(lián)的。
PR提交之后只允許針對Review發(fā)現(xiàn)問題再次提交代碼,除非有充足的理由,嚴禁在同一個PR中再次提交其它任務(wù)的代碼。 

提交PR時候有一個描述框,內(nèi)容會自動根據(jù)Commit的message合并而成。
切記,如果一次提交的內(nèi)容包含很多Commit,請不要使用自動生成的描述。
請用簡短但是足夠說明問題的語言(理想是控制在3句話之內(nèi))來描述: 

你改動了什么,解決了什么問題,需要代碼審查的人留意那些影響比較大的改動。
特別需要留意,如果對基礎(chǔ)、公共的組件進行了改動,一定要另起一行特別說明。

審核人員邀請原則: 

1. 在創(chuàng)建PR時,Reviewers(審核人)一欄里主要填寫“必需審核人”。只有這些人審核都通過,才允許合并。
2. 除了“必需審核人”外,還有一些其它審核人,我們可以在Description里做為“邀請審核嘉賓”@進來。
3. 主干分支間的合并,如Develop => Master,或Master => Develop等,則需要把整個團隊(開發(fā)+QA)都列為“必需審核人”。 

必須審核人的列表由團隊決定,可能包括以下人選: 

團隊Leader

  • 前端架構(gòu)師(如果有前端代碼改動) (可以授權(quán))
  • 后端架構(gòu)師(如果有后端代碼改動) (可以授權(quán))
  • 產(chǎn)品架構(gòu)師
  • 對此PR解決的問題比較熟悉的(之前一直負責這部分業(yè)務(wù)的同事)
  • 此PR解決的問題對他影響比較大(比如認領(lǐng)的任務(wù)依賴此PR的同事)

其它審核人,包括但不限于: 

需要知悉此處代碼改動的人但又不必非要其審核通過的同事
可以從這個PR中學習的同事 

可以授權(quán)指的是,根據(jù)約定,Bug修復(fù)之類的改動,或者影響較小的改動,前端架構(gòu)師和后端架構(gòu)師可以授權(quán)團隊內(nèi)的某個資深開發(fā)人員,由這個資深開發(fā)人員代表他們進行審核。
主干分支之間的合并,大型Feature的合并,前端架構(gòu)師和后端架構(gòu)師需要參與。 

上述審核人關(guān)注的視角不太一樣:
團隊Leader關(guān)注你是否完成了任務(wù),前后端架構(gòu)師關(guān)注是否符合公司統(tǒng)一的架構(gòu)、風格、質(zhì)量,產(chǎn)品架構(gòu)師從整個產(chǎn)品層面來關(guān)注這個PR。
熟悉此問題的同事可以更好的保證問題被解決,確保沒有引入新問題。
被影響的同事可以及時了解他受到的影響。 

團隊Leader或者產(chǎn)品架構(gòu)師如果覺得PR邀請的審核者不足或者過多,必須調(diào)整為合適的人員,其它同事可以在評論中建議。

三、收獲

我們團隊實施Code Review收獲不少,總結(jié)出來大概有以下幾點:

1、短期內(nèi)迅速提高了代碼質(zhì)量。
     原因有幾個,大家知道自己的代碼會被人審核之后寫得會比較認真。
     理論上代碼質(zhì)量是由整個團隊內(nèi)***秀的那個人決定的。
     大家也能在Review的過程中學習到其它同事優(yōu)秀的編碼。

2、Bug數(shù)量迅速減少。
    但是這個我們沒有數(shù)據(jù)統(tǒng)計比較,比較遺憾。
    我和QA聊過,他給我的數(shù)據(jù)是在我們的一個新項目每2周一次的大發(fā)布,平均只會發(fā)現(xiàn)1~2個Bug。
    這點提高了整個團隊的幸福感,大家不用經(jīng)常被火燒眉毛。

3、團隊成員對項目的熟悉程度會比較均衡。
    新同事通過參與Code Review能很快熟悉團隊的規(guī)范。
    代碼不會只有個別人了解、熟悉,Bug誰都能改,新功能誰都能做。
    對公司來說避免了人員的風險,對個人來說比較輕松(誰都能來幫你),可以選自己喜歡的任務(wù)做。

4、改善團隊的氛圍
    Review的過程中會需要非常多的溝通,多溝通能拉近團隊成員的距離。
    并且無論級別高低,大家的代碼都是要經(jīng)過Review的,可以在團隊內(nèi)營造一個平等的氛圍。
    每個成員都可以審查別人的代碼,這很容易激發(fā)他們的積極性。


亮一下我們的數(shù)據(jù):

我們從2014年1月17日開始***個PR的提交,到2016年7月5日一共發(fā)出了6944個PR,其中6171個通過,739個拒絕。日均11.85個PR,最多的一天提了55個PR。
這些PR一共產(chǎn)生了30040個評論,平均每個PR有4.32個評論,最多的一個PR有239個評論。
參與上述PR評論的同事一共有53位,平均每位同事發(fā)出了539個評論,最多的用戶發(fā)出了5311個評論,最少的發(fā)了1個(剛推行Code Review就離職的同事)。
需要說明一下,只有簡單的問題會通過評論來提出。比較復(fù)雜的,比如涉及到架構(gòu)、安全等方面的問題,其實都會面對面的溝通,因為這樣效率更高。

四、總結(jié)

雖然有合適的工具支持會更容易實施Code Review,但它本身并不特別依賴具體的工具,所以前文并沒有具體指明我們用了什么工具,除了Git。
原因是基于分支的PR流程依賴于大量創(chuàng)建分支,而Git創(chuàng)建一個分支非常的簡單,所以PR模式+Git是一個很好的搭配。
我們在切換到Git之前,也做Code Review,采用的是提交代碼以后把commit的Id發(fā)給相關(guān)同事來審查的流程。
審核通過以后會在缺陷跟蹤管理系統(tǒng)里面評論,QA同事沒見到審核通過的評論就認為任務(wù)沒有完成,拒絕進行測試。
雖然沒有現(xiàn)在這樣直接方便,但是也還是做起來了。

PR審核的過程中,新加入的團隊成員常見的問題是不符合代碼規(guī)范之類的,其實是可以通過源代碼檢查工具來解決的,這部分我們一直在計劃中(( ╯□╰ )),并沒有開始實施。

責任編輯:張子龍 來源: 博客園
相關(guān)推薦

2021-04-25 09:19:22

騰訊Code Reviewleader

2012-05-24 14:58:55

開源代碼

2018-08-16 15:11:47

Code ReviewPPT代碼

2014-04-15 13:16:00

Code Review

2011-03-11 09:53:46

FacebookMySQL

2022-12-26 11:57:41

數(shù)據(jù)庫治理

2022-10-27 10:33:48

敏捷開發(fā)開發(fā)

2011-06-27 18:01:20

網(wǎng)站建設(shè)SEO

2011-07-01 15:03:55

網(wǎng)站內(nèi)部優(yōu)化

2024-01-04 08:49:03

Vuescope限制

2012-07-05 09:45:02

代碼審查

2016-01-05 16:17:59

云夢數(shù)據(jù)倉

2018-01-08 14:18:14

代碼互聯(lián)網(wǎng)持續(xù)集成

2024-05-24 14:04:04

2015-11-17 16:11:07

Code Review

2015-07-22 11:35:26

2025-02-17 01:00:00

AgenticAI業(yè)務(wù)

2022-03-10 11:25:51

InnoDB優(yōu)化

2023-09-27 22:44:18

數(shù)據(jù)遷移數(shù)據(jù)庫

2021-09-22 11:12:24

機器人人工智能月餅
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲国产精品字幕| 久久国产影院| 色婷婷激情一区二区三区| 国产免费内射又粗又爽密桃视频| 粉嫩av一区二区| 中文字幕一区二区三区四区久久| 中文字幕在线观看| 国产精品久久久久久久蜜臀 | 国产三级电影在线播放| 精品国产网站| 粉嫩av一区二区三区| 99视频在线视频| 亚洲老司机在线| 妺妺窝人体色777777| 日韩在线资源| 中文字幕免费在线观看| 麻豆乱码国产一区二区三区| 超碰公开在线| 色悠久久久久综合欧美99| 国产字幕中文| 亚洲精品大尺度| 欧洲杯半决赛直播| 成人黄色大片网站| 欧美日韩一区二区三区免费看| 羞羞影院欧美| 久久久久久a亚洲欧洲aⅴ| 国产午夜精品理论片a级大结局| 色网站在线免费观看| 深夜成人在线观看| av在线下载| 91在线看www| 美女视频久久黄| 欧美女优在线| 蜜桃精品在线观看| 欧美日韩亚洲一区二区| 成年人免费在线视频| 一区二区不卡在线视频 午夜欧美不卡在 | 日韩最新av在线| 精品久久ai电影| 97国产suv精品一区二区62| 国产精品视频一区二区三区| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品灌醉下药二区| 国产精品原创| 国产裸体写真av一区二区| 日韩美女啊v在线免费观看| 91精品网站| 深夜av在线| 久久99久久人婷婷精品综合| 色噜噜色狠狠狠狠狠综合色一| 日韩伦理精品| 一区二区成人国产精品| 亚洲国产精品小视频| 亚洲乱亚洲高清| 97电影在线观看| 一级毛片在线看| 亚洲91精品在线观看| 你懂的国产精品| 欧美精品激情blacked18| 国产一线二线在线观看| 91精品在线观| 欧美亚洲国产怡红院影院| 国产精品hd| 欧美不卡在线一区二区三区| 欧美日本精品一区二区三区| h片在线观看下载| 精品国产一区二| av资源站久久亚洲| 一区二区三区视频国产日韩| 99tv成人影院| 男女午夜刺激视频| 国产精品视频xxx| 香蕉加勒比综合久久| 精品999成人| 日本а中文在线天堂| 女人天堂av手机在线| 欧美性生活大片免费观看网址| 精品91在线| 人人网欧美视频| 日韩精品99| 午夜在线视频播放| 午夜视频久久久| 97在线视频免费看| 欧美v日韩v国产v| 国产日本亚洲| 毛片在线播放a| 青青草在线播放| 色视频www在线播放国产成人| 日韩一区二区在线看| 9色porny自拍视频一区二区| 轻轻草成人在线| av女优在线| 在线免费观看av网站| 九七伦理97伦理| 亚洲欧美自拍另类日韩| 一本色道久久88综合日韩精品| 韩国视频一区二区三区| 欧美日韩在线一区二区| 欧美日韩精品在线播放| 精品久久久精品| 亚洲三级电影网站| 国产精品污网站| 欧美久久综合性欧美| 毛片在线看网站| 九七影院理论片| 亚洲精品一区二区三区不| 三上悠亚久久精品| 日产精品高清视频免费| 日韩av一区二区三区在线| 丁香花在线影院| 91系列在线播放| 51精品国产人成在线观看| 国产精品国产三级国产aⅴ9色| 午夜免费精品视频| 日本私人影院在线观看| 成人性生交xxxxx网站| 久草在现在线| av毛片在线免费看| 精品美女一区二区| 在线播放国产区| 亚洲欧美日韩电影| 国产日韩欧美一区二区三区乱码 | 亚洲女人天堂| 亚洲v欧美v另类v综合v日韩v| 99中文字幕在线观看| 久久精品91久久香蕉加勒比| 粉嫩嫩av羞羞动漫久久久| 91亚洲精品一区二区乱码| 玉米视频成人免费看| 欧美一卡二卡在线| 中文字幕亚洲在| 中文字幕制服丝袜成人av| 国产精品主播直播| 99精品国产在热久久| 深夜福利视频在线观看| 精品人妻人人做人人爽| 国产伦精品一区二区三区视频孕妇| 国产一区二区三区欧美| 国产精品自产拍在线观看| 欧美日韩一区三区四区| 不卡电影免费在线播放一区| 日韩高清不卡在线| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 久久久久久久久国产精品| 日韩一区二区三区免费看| 亚洲宅男天堂在线观看无病毒| 波多野结衣一区二区三区 | 日韩精品免费| 亚洲欧美国产不卡| 成人免费在线看片| 艳妇臀荡乳欲伦亚洲一区| 中文一区在线播放| 一区二区三区 在线观看视频| 免费在线亚洲| 免费在线视频一级不卡| 国产一区二区欧美日韩| 久久精品午夜一区二区福利| 日韩在线中文字幕| 国产精品女主播视频| 免费av在线网站| 免费黄色福利视频| 精品少妇一区二区三区在线| 亚洲欧洲日产国码无码久久99| 久久亚洲影院| 欧美激情第8页| 久久永久免费| 虎白女粉嫩尤物福利视频| 成人小视频免费观看| 久热精品视频| heyzo一本久久综合| 老**午夜毛片一区二区三区| 奇米影视一区二区三区小说| 成人免费视频一区| 2024国产精品| 精品一区欧美| 国产成人精品无码播放| 中文字幕在线二区| 美女av电影| 四虎影视精品成人| 77导航福利在线| 日韩精品一区二区三区av| www.久久99| 综合伊思人在钱三区| 一本色道久久综合亚洲精品不| 国产美女久久久久| 中文字幕一区二区不卡| 精品国产欧美一区二区五十路| 欧美日韩成人在线视频| 国产精品扒开腿做爽爽爽视频 | 国产精品专区在线| 一本久道综合色婷婷五月| 丁香花高清电影在线观看完整版| 中文av在线播放| 久草免费在线色站| 欧美综合影院| 久久午夜激情| 日本高清不卡一区二区三| 欧美午夜精品一区二区三区| 9191国产精品| 蜜桃免费在线|