亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網運營的一線實戰(zhàn)洞察。

open-code-review:從PR模板到合并保護的代碼評審自動化實踐

open-code-review:從PR模板到合并保護的代碼評審自動化實踐 1. 為什么我要做 open-code-review 這個項目干開發(fā)十多年我見過太多因為“改了一行代碼”引發(fā)線上事故的現(xiàn)場。最典型的場景是這樣的一個 PR 在 GitLab 上掛了三天沒人看第四天負責人急著發(fā)版自己點了個 approve 就合并了結果這段代碼里的空指針異常直接打爆了生產日志。事后復盤的時候大家都很沉默因為誰都清楚問題出在哪——評審環(huán)節(jié)形同虛設PR 掛在那里不是被認真看過的只是被“路過”表態(tài)的。還有個問題更隱蔽有些人不是不想認真評審而是根本不知道看什么。新人拿到一個 PR打開 diff 看了一眼覺得“語法沒錯、測試貌似過了”就點了通過。真正該關注的性能隱患、邊界條件、錯誤處理、數(shù)據(jù)庫查詢量級、并發(fā)安全一個都沒看明白。代碼評審長期處于“有流程無標準、有系統(tǒng)無方法”的狀態(tài)。所以當團隊決定把代碼評審這件事認真做起來的時候我沒有直接選一個商業(yè)工具抄作業(yè)而是動手沉淀了一套可以跨團隊復用的實踐方案取名叫 open-code-review。這個項目的定位很明確不去替代 GitHub、GitLab、Gitee 自帶的那套 Pull Request 能力而是在現(xiàn)有平臺之上把評審規(guī)則、檢查清單、自動化攔截、效果度量全部標準化。評審靠不靠“人自覺”不再重要因為流程會幫團隊兜底。這個項目適合誰我覺得所有被“評審走形式”折磨過的團隊都值得參考。不管你是三五個人的小創(chuàng)業(yè)團隊還是幾十上百人的研發(fā)部門核心思路是一樣的——把評審從“憑感覺”變成“按清單”把質量把關從“事后救火”變成“過程攔截”。下面我把這套方案的設計思路、落地細節(jié)、踩過的坑完整寫出來希望能給正在折騰代碼評審流程的你一些啟發(fā)。2. 整體設計思路不造輪子而是把輪子拼成車2.1 核心痛點評審最大的敵人不是懶是“不知道看什么”在做 open-code-review 之前我先把團隊過去半年的評審數(shù)據(jù)拉出來看了一遍。結果很有意思平均每個 PR 的評審時長是 4.2 天其中 70% 的時間花在“等人看”上面真正閱讀代碼的時間平均不到 15 分鐘。更扎心的是評審意見里有一大半集中在代碼風格、命名規(guī)范、注釋缺失這類基礎問題上真正涉及邏輯正確性、異常處理、性能隱患的評論不到三成。這個數(shù)據(jù)說明兩件事。第一評審被人為拖慢了這跟工具沒關系跟人的習慣有關系。第二評審的關注點跑偏了大家把寶貴的注意力浪費在機器就能解決的問題上自然沒有精力去深挖真正要命的邏輯缺陷。所以 open-code-review 的第一個設計原則就出來了凡是機器能自動檢查的絕對不讓人肉來做。代碼風格讓 linter 管提交信息格式讓 commitlint 管覆蓋率變化讓覆蓋率工具管剩下的時間才能留給人類去思考那些機器想不明白的事——業(yè)務邏輯對不對、架構設計合不合理、未來的擴展性怎么樣。2.2 技術選型GitHub Actions Danger.js 自定義 CI 工作流技術選型這塊我糾結過很久。市面上的商業(yè)評審工具不少功能也確實強大但對于很多團隊來說多一套工具就多一個賬號、多一個學習成本、多一份訂閱費用而且代碼都托管在別人平臺上數(shù)據(jù)安全也是個顧慮。我更傾向于用團隊已經在用的基礎設施把評審能力“嵌入”進去而不是引入一套新系統(tǒng)。最終選型組合是這樣的組件選型理由代碼托管GitHub / GitLab / Gitee團隊已有基礎不額外引入平臺自動化檢查GitHub Actions / GitLab CI平臺原生能力零額外成本智能評審輔助Danger.js一門 DSL能寫規(guī)則去自動點評 PR靜態(tài)掃描ESLint SonarQubeESLint 管 JS/TS 規(guī)范SonarQube 管質量門禁提交規(guī)范commitlint husky在提交那一刻就攔截不規(guī)范行為文檔沉淀倉庫內 Markdown 模板評審清單和模板跟代碼放一起跟著版本走用 GitHub Actions 而不是單獨搭一套 Jenkins是因為配置簡單、維護成本低而且對于大多數(shù)中小團隊來說平臺自帶的 CI 能力已經綽綽有余。Danger.js 是這套方案里的關鍵角色它能在 CI 里跑一段腳本讀取 PR 的元數(shù)據(jù)標題、描述、修改文件列表、評論等然后按照我寫的規(guī)則自動發(fā)表評審意見。這么說可能有點抽象真實的場景是如果 PR 沒有關聯(lián) issueDanger 自動貼一條提醒如果修改了核心模塊的代碼卻沒有新增測試Danger 自動提出質疑。人還沒開始看機器已經把門檻守住了。2.3 流程設計一個 PR 從創(chuàng)建到合并要走完五道檢查很多團隊覺得評審流程就是“提 PR — 等人 approve — 合并”太簡陋了。open-code-review 把流程重新梳理成五道關卡每一道都對應明確的檢查和職責提交前鉤子本地husky 攔截保證 commit message 格式正確、提交前自動跑增量 lint 與單測。靜態(tài)掃描CIESLint、Stylelint 掃描代碼規(guī)范SonarQube 檢查重復代碼、圈復雜度、潛在缺陷。智能規(guī)則Danger檢查 PR 描述是否填寫、是否關聯(lián)任務單、變更規(guī)模是否過大、是否缺少測試文件。人工評審強制性至少一名核心維護者 approve且評審必須按模板填寫意見不能只點按鈕。門禁合并保護分支上述所有檢查通過后由機器人或 CI 狀態(tài)控制合并按鈕任何一環(huán)紅掉都不能合并。這五道關卡不是拍腦袋定出來的。在只有“人工 approve”的時期我們上線過一個 bug起因就是有人改了公共工具函數(shù)評審的人只看了自己負責的那個模塊根本沒意識到公共函數(shù)的變更影響到了全項目。加了自動化的變更影響分析后這種問題在第一道掃描就能被標記出來。3. 核心細節(jié)拆解評審規(guī)則、模板與自動化腳本怎么寫才有效3.1 評審清單人家不是不想看是不知道看什么代碼評審一個很現(xiàn)實的困境是評審者打開 PR 后盯著屏幕發(fā)呆不知道該從哪下手。open-code-review 的解決方案是提供一份結構化的評審清單我把這么多年踩雷總結出來的檢查項全部放了進去分門別類照著看就不會漏。我整理的評審清單核心部分長這樣功能邏輯這個改動是否完整實現(xiàn)了需求有沒有遺漏的邊界場景用戶怎么觸發(fā)這段代碼錯誤處理外部接口調用失敗怎么辦網絡超時有沒有兜底數(shù)據(jù)為空時會不會拋異常性能影響新增的循環(huán)會不會造成 O(n2) 復雜度有沒有在循環(huán)里查詢數(shù)據(jù)庫有沒有不必要的重復渲染并發(fā)安全共享變量有沒有加鎖線程池使用是否合理會不會出現(xiàn)死鎖或者競態(tài)條件兼容性數(shù)據(jù)庫遷移腳本能否回滾前端改動是否兼容老瀏覽器接口變更是否影響舊版本客戶端可維護性:命名是否表意清晰有沒有留下注釋解釋“為什么這么做”后續(xù)維護者能看懂嗎這個清單不是讓評審者逐條回復而是引導他們的注意力集中在真正的風險點上。實踐證明給了清單之后評審意見的質量明顯上升從“這里應該加個空行”這種碎碎念變成了“這里如果 upstream 掛了我們怎么兜底”這種真正有價值的問題。3.2 PR 模板把“該提供的信息”變成“必須要填的字段”模板這個東西看著不起眼實際作用比想象中大得多。沒有模板的時候PR 描述五花八門有人只寫一句“修復 bug”有人干脆什么都不寫評審者還得從代碼 diff 里自己猜改動意圖非常消耗耐心。open-code-review 的 PR 模板設計成這樣的結構### 背景 這個變更解決了什么問題為什么需要做這個改動 ### 變更內容 本次改動涉及哪些模塊核心邏輯是什么 ### 影響范圍 改動影響哪些功能是否涉及公共代碼是否需要同步更新文檔 ### 測試說明 本地怎么驗證的覆蓋了哪些用例有沒有補充自動化測試 ### 自檢清單 - [ ] 代碼已通過 lint 和單元測試 - [ ] 已補充/更新必要的測試用例 - [ ] 已檢查性能影響和異常處理 - [ ] 無敏感信息泄露密鑰、token、個人數(shù)據(jù)看到區(qū)別沒有模板不是在增加負擔而是在幫助提交者把“腦子里的信息”顯性化。這些信息對評審者來說是必不可少的上下文沒有上下文就評審等于讓一個裁判不看比賽就打分。寫完模板的過程其實也是提交者自己重新審視一遍代碼的過程經常有人寫著寫著就發(fā)現(xiàn)了自己的邏輯漏洞。3.3 Danger.js 規(guī)則讓機器人替你盯細節(jié)Danger.js 是這套體系里我最喜歡的一個組件。它能把很多原本靠人肉提醒的事情變成自動化而且規(guī)則完全自己控制想怎么玩怎么玩。我在項目里配置的規(guī)則覆蓋了這幾個高頻場景// dangerfile.js const { danger, markdown, warn, fail, message } require(danger) // 1. PR 描述過短直接提醒 if ((danger.github.pr.body || ).length 30) { warn(PR 描述過短請補充背景、變更內容和測試說明。) } // 2. 檢查是否關聯(lián) issue const issueRefRegex /#\d/ if (!issueRefRegex.test(danger.github.pr.body)) { warn(這個 PR 沒有關聯(lián)任何 issue請補充關聯(lián)編號。) } // 3. 變更規(guī)模過大時提示拆分成小 PR const additions danger.github.pr.additions if (additions 600) { fail(本次變更新增超過 600 行建議拆分成多個小 PR 再提交。) } // 4. 修改核心模塊但沒有新增測試時提出質疑 const changedFiles danger.git.modified_files const coreModules [src/core/, src/utils/, src/api/] const touchedCore changedFiles.some((f) coreModules.some((m) f.includes(m))) const hasTests danger.git.modified_files.some((f) f.includes(__tests__) || f.includes(.test.) || f.includes(.spec.)) if (touchedCore !hasTests) { warn(你修改了核心模塊但未發(fā)現(xiàn)對應的測試文件更新請確認是否已補充測試。) }這個腳本在 CI 里跑完會自動把評論貼到 PR 下面效果等于一個不吃不喝的機器人同事每一行提醒都有明確的依據(jù)而且完全沒有情緒——你可以跟機器人吵但它不會生氣也不會記仇。當然機器人的價值不在于替代人而在于把人的注意力從低價值問題上解放出來讓評審者可以專心做只有人類才能做的判斷。有人可能擔心規(guī)則寫多了會不會誤報太多反而把真實問題淹沒。這個擔心是對的我的經驗是 Danger 規(guī)則寧少勿多每條規(guī)則都要有實際的踩坑經驗支撐不要為了炫技寫一堆花里胡哨的規(guī)則。開頭寫 4-5 條能實打實解決問題的就足夠了后面再根據(jù)團隊反饋慢慢迭代。3.4 合并保護配置讓門禁真正硬起來規(guī)則寫好了CI 跑起來了但如果合并按鈕還是誰都能點前面做的所有工作都白費。open-code-review 里的最后一道防線是分支保護規(guī)則這在 GitHub 里叫 Branch protection rules在 GitLab 里叫 Merge request approvals。GitHub 上我推薦的配置組合是這樣的Require a pull request before merging禁止直接推送到主分支Require approvals必須至少 1-2 個評審者批準Dismiss stale pull request approvals when new commits are pushed新提交后舊 approve 自動作廢Require status checks to pass before merging所有 CI 檢查必須通過Require conversation resolution所有評論對話必須 resolve 才能合并最后一條特別重要。很多團隊的默認配置是“approve 之后評論可以掛著不解決就合并”這就導致了一個怪現(xiàn)象評審者明明提出了問題提交者嘴上說“改好了”但評論一直掛著至于是否真的改好了沒有強制確認。打開 conversation resolution 之后這個漏洞就堵上了——不解決完所有對話合并按鈕永遠灰著。4. 實操落地從零到一接入 open-code-review 的完整過程4.1 倉庫初始化先把基礎設施搭好假設你要在一個已有代碼倉庫上落地這套流程我建議按下面的順序來操作。先別急著寫規(guī)則先把基礎設施搭好否則后面步步受阻。第一步創(chuàng)建目錄結構和基礎文件。open-code-review 項目本身可以作為一個獨立倉庫管理規(guī)則和模板也可以直接把相關文件分布在你的業(yè)務倉庫里。我更推薦后者因為評審規(guī)則只有跟業(yè)務代碼放在一起才能跟著代碼演進一起維護避免規(guī)則跟實際脫節(jié)。your-project/ ├── .github/ │ ├── PULL_REQUEST_TEMPLATE.md # PR 模板 │ ├── dangerfile.js # Danger 規(guī)則 │ └── workflows/ │ ├── ci.yml # CI 主流程 │ └── danger.yml # Danger 專用流程 ├── .husky/ │ ├── pre-commit # 提交前鉤子 │ └── commit-msg # 提交信息校驗 ├── commitlint.config.js # commit message 規(guī)則 └── .eslintrc.js # Lint 配置第二步配置 husky 和 commitlint。這一層的意義在于把問題攔截在源頭提交者在本地就能看到報錯而不是等 CI 跑半天才發(fā)現(xiàn)問題。// commitlint.config.js module.exports { extends: [commitlint/config-conventional], rules: { type-enum: [2, always, [feat, fix, docs, style, refactor, test, chore]], subject-case: [0], }, }husky 側掛兩個鉤子pre-commit 跑 lint-staged 做增量 lint 和格式化commit-msg 跑 commitlint 校驗提交信息。第三步配置 CI 主流程。GitHub Actions 的配置文件大致是這樣的結構name: CI on: pull_request: types: [opened, synchronize, reopened] push: branches: [main] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - uses: actions/setup-nodev3 with: node-version: 18 - run: npm ci - run: npm run lint test: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - uses: actions/setup-nodev3 with: node-version: 18 - run: npm ci - run: npm run test:coverage danger: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - uses: actions/setup-nodev3 with: node-version: 18 - run: npm ci - run: npx danger ci env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}需要注意的是Danger 在 CI 里的 token 有三個DANGER_GITHUB_API_TOKEN 或 GITHUB_TOKEN 都行GitHub Actions 會自動注入 GITHUB_TOKEN所以不用額外配置。但如果你的倉庫是私有倉庫并且團隊比較在意權限邊界可以單獨創(chuàng)建一個低權限 bot 賬號來發(fā)評論。4.2 規(guī)則配置從團隊歷史事故里提煉規(guī)則這是整個項目里最有價值、也最需要花心思的一步。我不建議去網上找一份“最佳實踐清單”直接抄因為每支團隊踩過的坑都不一樣。更好的做法是把過去半年線上故障和嚴重的評審漏判拉出來一個個分析當時的評審過程中為什么漏掉了然后針對性地寫規(guī)則。舉個例子我們團隊曾經出過一次很嚴重的線上事故有人改了數(shù)據(jù)庫連接池的配置參數(shù)本來想加大最大連接數(shù)結果把初始化連接數(shù)寫超了導致服務啟動時直接把數(shù)據(jù)庫連爆。這個改動的 diff 只有一行而且那一行看起來人畜無害但險就險在配置項的名字非常相似。事故之后我們總結了一條規(guī)則如果你修改了配置類文件或環(huán)境變量相關代碼必須在 PR 描述里明確寫出“修改前值”和“修改后值”并說明為什么改。這條規(guī)則就變成 Danger 里的一個檢查項if ( danger.git.modified_files.some((f) f.includes(.env) || f.includes(config/)) ) { const body danger.github.pr.body || if (!/修改前|from:|before:/i.test(body) || !/修改后|to:|after:/i.test(body)) { warn(檢測到配置類文件變更請在 PR 描述中補充修改前后的詳細值對比。) } }類似這樣從實戰(zhàn)中長出來的規(guī)則才能讓團隊心服口服。因為每個人都知道那條規(guī)則背后對應的是一次血淚教訓而不是某個外部專家憑空想象的教條。4.3 團隊約定硬流程之外還需要對焦“軟共識”只有工具和規(guī)則是不夠的。open-code-review 落地之后我發(fā)現(xiàn)一個有意思的現(xiàn)象自動化規(guī)則大家都愿意遵守因為機器不講情面但人工評審的質量還是參差不齊有人習慣性點 approve有人一句話不說直接鎖死 PR。后來我意識到問題出在缺少“軟共識”。所謂的評審文化不是一條規(guī)定能建立的。我在團隊里推廣了幾個約定效果比預期好很多第一評審要在 24 小時內響應。不是要求馬上看完而是至少看一眼并回復“已開始評審”或者“今天忙不過來明天上午看”讓提交者心里有底避免 PR 石沉大海。第二評審意見要區(qū)分“必須改”和“建議改”。用前綴標記比如[blocker]是必須要改的問題不開玩笑[suggestion]是可選優(yōu)化項提交者可以拒絕但要說明理由。這樣層級清晰不會因為一堆小意見淹沒了關鍵問題。第三每個 PR 必須有一個明確的第一評審人assignee。沒有第一責任人就沒有人為這個 PR 的質量負責沒人盯著的 PR 最容易爛尾。assignee 可以在創(chuàng)建 PR 時手動指定也可以用 CODEOWNERS 文件自動分配。# CODEOWNERS * backend-owner frontend-owner src/payment/ payment-team-lead第四定期輪換評審搭檔。長期固定一個人評審另一整個模塊容易形成思維定式看習慣了什么都覺得沒問題。輪換之后新人會問“為什么這里這么寫”這種“外行的問題”往往會暴露隱形的設計決策逼著提交者重新審視自己的代碼。4.4 度量與反饋用數(shù)據(jù)說話而不是憑感覺open-code-review 最后一塊拼圖是度量。說實話度量這件事很容易走極端有的團隊一點度量不做有的團隊把一堆亂七八糟的指標貼墻上結果引發(fā)焦慮和攀比。我的建議是只關注幾個真正能反映結果質量的指標而且只用于團隊自我改進不用于績效考核。我目前覺得最有價值的幾個指標評審響應時長從 PR 創(chuàng)建到第一次有效評審意見的時間。太長了說明人手不夠或流程阻塞。PR 合并時長從創(chuàng)建到合并的完整周期。過長說明拆分粒度太大或需求太大。評審意見中被采納的比例低說明評審意見質量有問題或者提交者太固執(zhí)兩種情況都需要介入。每千行代碼缺陷數(shù)上線后統(tǒng)計看流程改造前后是否有明顯變化。這些指標我建議用 CI 的產物直接采集或者用 GitHub API 寫個小腳本定期拉取匯總# 簡單的上報腳本思路獲取合并的 PR統(tǒng)計從創(chuàng)建到合并的時長 gh pr list --repo owner/repo --state merged --limit 100 --json createdAt,mergedAt \ | jq [.[] | {title, durationHours: (((.mergedAt | fromdateiso8601) - (.createdAt | fromdateiso8601)) / 3600)}] \ | jq map(.durationHours) | add / length上面的命令輸出的就是最近 100 個合并 PR 的平均生命周期小時非常簡單但有效。度量不是目的通過數(shù)據(jù)發(fā)現(xiàn)流程瓶頸才是目的。比如我發(fā)現(xiàn)“評審響應時長”指標總是很高排查后才知道是 CODEOWNERS 自動指派出了問題——某個模塊只指定了一個負責人那個人休假去了整個模塊的 PR 全都卡在他名下沒人接。后來改成每個模塊至少指定兩個負責人問題就解決了。5. 常見問題與排查實錄5.1 遇到過的典型問題速查表任何流程落地都會遇到抵抗和意外open-code-review 在實踐過程中也碰到過不少問題。我把最常見的幾個整理成了表格方便你直接對照排查。問題現(xiàn)象根本原因解決方案CI 一直不觸發(fā)Actions workflow 文件名不對或分支過濾寫錯檢查.github/workflows目錄確認 on 配置包含目標分支Danger 不發(fā)表評論token 權限不足或danger ci退出碼非 0確認GITHUB_TOKEN的權限設置用danger ci --failOnErrors排查合并按鈕仍然可點分支保護規(guī)則未正確配置到倉庫 Settings - Branches 確認規(guī)則已應用注意舊 PR 不受新規(guī)則約束Lint 全量跑太慢沒有用 lint-staged 做增量檢查改用lint-staged只對暫存文件執(zhí)行 lint評審者習慣性點 approve沒有強制要求填寫評審意見開啟 GitHub 的 code review 必須評論功能或在 Danger 里檢查 review 為空時提醒規(guī)則誤報太多Danger 規(guī)則寫得過于敏感對每條規(guī)則加白名單或閾值持續(xù)迭代規(guī)則提交者在本地繞過 husky--no-verify強行跳過鉤子靠 CI 層兜底本地鉤子是提醒不是安全屏障表格里最后一條最值得展開說。husky 本質上是本地鉤子任何提交者都能用git commit --no-verify繞過去這是它的局限。所以完整方案里一定要有 CI 層做兜底比如在 CI 里重新跑一次 commitlint 校驗或者 lint 檢查。本地鉤子的意義是讓大部分人少走彎路而不是防個別不守規(guī)矩的人。5.2 兩個真實問題的完整排查過程這里曬一個實際發(fā)生的排查過程幫大家建立問題處理的思路。有一次我們在接入 Danger 的時候發(fā)現(xiàn) CI 里的 danger job 顯示綠色通過了但 PR 下面一條機器人評論都沒有。第一反應是腳本邏輯有問題結果本地跑danger pr https://github.com/...又能正常輸出評論問題就壓縮到了 CI 環(huán)境。一步步排查先檢查了 Actions 日志發(fā)現(xiàn)danger ci這一行執(zhí)行的輸出里有一個 warning提示Cannot find a danger token. Skipping message posting.。原因很清晰GitHub Actions 里雖然自動注入了GITHUB_TOKEN但 Danger 在 ci 模式下讀取的是DANGER_GITHUB_API_TOKEN這個環(huán)境變量如果沒設置就會靜默跳過發(fā)評論的步驟。解決方式是在 workflow 里顯式加上環(huán)境變量映射env: DANGER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}還有一個問題更隱蔽。團隊里有位同事提交了一個純文檔改動的 PR結果 CI 全部通過了但 Danger 卻 fail 了提示“變更規(guī)模過大”。查下來發(fā)現(xiàn)原因不是文件多而是danger.github.pr.additions統(tǒng)計的是整個 PR 的增減行數(shù)而他提交的文檔里包含了一個很長的 SQL 導出的數(shù)據(jù)文件新增行數(shù)直接飆到了兩千多行。這個 case 屬于規(guī)則設計時沒考慮到的場景我們在規(guī)則里加了一個白名單把以.sql、.lock、.min.js結尾的文件排除在統(tǒng)計范圍之外問題就解決了。5.3 避坑指南這五個坑我?guī)湍悴冗^了第一別在第一天就上全部規(guī)則??焖偕暇€會導致團隊集體反感大家會覺得流程是來折騰人的。我會建議分三個階段第一周先上 PR 模板和 lint第二周上 Danger 基礎規(guī)則第三周開啟強制的合并保護。小步快跑讓團隊逐步適應。第二模板字段不是越多越好。字段太多會讓每個 PR 的填寫成本極高最后大家都填“無”來敷衍。我的經驗是核心字段控制在 5 個以內如果有信息確實需要但不想增加模板負擔可以放到 issue 模板里讓提交者提交時寫清楚。第三approve 會過期的設定必須開著。GitHub 提供了 “dismiss stale approvals” 選項我強烈建議打開。否則評審者周一 approve 了提交者周二又改了一版代碼舊 approval 依然有效等于改動沒有經過評審就直接合并了。這種拼配置的細節(jié)往往決定了流程的真實強度。第四自動化規(guī)則不要寫得太執(zhí)著。機器判斷有天然的局限比如規(guī)則判斷“修改了測試文件”時如果一個人把測試文件重命名也算修改就會誤報。合理的策略是把自動化當作提醒用 warn 而不是 fail人工評審環(huán)節(jié)再決定是否攔截。第五記得給評審者和提交者都留出口。規(guī)則再完美也會有合理的例外。比如緊急 hotfix 需要繞過流程那就應該提供一個明確的例外通道而不是讓人偷偷用--no-verify。我們在團隊里約定緊急修復可以直接在 PR 描述里加[hotfix]標記CI 會跳過部分檢查但合并后必須在一個工作日內補上測試。給規(guī)則開一個“白手套通道”反而比一刀切更容易被接受。6. 落地效果與實際數(shù)據(jù)這套流程到底改變了什么open-code-review 在我們團隊跑了三個月的真實數(shù)據(jù)我覺得有必要曬出來。這里不是吹噓這個項目多厲害而是想說清楚一個樸素的道理流程本身不產生價值流程帶來的人們行為變化才產生價值。上線前我們統(tǒng)計了基線數(shù)據(jù)PR 平均合并周期 4.2 天評審中發(fā)現(xiàn)的邏輯類問題占全部問題的 12%線上事故中因評審漏判導致的比例約 60%。三個月后同樣的統(tǒng)計口徑下PR 平均合并周期降到 1.8 天評審中邏輯類問題占比提升到 37%線上事故中因評審漏判導致的比例降到 22%。有人可能會說周期變短是因為大家不敢認真評審了恰恰相反真正的原因是以前 70% 的等待時間被自動化判斷消化掉了人工評審的時間反而更集中、質量更高。邏輯類問題的占比提升反映的是評審者的注意力從格式、命名這些瑣碎問題上轉移到了真正影響系統(tǒng)健壯性的核心問題上。自動化兜住了底線人力才敢往高處看。還有個隱藏收益是新人培養(yǎng)速度變快了。新同學以前要看老代碼怎么寫的、看評審意見猜團隊風格現(xiàn)在直接看 PR 模板、看 Danger 提示、看評審清單就能快速理解團隊對代碼質量的底線要求。這比請老同學講一個小時的“代碼規(guī)范”高效得多。7. 如果你想在自己團隊落地我的幾點真心建議整個 open-code-review 項目寫到這里我一直盡量避免把它包裝成一套“標準答案”。代碼評審這件事沒有銀彈不同團隊的業(yè)務節(jié)奏、技術棧、人員構成差別太大照搬任何方案都會水土不服。但如果要說有什么共性的東西值得借鑒我會總結成這樣幾句話。第一先診斷再開方。不要一上來就急著配工具先把團隊最近兩三個月的 PR 瀏覽一遍看看時間都消耗在哪里問題主要集中在哪些類型上。有了數(shù)據(jù)基礎你才知道規(guī)則的優(yōu)先級怎么排。第二自動化是解放評審者不是替代評審者。機器檢查、機器人評論、CI 門禁這些機制的價值在于把低價值勞動從人類身上移走讓評審者把腦力用在高價值的判斷上。如果有一天我們發(fā)現(xiàn)機器人已經能完全替代人類評審那我也舉雙手歡迎——不過至少目前代碼評審還是個需要人味兒的活。第三規(guī)則的迭代邏輯是“事故驅動 數(shù)據(jù)驅動”。每出一個線上事故就回顧評審環(huán)節(jié)能不能攔住每發(fā)現(xiàn)一個高頻誤報就調整規(guī)則閾值。這套機制跑起來之后規(guī)則不是越堆越多而是越來越精準。最后再分享一個小技巧。如果你想讓團隊愿意配合這套流程最好的辦法不是發(fā)全員郵件通知而是找一個大家公認的質量標桿項目先試點等效果出來后讓數(shù)據(jù)說話。三個月后把“接入前后對比圖”扔到群里不需要你多解釋什么其他項目的同事會主動來問你是怎么做的。我在實際推行過程中的體會是改變人的習慣最好的工具不是制度而是可感知的價值。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
在线亚洲欧美| 人人看欧美性爱| 日本免费不卡二区| 激情视屏国产乱伦强奸| 亚洲欧美成人网站AAA| 久久久久久久78| 亚洲精品日韩国产欧美| 国产一级内射无挡观看| 91精品人妻一区二区三区蜜桃| 伊人国产视频| 久久av成人无码免费| 五月天加勒比啪| 人人妻人人爽一区二区三区| 欧美一级二级三级| 男人综合网| 成人精品欧洲亚洲| 嫩草伊人久久精品| 91亚洲影院综合| 人妻天堂综合网| 免费作爱一级视频| 97国产高清视频在线观看| 一区AV| 狠狠97| 亚洲丝袜99| 大香蕉啪啪啪啪在线| 蜜桃网熟妇| 欧美国产成人在线| 青青草在线视频播放器| 国产人妻精品一区二区三区秋霞| 婷婷丁香一区二区三区| 日韩99神马视频片| 精品视频97| 精品久久久久,69国产成人精| 九九综合久久| 99在线观看| 九热视频| 又黑又大又粗| 青青草伊人久久| 暖暖精品二区三区观看| 日韩传媒在线| 国精综合一二三区影视| 制服中出中文人人精品| 国产欧美黑人丰满在线| 国产乱不卡| 高精欧美色| 亚州,欧美在线| 日本 情色 1区2区3区| 日韩欧亚中文在线| 亚洲日本天堂| 久久精品无码专区| 在线不欧美| 色图四区| 精品无码一区二区三区色欲| 无遮挡男女激烈动态图| av在线播放国产一区| 啪啪啪精品| 国产自产自拍| 日本九九九九| 中美日韩毛片| 亚洲欧美伦综合| 欧美影院一区二区三区| 亚洲无线码欧洲精品区别| 色综合超碰超| 劲爆欧美人妖三区91| 一区二区激情国产熟女| 97色在线| 日韩传媒在线| 密臀国产在线| 色九月综合| 亚洲爱爱视频一区二区| 色香AV| 天天爽夜夜爽夜夜爽精| 国产 热久久久久国产精品| 久久成人国产| 高清不卡国产| 国产白丝av| 十八禁的黄污污免费网站| 免费毛片在线播放| 97色视频在线| 男人久久天堂| 丁香六月东京热| 嗯嗯啊操我| 亚洲第一色页夜| 羞答答AV中文字| 91久久九九精品国产综合| 天天色,天天干,天天干| 欧美激情片一区二区| 久操国产在线| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 亚洲激情天堂网| 啊啊啊啊好大好硬啊啊啊啊啊| 91精品国| 思思热免费在线视频| 色综合99| 亚洲欧美综合图片| 99re公开精品免费视频| 怡红院怡春院| 97鸡把在线视频| 国产精品毛片?v一区二区三区| 天天拍天天操| 精品人妻高清麻豆av| 四虎午夜影院| 亚洲欧美精品一区天堂久久| 色香av| 亚洲欧美电影| 国模精品娜娜一二三区| 男人的天堂VA| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 中文字幕少妇色| 97精品网站| 黄色激情电影在线观看| 91日日| 性猛交| 人妻激情偷乱视频一区二区三区 | 思思热在线| 欧美第一页| 国产成人精品必看| 激情亚洲天堂| 69少妇一区二区| 精品96久久| 色操逼网| 91美女国产在线| 国产大陆天天艹| 亚洲吊色| 思思热免费在线视频| 91偷拍欧美亚洲| 亚洲交性| 精品久久久一本一道| 老子午夜伦不卡影院| 97色插| AV中亚| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 色噜噜狠狠色综无码久久合欧美| 久久久久婷婷| 97综合国产| 亚洲日本男人天堂网| 97爱爱爱| 操逼短片| 婷婷五月av| 天天肏夜夜肏| 东京太热久久久| 精品99999| 欧美日韩精品国产91| 无码 黑人一区二区三区| 久久少妇视频| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 人妻夜夜爽天天爽三区麻豆AV网站| 国产女人极品高潮毛片| 天天操熟妇| 欧美色五月| 人妻三级在线中文字幕| 91在线国产后入风骚翘臀美女素人| 在线无码操| 无码免费在线观看黄色片| {男男暴菊gay无套网站| 淫乱图区 | 久一区久久蜜桃| 不卡超碰护士AV在线免费播放| 亚洲一区日韩精品中文字幕 | 99999国产| 久久久久久中文字幕中文字幕最新| 国产一区二区三三视频| 亚洲资源吧| 蜜桃中文字日产乱幕4区| 少妇人妻太紧太深av| 久久亚洲日韩国产欧| 国产精品交换一区二区| 亚洲αv一区二区三区| 射久久| 亚洲性图91| 91热色| 国产黄色动态精品| 大香蕉久操| 狠狠操,使劲操| 综合免费无码中文| 韩日性爱av| 国产白丝网站| 日本久久综合| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 成人精品视频一区二区| 99啪啪视频| 亚洲性爱免费电影| 亚洲欧美精品91| 欧美啪啪女女| 天天噜| 人妻在线大香蕉| 婷婷综合网站| 国产99久久99热这里只有精品15| 超碰97精品| 激情文学小说一区二区| 色天堂综合| 国产丝袜美女诱惑| 五月天综合网| 熟女突然公开看18禁影片| 妇女性内射冈站HDWWWCOM| 加勒比综合88| 欧美性第1页| 精品一区99999| 搞中出视频在线观看| 久久手机视直播| 中文字幕五区| oumeisetu综合| 久久久成人国产精品无码| 性爱综合一区二区| 日产欧美电影一区二区三区| 国产主播福利| 性色AV蜜色av色欲av| 国产一线二线三线av| 日日玩天天干| 91狠狠狠| 欧美性爱一区二区三区| 亚洲成人在线资源| 96国产精品| 呻吟 欧美 日本 中出| 97超碰中文| 亚洲偷91色| 加勒比性爱成人在线| 亚洲宗合网| 亚洲系列欧美| 精品视频在线观看| 妇女性内射冈站HDWWWCOM| 欧美日韩中文视频播放| 蜜臀视频网站| 亚洲精品毛片在线观看| 欧美性爱视频免费一区一A | 97精品视频免费| 强上我不卡卡| 啊啊啊久久久视频| 激情自拍 校园春色| 少妇一区二区三区高速| 欧美99热| 亚洲欧美一区二区三区在钱蜜桃| 99re8免费高清在线| 亚洲精品97中文字幕| 夜夜骑日日| 国产精品久久久久久久久久久久久久| 97在线观看免费视频| 国产精品第一区第一页| 自拍大香蕉乱插| 色五月首页| 久操99| 99只有精品| 97爱爱官网| 亚洲本色精品一区二区久久| 老司机老司机午夜影院| 91neishe| 青青草玖玖爱| 日本影视久久免费| 女人喷水视频在线观看| 天天操av懂色| 欧美性少妇| 亚洲乱码精品一区二区| 日本性爱少妇| 东京热一区二区三区四区五区六区| 久久国模av| 亚洲清纯综合| 日韩亚洲国产视频| 日韩亚洲美州欧洲综三区一品在线| 中文字幕少妇色| 9 1超碰九色| 天天草天天日| 狠狠色婷婷7777久| 亚洲精品国产精品乱码不卡| 9I1性色影院| www.99色| ss久久| 色九九久九九| 日本色色的视频| 97超碰色屌| 嗯嗯不要 视频| 精品一区二区综合熟妇| 色哟哟1区2区| 美女熟妇色| 狠狠狠狠狠狠| 99热精品在线观看| 综合色啪| 国产久久久久久| 在免费jIzzjIzz在线视频| 青青草在线视频人人想人人上| 亚洲成人在线资源| 精品高清一区二区三区三州| 国产精品肉丝自拍| 久久天堂| 天天操av懂色| 亚洲激情片| 激情丁香五月婷婷| 精品无码久久| 激情小说五月天| 中日韩久久久免费看| 国产性爱在线视频一区二区| 欧美亚洲国产日本在线,久久精品国产| 亚洲在线欧美| 日本九九久久99播| 国产精品人妻一区二区| 亚洲妇色| 国产一区自拍欧美日韩 | 小骚逼被操的爽不爽| 久草看看看| 久久久久9| 999熟女精品| 天天日B夜夜干B时时操B| 蘋果手機免費看成人Av| 国产精品久久久久久久毛片1| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 国产乱码久久| 视频国产成人精品日本亚洲18| 青青草中文-久久青草精品一区二区三 | 无码二级三级| 色五月婷婷麻豆在| 大香蕉乱级| 操人妻逼91| 97在线视频观看网站| 嗯嗯啊好大| 久久黄色性爱视频| 97操b| 亚洲另类久操网| 乱伦日本中文自拍| 另类成人首页一区| 超碰资源亚洲97| 国产精品成久久久久午夜午夜| 国产精品色哟哟| 国产区91柔拿会所技师| 国产精品一区在线播放| 亚洲天堂性爱| 国产成人久久久精品免费AV| 少妇久久久久| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 丁香五月影院| 国产99精品一区二区三区免费| 色五月婷婷久久| 天天综合网合集91| 九九色婷婷| 综合欧美亚洲| 亚州色国| 婷婷色在线| 中文?日韩?免费?精品| 亚洲人成色9999精品久久| 国产亚洲性生活视频播放| 日本高清加勒比| 亚洲欧美大香蕉| 免费福利视频中文字幕| 国产精品农村妇女| 国产中文福利| 欧美日韩超碰在线| 国产精品呦一区二区三区| 欧美热图99| 91中文精品日韩欧美在线| 国产色呦呦| 亚洲欧美成人网站AAA| 日本不卡一区二区三区| 夜夜操av亚洲一区二区| 久久久久久亚洲精品不卡人乳| 午夜亚洲WWW湿好大| 天天综合站| 9热9热综合网| 亚洲国产精品乱码在线观看| 国产97视频免费观看| 国产操逼网站亚洲一级黄色| 加勒比中文av| 激情内射| 男人天堂免费| 国产和美国毛片| 欧美 青青草| 韩日精品四区| 天天舔天天 | 五月丁香综合网| 无码高清操逼网址| 无码精品久久久久久亚洲| 5252色欧美在线男人的天堂| 久操| 日本孕妇孕交| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 97人人夜夜精品视频| 麻豆视频一区二区| 嗯嗯不要 视频| 亚州欧美总和| 学生妹天天看| 视频在线观看青青99国产| 美女淫穴| 亚洲天堂日本| SUV一区二区在线看| 蜜臀色乳| 中文字幕第23区| 国产精品在线网站| 一级黄碟在线看| 日本一久是| 日日摸日日碰| 青青草中日韩在线| 91麻豆天美国产欧美高潮| 十八禁电影伊人网| 青青草原成人| 精品九九| 国产91av在线播放| 操逼逼中文字幕| 午夜福利视频在线一区| 国产精品亚洲一区二区三区四区| 91超碰人人操| 9久久9综合| 国产传媒一区日韩| 老熟女天天操| 9色国产精品一区粉嫩| 亚洲男人综合| 秋霞久久亚洲精品成人| 久操精品网| 色噜噜综合在线| 91伊人影视综合| 2017大香蕉国产精品久久| 国产第二页| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 超碰97玖玖爱| 亚洲脚交| 欧美色综合| 亚洲密乳AV| 色综合av男人天堂| 亚洲男人天堂2019| 日日夜夜青青草母狗| 夜夜骑操视频| 亚洲天堂男人天堂网| 久久国产熟女影院| 999岛国大片| 116美女午夜| 亚洲第91页| 亚洲有薄码区久久在线一区| 18禁无码永久免费无限制| 黄片免费看黄片免费看| 久久本道| 嗯嗯嗯啊啊在线观看| 欧美后入| 女人双腿搬开让男人桶| 清清草影| 九九久久玖玖| 中文字幕日本久久| 久草毛片电影怡| 欧美熟妇色| WWW操逼| 在线日韩视频| 精品一二三区女同| 人人弄人人摸| 91久热这里只有精品| 91精品少妇搡搡搡| 日本爽爽爽爽爽爽免费视频| 久久99综合| 99精品久久久久久| 欧美日韩*字幕一区| 五月天啪啪| 国产热av| 国产精品女久久久久av爽| 国产伊人自拍| 国产精品久久泡妞网站| 国产CHASE男男GAYGA 毛多色婷婷| 一区二区三区男女操逼黄色小电影| 女同性恋中文字幕| 无码高清专| 日韩精品人妻系列无码天堂| 在线亚洲欧美| 久久久久精| 久久精品无码一区二区三区| 激情接吻视频久久久久久| 黄色不卡视频| 美女视频尤物网在线看| 97 国产一区| 成年人网站在线免费观看| 98色网| 欧美色图99| www.av在线观看| 日韩人妻精品| 国产日本久久免费精品| 欧美综合 站| 亚洲最大成人a毛毛片| 日本精品免费一区二区三区四区| 小视频国产| AV在线资源| 在线观看无码三级少妇| 10000部十八禁看电影| 操操操五月天婷婷丁香影院| 久婷婷一区| 国产精品爱欲| 日韩电影天堂视频二区三区| 日韩操逼HD| 俞拍自拍| 爱我干综合| 人妻精品一区二区| 强奸少妇AV导航网| 国产在线激情视频| 九久久精品| 五月丁香影院| 亚洲在线欧美| 久热精品色情| 国产成人bd在线观看| 亚洲国产97在线精品一区| 丁香五月天啪啪| 日日夜夜免费| 激情综合网一盗摄| 色色丁香| 亚州熟女乱伦| 99在线精品观看视频中文| 中文字幕日韩综合| 成人影院永久免费观看网址| 国产精品久久久久999| 亚洲欧美成人在线| 日本中文熟女视频| 91精品操美女| 亚洲日本韩国极品一区二区| 91人妻精华帖| 欧美综合中文| 日韩欧美被操黄免费观看| 日韩av乱伦| 亚洲日韩精品久久久久一区壹牛 | 精人妻无码一区二区三区伊人直播| 日韩不卡a级视频专区| 91色香| 青娱乐手机日韩在线视频| www…国产操逼| 国产精品白领在线观看| 国产午夜福利合集| 97超碰亚洲| 婷婷五月天伊人| 精品人妻1区| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 热久久99999| 欧美亚洲日韩人妻在线观看| 男女性感激情网站| 又粗又长又大国产不卡| 超碰 欧美| 人人妻人人色| 色综合潮| 人妻天天操天天爽视频免费| 人人操人人大香蕉| 精品成人无码| 日本一区二区中文字幕久久| 久热精品在线| 色老久久| 2017大香蕉国产精品久久| 97超碰国产精品| 久久欧美性爱视频| 26uuu性| 思思热在线视频免费| 亚洲欧美97√| 色偷偷2020免费视频播放| 亚洲精品一卡二卡三卡福利视频网站| 花野真衣| 日韩AV电影网站| 国产热RE99久久6国产精品首| 精品久久久久久中文字幕三区| 五十路熟女人妻一区二区在线观看 | 久久国产在线一区二区| 高潮精品| 白丝AV| 欧美97色| 欧美一级A一级a爱片久久| 视频二区美腿制服人妻欧美| 精品无av| rion磁力链接| 婷婷激情四射| 97爱亚洲| 欧美日韩97| 99国产精品| 婷婷色香伊人| 97免费视频在线观看| 视频不卡中文字幕| 97久久网| 国内毛片热久久思思热| 无码操逼视频一下| 国产在线激情视频| 欧美日韩激情无码专区| 免费簧片在线观看| 立川理惠无码一区二区| 九九久久99| 亚洲五月婷| 97色婷婷| 日韩天堂av电影在线观看| 懂色AV中文| 免费看污网址| 女人天堂网| 久久久久久九| 黄色操人| 亚洲 一区二区 自拍| 91人妻Pr| 无码99| 人妻无码久久一区二区三区免费| 男人的天堂久久狠| 亚洲图片欧美偷拍| 亚洲中文字幕在现观看| 自怕偷自怕亚洲精品| 亚洲一区二区三区AV无码| 婷婷五月天激情网| 天天干一区二区| 伊人991| 日韩射图| 乱操乱伦AV| 夜嗨影院| 久热久一区二区三区| 午夜毛片高清免费不卡| 欧美精品激情| 草莓精品视频在线免费观看| 天美麻花大全视频| 亚洲精品丝袜| 蜜桃网熟妇| 午夜舔阴达高潮视频免费看| 人人妻人人狠人人| 富二代亚洲精品99| 啊啊啊轻点在线观看| 国产一级高清免费观看| 亚洲一卡2卡3卡4卡乱码网站 | 在线视频免费观看午夜| 手机在线看片免费人成视频| 观看免费区二区三区二| 夜夜高潮夜夜爽国产伦精品| 国产精品又黄又猛又粗| 99自拍视频在线观看| 午夜欧美J进J出白浆流出久久久| 欧美美逼| 欧美极品性爱天天射| 亚码激情| 国产精品对白自产拍| 国产兽交视频在线播放| 激情深爱五月天| 四虎在线免费视频| 国产日韩手机视频在线| 区日韩亚洲乱码av电影| 欧美久久人体| 操逼国产免费| 加勒比AV网| 97爱爱爱| 嗯啊不要在线| 麻豆一区二区AV天美| 日本三级网页| 综合天天网| 欧美欧美啪啪视频| 亚洲天天艹| 骚货操死你| 日韩av在线免费网站| 久草毛片电影怡| 国产精品视频内谢女人| 91久久久久免| 国产丝袜啪啪| 五月婷婷久久综合| 骚妻少妇精品性色无码四色A V| 日逼视频日本| 久久人妇| 免费在线黄片视频| 人人澡人人弄| 蜜乳Av成人片网站| 欧美韩国你懂得在线| 欧美色www亚洲国产阿娇要播| 99热这里| 色欧美综合| 精品久久久久久亚洲| 美女91网| 男人的天堂亚洲| 欧美少妇色图| 大香蕉伊人网WWWn0n| 亚洲成a人v欧美综合天堂下载| 五月激情在线| 97综合国产| 人妻久热在线| .精品人妻一区二区三| 欧美白嫩在线放| 九九综合久久中文字幕| 内射卯月麻衣| 国产农村一一级特黄毛片| 久久丝袜| 精品一区96| 亚洲成aⅴ人片不卡无码| 嗯嗯啊好大| 唐山老熟妇露脸啪啪叫| 人妻激情视频| 亚洲AV无码天美传媒一区| 日韩性爱小视频| 欧美韩国你懂得在线 | 久久久新亚洲AV| 你草精品在线视频| 欧美亚洲日本视频久久久| 亚洲做性| 在现视频女上位好爽| 日韩字幕一区| 亚州精品人妻一二三区| 91人妻爽爽人人做人人澡| 福利视频香蕉免费一区二区在线| www.高清无码诱惑一区.com | 亚洲精品97p| 91狠狠综合久久久久久| 亚洲成人日韩小说| 天天综合色图| 亚洲熟女一区| 亚洲午夜免费狠狠干| 激情五月天插| 91综合网在线| 日韩美女,国产传媒,视频一区| 操逼操操操91| 国产欧美在线观看免费观看| 啊啊啊啊啊啊啊网址在线观看| 91五月天| 最新三级网址| 91精片| 欧美91色| 91亚洲影院综合| 色吧综合网| 国产绿奴视频在线观看| 男人的天堂va在线| 九九九精品色乱九九九| 中文一区二区婷婷视频| 在免费jIzzjIzz在线视频| 天天看夜夜看日日干| 欧美日韩97在线| 97超碰色屌| 丁香九月婷婷| 午夜精品探花| 亚洲一曲日韩精品| 久久东京热久久| 亚洲文学偷乱拍啪啪啪啪| 九九久久久九九| 任你草| 欧美性爱视频免费一区一A| 国产精品懂色tv影视免费观看 | 一级久久性爱视频| 中文人妻av高清一区| 热99这里有精品综合久久 | 嗯啊抽插大香蕉网页| 91亚洲色图| 韩日欧亚a级| 啊啊啊啊啊舒服| 欧美成人色| 色爱欲亚洲| http://qxhbdz.com| 亚洲丁香花色| 免费一级欧美片片线观看| 涩涩这里只有精品视频| 亚洲精品免费中文字幕| 亚洲一区二区在线观看91| 校园春色 亚洲| 亚洲伊人青青草| 欧美体内射精| 99热8| 久久婷婷欧美| 色综合20p| 精品九九淫乱男| 九九九九九九九九九五码| 四虎国产成人精品免费一女五男| 亚洲乱色视频一区、二区在线| 人妻啊啊人妻啊| 女优免费一区二区永久| 亚洲 综合 欧美| 玖玖综合.com| 亚洲情色五月天 | 久久久久久999| 欧美97色| 久久狠狠色噜噜狠狠狠狠97 | 亚洲视频一二区| 熟女中出视频| 99久热精品99re6热| 韩日精品福利视频一区不卡在线免 | 校园春色 亚洲| 欧美天天综合网版| 老司机福利青青草| gogogo免费高清看中国国语| 精品中文字幕第一页| 91成人久久| 天天插天天操| 亚洲色吧网| 欧美综合第一| 亚洲综合夜色| 99久在线精品99re8蜜桃| 国产精品扒开腿做爽爽爽视频| 亚洲图片第一页| 波多野结衣之双飞调教在线播放 | 啊啊啊好大好湿| 国产精品一二三| 97国产超碰| 亚洲成人性爱网站在线播放| 果冻国产精品麻豆成人av| 丁香六月婷| 色爱欲亚洲| 久久久少妇诱惑精品视频| 久久久久熟女| 夜夜操美女| 国产AV超爽| 日本一二区免费| 午夜综合在线| 女人综合网| 中文字幕精品一区二区精| www.色五月| 国产盗摄美女如厕大神作品在线观看| 天天影视网色欲色香| 91 丝袜在线播放| 亚洲一区二区久久久久| 久久婷婷五月天| 亚洲三级网址久久最新| 91热热色| 99久久久无码精品国产人| 大香蕉丝袜一级片| 91电影色诱| 中国少妇啪啪视频| 欧美国产欧美在线观看| 日韩一级二级| 啊啊啊轻点在线观看| 91国产操逼视频| 中文三一区| 91在线丝袜| 道久久五香丁月婷婷激情综合| 偷拍欧美激情| 欧美性天天影院| 中国AAAAAA黄色片| 九月丁香| 成人一级二级| 熟妇xxxxx性春色| 口爆综合网| 99最新日韩偷拍视频| 无码操逼视频一下| 国产欧美日韩在线观看麻豆传媒公司| 日韩色图 一区二区| 天天爽夜夜爽夜夜爽精| 日韩天美| 97在线视频免费看| 十八禁视频网站| 少妇第一页| 国产强奸乱伦xd| 久久综合久久综合人久久夜精品| 91bbbbbb| 久久久激情| 97色欧洲| 一区二区三区欧美激情| 欧美日韩美女精品久草一区二区三区| 性色av大全| 啊啊啊啊啊操我视频| 亚洲美女精品九九视频| 色婷五月| 91国产丝袜白虎| www色日本| 亚欧操逼片在线观看 | 青青国产精品在线| 日本男人天堂| 青青草日韩无码| 大逼色网站| www.久久久久| 国产区在线| 中文字幕 码 自拍 视频 区| 中文字幕人妻丝袜乱一区三区| 亚洲国产成人高清在线| 欧亚韩国999| 999岛国大片| 日日夜夜骑| 免费夜夜爱黄色视频毛片| 午夜一区| 亚洲国产综合久久天堂| 国产精品分类在线观看| 亚洲污一污二| caoni国产亚洲av| 无码九九九九| 色99在线| 日本久久女同性恋视频| 麻豆福利视频导航| 少妇3P性爱自拍| 国产九九九九九九| 日本久久99| 国产福利合集| 欧洲精品在线播放| 日韩欧美中文日韩欧美色| 校园春色家庭伦理欧美激情| 国产日韩欧美三级片| v91av| 艾草av| 国产AV久久野战精品| 夜夜骑日日| 旡码电影特区| 久草免费福利在线播放| 无马一区二区| 顶级少妇BT天堂| 综合操逼| 久久久久久久九九九九| 熟妇艹鸡八| 国产又大又硬又长又粗| 久久久无码视频| 97 九色| 久久女婷| 欧美精品23| 中文字幕国产| 91麻豆天美传媒HD| 国产精品免费视频不卡| 秋霞Av理论一级在线| 久久精品国产精品| 亚洲日产专区| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 国产真乱mangent| 日韩色图 一区二区| 99中出在线| 激情干在线| 久久久性| 97伊人| 我中文字幕6区| 亚洲综合97中文网| 一本一道vs波多野结衣| 国产操逼网站亚洲一级黄色| 91视频女生| 精品国产99| 天美传媒一二三区永久网站| 91成人久久| 9色国产精品一区粉嫩| 91激情国产| 成人五月天色网| 亚州伊人色综台| 国产日韩在线播放| 人人玩人人添人人澡免费| 天天日天天看| 夜夜嗨免费视频| 免费网色网站| 久久综合久久综合人久久夜精品| 国产大学生高潮在线播放| 日韩性爱毛片操骚逼| 国产真实子伦对白| 久久精品超碰| 夜夜嗨视频| 天天欧美| 欧美日韩不卡传媒| 日韩大香蕉精品在线视频| 91视频成人福利网站在线一区| 日韩一区二区精品视频| 中文字幕在线高清男人的天堂| 亚洲精品尤物yw在线影院| 婷婷超| 亚洲欧美天堂| 亚洲超碰97| 96精品久久| 神马麻豆福利院 | 国产激情综合五月久久| 热99这里只有精品| 黄色免费网页无码| 性色av蜜臀av色欲aV| 午夜无遮挡男女啪啪视频| 91国产操逼视频| 亚洲影院成人| 久96热在线观看视频| 久久精品久| 天天综合网91| 日韩福利电影网| 色牛aV| 热思思免费视频| 欧美人与动性人交a| 啪啪视频免费在线观看| 日韩成人高清一区二区| 欧美日韩国产一区二区小黄片大全| 1769成人国产精品视频| 日本熟妇浓毛hdsex| A级国产欧美激情在线| 91免费看一区二区三区| 黑人美精品 A片| 九月激情婷婷| 无色无码| 久久婷婷精品| 99超碰色| 插老姨肥穴| 欧美熟女丝袜| 天天综合站| 九九热三级片| 麻豆国产97在线| 在线看的av| 5278欧美一区二区三区| 色婷婷小说| 天操天操夜操夜月操月年年操| 久久欧洲| 夜夜操夜夜高潮夜夜爽国产精品区| 啊啊啊操死我了| 火箭成精品视频884必出精品| 思思热国产高清| 国产精品蜜臀久久久久无码AV| 久久精品中文字幕无码l| 日本黄 R色 成 人网站| 超碰人人乐97| 人妻少妇色综合| 亚洲第二页| 亚洲欧美国产中文视频| 97人妻免费中文字幕| 97色色婷婷| 色五月69夫妻| 夜夜嗨免费视频| 午夜美女福利视频| 国产精品久久久久久久毛片1| 激情四射五月天| 国产suv精品一区二区四区999| 人妻免费观看| 黄页| 久久精品中文字幕无码l| 五月激情天| 伊人操操| 亚洲熟女综合网| 污污汅18禁网站在线永久免费观看| 日本色婷婷| 区二区亚洲婷| JuliaAnn丝袜熟女系列| 强奸国产精品视频| 激情五月综合网| 日本顶级天天操狠狠操夜夜操中文字幕| 超碰97日韩| 999亚洲国产视频| 天美传媒av 在线| 夜夜做夜夜爽精品视频| 成年人黄色视频免费| 国产精品老师| 男人的天堂在线| av网站在线看| 婷婷五月天色色| 五月开心久久AV官网| 国产激情视频一区区三区| 精品区国产区一区二区三区| 97超碰天天爱天天爱| 91观看 国产白丝| 九月丁香综合网| 一区中文字幕二区日韩| 91性情| 最新国产精品久久精品| 97公开久久| 欧美片第一页| 欧美后进式| 极品人妻少妇综合| 中文字幕123| 先锋音影AV| 日韩精品在线放| 欧美色三级片91| 97中文字幕九区| 麻豆啪啪啪视频| 九九九九一级| 无码天天操| 求求你操操我| A级国产欧美激情在线| 小泽玛利亚一二三| 蜜臀AV一区二区三区| 日本在线播放不卡一区| 伊人精品国产| 人人人人插| 天天天天天超碰| 一个国产在线综合网站| 日日天天久久啊啊aaa| 欧美人妻少妇| 综合色图区| 天美传媒AV在线播放| 中文字幕在线观看丝袜| 91 偷| 尹人大香蕉视频在线| 果冻传媒A片麻豆熟妇人妻| 91精品黄在线观看| 麻豆天天躁天天揉揉AV| 人人操人人狠狠操| 亚洲成人在线乱码色午夜| 久久露脸国产老熟女| 精品国产乱码久久久影院| 欧洲熟妇xxXx欧美老妇裸体| 在线播放欧洲免费av| 六月色色| 久久免费少妇| 国产日本熟女顶级一区二区三区视频| 人妻一区二区三区熟女| 亚洲色图久久成人| 日韩免费a级毛片无码a∨| www.一本大99| 国产对白刺激视频| 日本免费一区二区不卡 | av2014 日韩在线中文字幕| 极品尤物在线观看| 日韩一级二级三级| 热久久精品| 中文字幕精品一区欧美| 天天综合网~91入口| 国产精品熟女丝袜一区二区| 久久久久久久| 久久久久久久久久久人妻| 八戒午夜福利理论片| 手机av亚洲丝袜美腿日韩第一页二页| 18禁超污无遮挡无码免费网| 中文字幕青青草| 天天操天天射青青草| 大黄片做爱的大的| 国产美女91| 综合日韩激情另类图片| 久久毛卡| 亚州性9| 人妻爽爽啪视频| 久久久久9| 国产91av在线播放| 91在线一起| 九九九综合精品| 国产69精品久久久久99尤物| 欧美激情精品久久久久久| 色女99一级片在线观看| 亚洲中文字母在线播放| 精品亚洲| 亚洲精品久久一区二区三区蜜桃臀| www.色婷婷| 日本免费人成视频播放120秒| 国产精品乱码久久久久久久久| 亚洲免费精品一区| 国产精品自拍欧美在线| 狠狠操使劲操| 超碰在线成人电影| 桃色六月天| 久久婷婷色| 国内偷自视频区视频综合| 国内精品99999| 2000亚洲男人天堂| 免费看毛片操穴| 中文字幕亚韩| 日韩福利综合一区| 精品97久久| 999熟女精品| 狠狠干精品一二三四五六2022| 亚洲午夜av| 中文字幕久热视频在线| 超碰95| av2014 日韩在线中文字幕| 久久久性爱视频| 久久久久骚| 人人爱操| www.人人cao| 成年人黄色小视频网站| TS人妖另类精品视频系列| 韩日欧亚a级| 欧美一二级| 今日头条成人一区二区三区四虎精品| 夜夜肏2021| 五月丁香婷婷色| 大香蕉免费乱伦视频| AV和黑人在线播放| 波多野42部激情无码喷潮| www.男人的天堂| 99re99在线视频| 人妻美腿丝袜日韩| 久久久久9999精品九九九| 天天影视激情欧美| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 久久精品无码熟妇一区二区三区视频导航| AV高清一区| 800zy一区二区| 99丝袜福利在线播放| 欧美夜夜狠| 人妻加勒比东京热| 91 刺激在线| 日本福利社| 人人人人人人少妇| 久久人妻精品| 综合五月天| 色综合天天| 久久怡红院| av午夜玫瑰| 天天插网| 夜夜骑夜夜操| 啪啪综合网| a级免费在线观看| 搡老女人老熟女91| av激情亚洲五月天| 懂色Av| 欧美国产精品久久九九| 色姑娘综合网| 无码久久国产 | 国产伦精品一区二区三区视频女| 蜜桃臀av在线观看| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 婷婷三区| 亚洲综合有玛| 嗯嗯啊啊视频一区二区三区| 久久日本熟女精品一区| 日本免费一区二区不卡|