99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

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

open-code-review:從PR模板到合并保護的代碼評審自動化實踐 1. 為什么我要做 open-code-review 這個項目干開發(fā)十多年我見過太多因為“改了一行代碼”引發(fā)線上事故的現(xiàn)場。最典型的場景是這樣的一個 PR 在 GitLab 上掛了三天沒人看第四天負責人急著發(fā)版自己點了個 approve 就合并了結果這段代碼里的空指針異常直接打爆了生產(chǎn)日志。事后復盤的時候大家都很沉默因為誰都清楚問題出在哪——評審環(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ā)部門核心思路是一樣的——把評審從“憑感覺”變成“按清單”把質(zhì)量把關從“事后救火”變成“過程攔截”。下面我把這套方案的設計思路、落地細節(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ù)安全也是個顧慮。我更傾向于用團隊已經(jīng)在用的基礎設施把評審能力“嵌入”進去而不是引入一套新系統(tǒng)。最終選型組合是這樣的組件選型理由代碼托管GitHub / GitLab / Gitee團隊已有基礎不額外引入平臺自動化檢查GitHub Actions / GitLab CI平臺原生能力零額外成本智能評審輔助Danger.js一門 DSL能寫規(guī)則去自動點評 PR靜態(tài)掃描ESLint SonarQubeESLint 管 JS/TS 規(guī)范SonarQube 管質(zhì)量門禁提交規(guī)范commitlint husky在提交那一刻就攔截不規(guī)范行為文檔沉淀倉庫內(nèi) Markdown 模板評審清單和模板跟代碼放一起跟著版本走用 GitHub Actions 而不是單獨搭一套 Jenkins是因為配置簡單、維護成本低而且對于大多數(shù)中小團隊來說平臺自帶的 CI 能力已經(jīng)綽綽有余。Danger.js 是這套方案里的關鍵角色它能在 CI 里跑一段腳本讀取 PR 的元數(shù)據(jù)標題、描述、修改文件列表、評論等然后按照我寫的規(guī)則自動發(fā)表評審意見。這么說可能有點抽象真實的場景是如果 PR 沒有關聯(lián) issueDanger 自動貼一條提醒如果修改了核心模塊的代碼卻沒有新增測試Danger 自動提出質(zhì)疑。人還沒開始看機器已經(jīng)把門檻守住了。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ā)這段代碼錯誤處理外部接口調(diào)用失敗怎么辦網(wǎng)絡超時有沒有兜底數(shù)據(jù)為空時會不會拋異常性能影響新增的循環(huán)會不會造成 O(n2) 復雜度有沒有在循環(huán)里查詢數(shù)據(jù)庫有沒有不必要的重復渲染并發(fā)安全共享變量有沒有加鎖線程池使用是否合理會不會出現(xiàn)死鎖或者競態(tài)條件兼容性數(shù)據(jù)庫遷移腳本能否回滾前端改動是否兼容老瀏覽器接口變更是否影響舊版本客戶端可維護性:命名是否表意清晰有沒有留下注釋解釋“為什么這么做”后續(xù)維護者能看懂嗎這個清單不是讓評審者逐條回復而是引導他們的注意力集中在真正的風險點上。實踐證明給了清單之后評審意見的質(zhì)量明顯上升從“這里應該加個空行”這種碎碎念變成了“這里如果 upstream 掛了我們怎么兜底”這種真正有價值的問題。3.2 PR 模板把“該提供的信息”變成“必須要填的字段”模板這個東西看著不起眼實際作用比想象中大得多。沒有模板的時候PR 描述五花八門有人只寫一句“修復 bug”有人干脆什么都不寫評審者還得從代碼 diff 里自己猜改動意圖非常消耗耐心。open-code-review 的 PR 模板設計成這樣的結構### 背景 這個變更解決了什么問題為什么需要做這個改動 ### 變更內(nèi)容 本次改動涉及哪些模塊核心邏輯是什么 ### 影響范圍 改動影響哪些功能是否涉及公共代碼是否需要同步更新文檔 ### 測試說明 本地怎么驗證的覆蓋了哪些用例有沒有補充自動化測試 ### 自檢清單 - [ ] 代碼已通過 lint 和單元測試 - [ ] 已補充/更新必要的測試用例 - [ ] 已檢查性能影響和異常處理 - [ ] 無敏感信息泄露密鑰、token、個人數(shù)據(jù)看到區(qū)別沒有模板不是在增加負擔而是在幫助提交者把“腦子里的信息”顯性化。這些信息對評審者來說是必不可少的上下文沒有上下文就評審等于讓一個裁判不看比賽就打分。寫完模板的過程其實也是提交者自己重新審視一遍代碼的過程經(jīng)常有人寫著寫著就發(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 描述過短請補充背景、變更內(nèi)容和測試說明。) } // 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. 修改核心模塊但沒有新增測試時提出質(zhì)疑 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ī)則寫多了會不會誤報太多反而把真實問題淹沒。這個擔心是對的我的經(jīng)驗是 Danger 規(guī)則寧少勿多每條規(guī)則都要有實際的踩坑經(jīng)驗支撐不要為了炫技寫一堆花里胡哨的規(guī)則。開頭寫 4-5 條能實打?qū)嵔鉀Q問題的就足夠了后面再根據(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 側(cè)掛兩個鉤子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ī)則這是整個項目里最有價值、也最需要花心思的一步。我不建議去網(wǎng)上找一份“最佳實踐清單”直接抄因為每支團隊踩過的坑都不一樣。更好的做法是把過去半年線上故障和嚴重的評審漏判拉出來一個個分析當時的評審過程中為什么漏掉了然后針對性地寫規(guī)則。舉個例子我們團隊曾經(jīng)出過一次很嚴重的線上事故有人改了數(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ī)則大家都愿意遵守因為機器不講情面但人工評審的質(zhì)量還是參差不齊有人習慣性點 approve有人一句話不說直接鎖死 PR。后來我意識到問題出在缺少“軟共識”。所謂的評審文化不是一條規(guī)定能建立的。我在團隊里推廣了幾個約定效果比預期好很多第一評審要在 24 小時內(nèi)響應。不是要求馬上看完而是至少看一眼并回復“已開始評審”或者“今天忙不過來明天上午看”讓提交者心里有底避免 PR 石沉大海。第二評審意見要區(qū)分“必須改”和“建議改”。用前綴標記比如[blocker]是必須要改的問題不開玩笑[suggestion]是可選優(yōu)化項提交者可以拒絕但要說明理由。這樣層級清晰不會因為一堆小意見淹沒了關鍵問題。第三每個 PR 必須有一個明確的第一評審人assignee。沒有第一責任人就沒有人為這個 PR 的質(zhì)量負責沒人盯著的 PR 最容易爛尾。assignee 可以在創(chuàng)建 PR 時手動指定也可以用 CODEOWNERS 文件自動分配。# CODEOWNERS * backend-owner frontend-owner src/payment/ payment-team-lead第四定期輪換評審搭檔。長期固定一個人評審另一整個模塊容易形成思維定式看習慣了什么都覺得沒問題。輪換之后新人會問“為什么這里這么寫”這種“外行的問題”往往會暴露隱形的設計決策逼著提交者重新審視自己的代碼。4.4 度量與反饋用數(shù)據(jù)說話而不是憑感覺open-code-review 最后一塊拼圖是度量。說實話度量這件事很容易走極端有的團隊一點度量不做有的團隊把一堆亂七八糟的指標貼墻上結果引發(fā)焦慮和攀比。我的建議是只關注幾個真正能反映結果質(zhì)量的指標而且只用于團隊自我改進不用于績效考核。我目前覺得最有價值的幾個指標評審響應時長從 PR 創(chuàng)建到第一次有效評審意見的時間。太長了說明人手不夠或流程阻塞。PR 合并時長從創(chuàng)建到合并的完整周期。過長說明拆分粒度太大或需求太大。評審意見中被采納的比例低說明評審意見質(zhì)量有問題或者提交者太固執(zhí)兩種情況都需要介入。每千行代碼缺陷數(shù)上線后統(tǒng)計看流程改造前后是否有明顯變化。這些指標我建議用 CI 的產(chǎn)物直接采集或者用 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 本質(zhì)上是本地鉤子任何提交者都能用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 的填寫成本極高最后大家都填“無”來敷衍。我的經(jīng)驗是核心字段控制在 5 個以內(nèi)如果有信息確實需要但不想增加模板負擔可以放到 issue 模板里讓提交者提交時寫清楚。第三approve 會過期的設定必須開著。GitHub 提供了 “dismiss stale approvals” 選項我強烈建議打開。否則評審者周一 approve 了提交者周二又改了一版代碼舊 approval 依然有效等于改動沒有經(jīng)過評審就直接合并了。這種拼配置的細節(jié)往往決定了流程的真實強度。第四自動化規(guī)則不要寫得太執(zhí)著。機器判斷有天然的局限比如規(guī)則判斷“修改了測試文件”時如果一個人把測試文件重命名也算修改就會誤報。合理的策略是把自動化當作提醒用 warn 而不是 fail人工評審環(huán)節(jié)再決定是否攔截。第五記得給評審者和提交者都留出口。規(guī)則再完美也會有合理的例外。比如緊急 hotfix 需要繞過流程那就應該提供一個明確的例外通道而不是讓人偷偷用--no-verify。我們在團隊里約定緊急修復可以直接在 PR 描述里加[hotfix]標記CI 會跳過部分檢查但合并后必須在一個工作日內(nèi)補上測試。給規(guī)則開一個“白手套通道”反而比一刀切更容易被接受。6. 落地效果與實際數(shù)據(jù)這套流程到底改變了什么open-code-review 在我們團隊跑了三個月的真實數(shù)據(jù)我覺得有必要曬出來。這里不是吹噓這個項目多厲害而是想說清楚一個樸素的道理流程本身不產(chǎn)生價值流程帶來的人們行為變化才產(chǎn)生價值。上線前我們統(tǒng)計了基線數(shù)據(jù)PR 平均合并周期 4.2 天評審中發(fā)現(xiàn)的邏輯類問題占全部問題的 12%線上事故中因評審漏判導致的比例約 60%。三個月后同樣的統(tǒng)計口徑下PR 平均合并周期降到 1.8 天評審中邏輯類問題占比提升到 37%線上事故中因評審漏判導致的比例降到 22%。有人可能會說周期變短是因為大家不敢認真評審了恰恰相反真正的原因是以前 70% 的等待時間被自動化判斷消化掉了人工評審的時間反而更集中、質(zhì)量更高。邏輯類問題的占比提升反映的是評審者的注意力從格式、命名這些瑣碎問題上轉(zhuǎn)移到了真正影響系統(tǒng)健壯性的核心問題上。自動化兜住了底線人力才敢往高處看。還有個隱藏收益是新人培養(yǎng)速度變快了。新同學以前要看老代碼怎么寫的、看評審意見猜團隊風格現(xiàn)在直接看 PR 模板、看 Danger 提示、看評審清單就能快速理解團隊對代碼質(zhì)量的底線要求。這比請老同學講一個小時的“代碼規(guī)范”高效得多。7. 如果你想在自己團隊落地我的幾點真心建議整個 open-code-review 項目寫到這里我一直盡量避免把它包裝成一套“標準答案”。代碼評審這件事沒有銀彈不同團隊的業(yè)務節(jié)奏、技術棧、人員構成差別太大照搬任何方案都會水土不服。但如果要說有什么共性的東西值得借鑒我會總結成這樣幾句話。第一先診斷再開方。不要一上來就急著配工具先把團隊最近兩三個月的 PR 瀏覽一遍看看時間都消耗在哪里問題主要集中在哪些類型上。有了數(shù)據(jù)基礎你才知道規(guī)則的優(yōu)先級怎么排。第二自動化是解放評審者不是替代評審者。機器檢查、機器人評論、CI 門禁這些機制的價值在于把低價值勞動從人類身上移走讓評審者把腦力用在高價值的判斷上。如果有一天我們發(fā)現(xiàn)機器人已經(jīng)能完全替代人類評審那我也舉雙手歡迎——不過至少目前代碼評審還是個需要人味兒的活。第三規(guī)則的迭代邏輯是“事故驅(qū)動 數(shù)據(jù)驅(qū)動”。每出一個線上事故就回顧評審環(huán)節(jié)能不能攔住每發(fā)現(xiàn)一個高頻誤報就調(diào)整規(guī)則閾值。這套機制跑起來之后規(guī)則不是越堆越多而是越來越精準。最后再分享一個小技巧。如果你想讓團隊愿意配合這套流程最好的辦法不是發(fā)全員郵件通知而是找一個大家公認的質(zhì)量標桿項目先試點等效果出來后讓數(shù)據(jù)說話。三個月后把“接入前后對比圖”扔到群里不需要你多解釋什么其他項目的同事會主動來問你是怎么做的。我在實際推行過程中的體會是改變?nèi)说牧晳T最好的工具不是制度而是可感知的價值。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
免费视频WWW在线观看网站| 亚洲五月天激情| 玖玖婷婷色| 婷婷99狠狠| 97韩国久久电影院| 色五月aV| 精品一二三区视频立| 婷婷五月丁香国产| 大战熟女丰满人妻AV| 99热8| 欧美激情 日韩无码 婷婷 五月天| 婷婷日本色| 午夜丁香| 97人人干人人操| 天天擼久久擼在线| 婷婷五月天com| 色综合视频| 色婷婷六月| 夜夜爱网站| 六月丁香射婷婷欧美色图片| 噜噜噜噜婷婷五月天| AV片在线观看| www.婷婷五月.com| 国产三级秋霞| 五月激情六月婷婷| 五月叮香啪| 精品网站99| 97色久| 最新婷婷五月丁香| 超碰成人影视| JlZZJlZZ8JlZZ亚洲熟女| 97人人操人人爽| 婷婷六月色开| 久久久久久人妻| www,五月天激情| 色情综合网| 99精品人人| 国产亚洲99久久精品熟| 97超碰99热99| 第四色五月婷婷| 91精品国产综合久久久不卡电影| 在线成人va| 成人无码精品1区2区3区免费看 | 亚洲激情在线| 国产乱妇无乱码大黄AA片| 激情五月综合网最新| 激情丁香五月| 丁香成人五月天| 97精品自拍| 亚洲人妻电影| 天天综合色| 人人草人人爱| 天天日天天肏天天奸| 精品一二三区久久AAA片| 91久久综合亚洲鲁鲁五月天| AV性爱网| 91在线精品一区二区| 日韩av手机在线观看| 婷婷五月天视频| 99re思思久久| 97操碰日本女人| 丁香深五月婷婷| www,setingting| 99热欲| 婷婷丁香91| www.91婷婷| 琪琪色五月天| 久久婷婷五月综合| 人人人操 超碰| www.ywav| 狠狠色丁香| 精品婷婷五月视| 丁香五月婷婷激情123| 新激情五月开心五月婷婷五月丁香五月 | 情欲综合网| 久草久青福利| 婷婷久久精品| 三级片AAA久久久AAA久久久AAA | 精品亚洲国产成AV人片传媒| www.99精品视频| 九九综合九九| 夜丁香综合| 女人天堂久久| 婷婷婷婷午夜| 丁香五月天激情| 影音先锋 91工厂| 五月色俺婷婷| 激情综合网五月天| 婷婷丁香综合| 激情综合婷婷| 超碰人人干| 性做久久久久久久免费看| 丁香五月婷婷俺也要去| www.99精品在线| 激情深爱五月天| 五月婷婷很很色| 秋霞日本免费毛片A片| 天天搞夜夜叫| 久久婷婷五月综合色奶水99啪| 97自拍视频在线| 991自拍视频| 乱码操操| AV成人在线播放| 国产伦亲子伦亲子视频观看| 久艹大香蕉| AV天堂淫乩| 婷婷九月丁香| 色婷婷aV四虎| 午夜不卡成人一区二区| 五月婷婷激情综合| 青青草tp| 另类A片| 久久91久久精品久久| 亚洲久久日| 综合激情五月综合激情五月激情1| 亚洲欧洲中文日韩久久AV乱码| 色色五月婷| 激情综合色婷婷啪啪六月天| 婷婷丁香五月高清| 婷婷欠久少妇| 九九免费在线视频| 丁香六月婷婷色XXXX| 久久久大香蕉| 久久久久网站| 婷婷五月丁香六月| 夜夜干 夜夜操| 久久婷婷亚洲无码一起| 欧美激情VA永久在线播放| 337p大胆噜噜噜噜噜91Av| 国产44页| 99熟女啪啪视频| 国产精品男人AV不卡| 丁香婷婷人妻| 色色色色色网| 这里只有精品99视频| 婷婷五月综合色拍| 狠狠久久婷五月| 97色色色色色| 99人人干人人操| 丁香婷婷少妇| 中国女人做爰A片| 久色网址| 少妇性BBB搡BBB爽爽爽视頻| 人人操A| 五月婷婷激情综合| 五月婷婷无码专区| 操操熟女| 婷婷丁香色情| 97亚洲色 torrent magnet| 亚洲国产成人在线| 丁香色五月直播| 丁香六月婷婷综合激情欧美| 久久久精品99亚洲综合| 午夜天堂一区人妻| 欧美va欧美va差| 亚洲精品又粗又大又爽A片 | www.ppypp| 日逼影音先锋男人资源站| 热的无码综合视频| se99热久久一本| 日本五月天网站| www,久久久人人| 国产午夜一区二区三区| 99热精品观看| 99热这里只有精品99| 婷婷五月天丁香| 51国精产品自偷自偷综合| 97人人做| 丰满少妇乱A片无码| 婷婷五月天99| 4399在线观看免费高清黄色视频| 狠狠爱综合| 无码se| 99久久综合网| 五月丁香婷爱在线| 日本一级黄色电影| 日本V在线观看不卡视频网站| 思思99re这里只有| 久热91精品| 超碰人人艹| 青青.com| 综合日本婷婷| 九九在线视频| 亚洲视频色婷婷| 99热久草| 婷婷丁香五月在线观看91| 五月婷婷久| 1024成人在线观看| 国产午夜精品一区二区三区四区| 另类激情综合| 夜夜做天天爽| 九九热99视频| 超碰99热在线观看| 熟女人妻一区二区三区免费看| 亚洲一区二区无码蜜乳av| 一区=区操屄高清大全av| 婷婷丁香五月婷婷| 99热这里有精品24| 五月丁香婷婷爱激情综合网| 中文av在线观看| 99性视频| 国产成人av在线播放| 99er免费在线观看| 婷婷精品在线| www.AV在线| 国产亚洲99久久精品| 中文字幕色色色| 4399在线观看免费高清黄色视频| www.第四色99| 99精品视频在线观看| 色色色色色色色色色色色色色色,网站| 亚洲成人高清在线| 亚州第一A片| 久久六月天| 这里只有精品9| 色婷婷色99国产综合精品| 9999热免费视频视频| 丁香五月色情| caop在线| 殴美日韩成人| 天天激情欧美美女| 婷婷5月九九| 男人天堂伊人五月丁香| 淫视馆AV在线| 97热在线精品| 婷婷成人在线| 第四色网婷婷| 丁香六月狠狠干| 黄色AAAA韩国guochansanji| 免费超碰在线观看| 成熟妇人A片免费看网站| 色哟哟www| 蜜桃五月天| 婷婷伊人激情婷婷| 婷婷亚洲丁香五月| 六月婷五月丁香| 乱码操操| 任你草| 五月婷婷七月丁香| 九月久久婷婷| 97资源碰碰在线| 久久综合55| 欧美久久一级内射wwwwww.| 97人妻碰碰碰久久香蕉| 五月丁香婷草| 日本91在线| 丁香五月天综合| tingtingzonghewang| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 伊人99热| www.25五月婷婷| 天天摸.天天mo| 97操在线视频| 亚洲日本激情| 五月丁香在线偷拍视频| 五月六月激情| 日日夜夜天天| 26uuu欧美日本| 黄网在线免费观看| 9久久精品| 综合激情五月天| 色五月婷婷五月| 99re这里| 五月天网址在线刘玥| 97高清国语自产拍| 九九成年视频| 九九aV| 色色婷婷五月| 婷婷中文字幕版| 六月婷婷激情小说网| 欧美综合在线五月天色婷婷| 这里精品| 色色色色网| 色综合久久888| 午夜成人片400| 日本少妇裸体做爰高潮片| 96自拍视频九色在线观看| 亚洲精品V天堂中文字幕| AA丁香综合激情| 伊人激情AV一区二区三区| 青青草婷婷五月天| 任你操精品免费| 黄网在线播放| 涩涩网五月天| 91要啪| 久久婷婷五月| 在线91日韩| 91视频精品99| www.五月丁香av| 五月婷婷成人| av国产精品| 色99综合色88| 五月天婷婷色| 丁香五月激情在线| 亚洲色五月天| 亚洲Av成人在线观看| 五月婷婷av| 五月丁香天天| 亚洲精品影视| 草久私拍| 婷婷深爱五月亚洲综合| 色综合色五月| 草久私拍| 深爱五月中文字幕| 激情綜合W W W,激情五月天| 国产这里只有精品| 婷婷 色 丁香 夜| 99日韩| 国产午夜精品AV一区二区麻豆| 月色色综合婷婷网| 五月丁香网站在线播放| 婷婷丁香六月| 五月婷婷先锋| 丁香香蕉婷婷| 丁香婷婷啪啪啪| 99热这里都是精品| 久久这里只有精品视频15 | 人妻操在线看| 狠狠干夜夜干| 九色PORNY自拍成人精彩视频| 国产精品色一哟哟| 丁香五月天堂网| 婷婷终合色图| 九九热免费| 激情五月天婷婷| 六月大香蕉| 五月天婷婷乱| 开心五月婷婷| 金桔一区二区ab地址| 婷婷四色五月| 99热亚洲| 婷婷色婷婷| 久久九网| 五月丁香六月婷婷玖玖| 久热伊人| 天天舔天天插天天爱| 日韩AAAAAAAAAAA片| 内射爽无广熟女亚洲| 六月婷婷七月丁香| 婷婷六月天激情| 伊人高清无码| 丁香五月婷婷色五月| 五月婷婷综合久久| 欧美操逼天堂| 婷五月天| 91大神在线免费看视频全集男男一起操| 五月激情六月| 久久久这里有精品| 天天性视频| 开心婷婷五月| 婷五月天| 狠狠草狠狠草| 亚洲激情| 激情丁香五月婷婷| 六月婷婷七月丁香| 欧美成人va| 五月天大香蕉视频| 思思热视频在线| 碰人人97| 丁香六月情| 久久这里只有精品视频15| 日日爽日日操| 免费看欧美成人A片无码| 综合久| 欧美激情五月天| 婷婷五月精品| 色五月丁香婷婷| 丁香九月色| 国产在线另类五月婷婷| 久久一级AV| 青青草蜜臀| 99久久婷婷国产综合精品草原| 丁香色色网| 丁香五月综合| 久碰视频| 久久视频这里都是精品| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 开心久久爱五月天| 五月丁香婷婷五月色| 伊人五月人妻精品| 九月性爱网| 综合图区激情| 无码九九九九| 97AV在线视频| 丁香五月色播中文在线播放| 婷婷大香焦| 99精品22| 另类精品视频在线观看| 99色视频| 婷婷丁香激情| 伊人玖玖网| 日本色久| 亚洲射激情| 久热伊人91| 五月激情婷婷国产精品久久久久久| 久操人| 亚洲五月天婷婷| 九九十99视频| 久热91| 夜夜天天天天天干天天爽| 狠狠干最新地址| 夜丁香五月婷婷| 午夜婷婷久久 | 色五月丁香总合网| 1024在线视频| 99热网站| 九九色综合视频| 91一道本| 亚洲va综合va国产va中文| 日韩无码人妻一区二区三区综合| 国产4P视频精品五区| 99在线视频精品| 久热久色| 狠狠色婷婷丁香五月| 色呦呦美女| 色久播播| 97色图片中文字幕视频在线观看| 六月婷婷五月丁香| 99热综合在线| 日日日日操| 91爱操| 婷婷五月激情欧美大胆视频| 97干免费视频| 99久久大片| 色,激情五月天| 五月丁香久久综合91| 极品另类| 激情五月丁香综合网站| 九九视频网| 红桃91人妻爽人妻爽| 久久久久久9| 天天操天天谢| 丁香六月AV| 性爱人人网| 拍真实国产伦偷精品| 中文成人在线| 五月婷婷片| 婷婷丁香高潮了| 91人操人人人操人| 99久免费视频| 色哟呦av| 久久久久久人妻| 久操福利| 在线视频激情网站| 五月亭亭直播| 操逼棍操逼| 26UUU成人网| 色狠狠999综合| 国产色色小草视频| 五月激情婷婷偷拍| 97五月婷| 大香蕉 婷婷| 五月丁香婷婷综合网| 日本狠狠干| 五月丁香狠狠| 色射婷婷五月天| 成人婷婷桔色| 五月熟妇婷婷久久| 狠狠做五月婷婷| 色噜噜婷婷| 超碰二区| 国产9色在线/日韩| 一级性感黄色内射视频| 亚州操操| 91九色视频| 秋霞成人毛片一级A片| 国产日韩亚洲欧美在线观看| 狠色色狠网| 六月婷婷狠狠做| 婷婷激情五月天激情在线| 一级性感黄色内射视频| 丁香激情网| 怡春院久操| 操逼巨乳91| 亭亭玉月丁香| 啪啪婷婷五月天激情| httpwww色com日本| 99久久精彩视频| 日本在线99| 在线天堂9| 狠狠干五月天婷婷网| 26UUU成人网| 人妻久久久久久久久妻久久久久| 五月丁香六月婷婷欧美综合| 91综合国免费久入| 婷婷五月天影院| 色狠狠色噜噜AV天堂五区| 色五月,com| www久久久久久| 97在线/亚洲| 午夜婷婷丁香| 色婷婷九月综合| 色婷婷久久综合丁香五月| 人人播| 久久99网站| 极品少妇高潮啪啪AV无码| 日韩乱轮AV| 婷婷六月色情| 九九热只有这里是精品| 婷婷激情视频欧美视频自拍视频欧美剧| 九九無妻| 亚洲V国产V欧美V久久久久久| 99久久国产综合精品五月天喷水\| 欧美婷婷综合网| 久久性爱视频| 91人人爽久久涩噜噜噜| 天天干天天插| 91亚洲免费片| 婷婷大美在线| 久久狼人天堂| 久久精99| 六月激情婷婷综合| 91操片| 亚洲成人AV高清字幕| 人人叉久| 丁香婷婷五月天色播| 婷婷五月激情视频在线| 久久婷综合| 性爱激情小说AV五月丁香花| 天天干夜夜b| www.99热在线观看| 丁香五月狠狠在线观看| 婷婷欧美激情综合| 97色色综合| 亚洲午夜成人av电影网| 99热这里在线精品| 大香蕉久久婷婷| 色欧美色色色| 中文字幕婷婷五月天| 九九久久网| 偷偷与邻居做爰完整视频| 色欲影香| 亚洲色网址| 五月婷婷色色爱| 欧美色五月| 天天噜| 国产精品成人网址| 九九这里精品| 午夜天堂一区人妻| 激情q青青草在线婷婷| 日日夜夜干| 婷久久久| 性生活视频98791| 丁香六月综合激情| 开心六月婷| 97丁香婷婷| 9热久久| 天天看夜夜看| 大香蕉久久视频久久视频 | 亚洲另类婷婷综合| 99资源在线视频| 99天堂网最新| 亚洲视频色婷婷| 啪啪啪丁香五月| www激情网| 亚洲妇女熟BBW| 丁香婷婷精品视频| 久久久97| 99久热这里有精品| 五月丁香六月婷综合成人综合| 激情五月综合网最新| 九九亚洲| 97视频91| 色爱亚洲| 色97综合婷婷天天色| 无码色| 久久这里只精品66| 超碰国产在线| 能看的AV网站| 成人婷婷色综合| 第四色婷婷色五月| 五月色亭丁香| 久久激情五月婷婷| 狠狠爱激情网| 深爱激情丁香| 亚洲五月丁| 新激情婷婷| 999影院成人在线影院| 天堂二区| 91碰超| 97人人干| 成人做爰A片免费看网站找不到了 国产露脸150部国语对白 | 99热这里精| 色婷婷激情Av久久久| 婷婷五月精品中文字幕| 去色色五月天| 成人av免费观看| 天天操夜夜啊| 婷婷综合天堂| 91热99| 色五月xxx| 全部老头和老太XXXXX| 狠狠撸激情综合丁香五月天俺来啦| 激情婷婷五月在线合集| 五月丁香好婷婷A片网| 五月丁香久人妻中文| 欧洲第一无人区观看| www.狠狠干com| 色色影院黄大片| 色婷婷av在线观看| 婷婷五月综合啪| 色五月,婷婷大香蕉| 91久久| 狠狠色综合777| 任你干线上免费视频有3吗| 婷婷六月天| 狠狠干天天内射| 五月婷婷久久爱| 婷婷久久99| 五月色无码| 性爱七区| 青柠影视免费高清电视剧| 天天天天天天操| 九九视频免费| 欧美久人人| 五月综合色| 婷婷五月六月| 婷婷五月免费观看| 99热99美国在线观看| 欧美性生交XXXXX无码小说| 五月天精品视频| 97丁香花五月天激情小说| 婷婷综合伊人| 思思久久99热只有频精品66| 婷色五月天| 五月天无码视屏播放| 婷婷va| 国产毛片精品一区二区色欲黄A片| 色导航色婷婷五月天在线观看| 欧美三级欧美一级| 精品热青草| 色吧综合网| 99热99热99热99热| 丁香婷婷人妻| 玖玖婷婷色五月| 夫妇交换刺激做爰| 激情久久久久| 日本高清综合网五月丁香| 思思99热在线| 丁香激情久久| 新激情综合| 国产精品久久久久9999小说| 色综合激情| 天天做天天爱天天做| 亚洲VA欧美VA| 啪啪综合| WWW久| 人人爽网| 狠狠爱综合| 日本一级特黄大片AAAAA级| 欧美亚洲婷婷五月| 怡红院99| 99热这里在线精品| 六月婷婷激情图片| 婷婷五月天精品| 热日韩欧美| 五月婷婷丁香六月| 欧洲色色| 思思精品视频| 丁香色色网| 色综合久久88色综合天天99| www夜夜操comwww| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 婷婷五月超碰| 雪千夏麻豆| 国外亚洲成AV人片在线观看| 天天做天天爱天天爽| 在线观看的av| 91九色精品女同系列| 五月天开心婷婷激情网站 | 色五月婷婷亚洲| 五区毛片七区毛片| 婷婷五月综合啪| 亚洲 小说 欧美 激情 另类| 久久小视频免费| 毛片网站谁有| 欧美婷婷六月丁香综合色连续高潮抽搐| 中文字幕九九九九| 五月天婷婷网站888| 日本欧特黄色刺激一区影视久精品无码| 超碰九热| 极品五月天| 超碰免费电影| 日本视频欧美观看免费| 婷婷伊人视婷婷婷| 五月婷婷激情日本| 人妻久热| 中文字幕在线资源| 婷婷,五月天,丁香,第一| 久久XX| 久久er这里只有精品| 性色欲情 网站| 婷色人人狠| 天天色伊人| 五月丁香色婷婷熟女| 成人色色视频| 人人摸人人| 99视频九九热| 涩涩五月天| 99网| bukadeavzaixian| 停停五月色宗合| 六月婷婷av| 丁香五月婷婷激情小说| 狠狠五月丁香色婷| 99re热视频这里只精品| www.色九月| 99色亚洲| 色综合色香蕉网| 激情五月婷黄版| 欧美日韩成人| 性生活久久人妻| 97碰碰在线观看视频| 91日韩在线| 乱岳熟女50岁| 久久码久久无清| 婷婷伊人| 激情五月亚洲| 五月色婷| 九月丁香婷婷基地| 丁香五月中文字幕| yazhouzonghesese| 99网99热| 免费看欧美成人A片无码| 色播激情| 久久五月婷婷电影| 天天色,天天日,天天做| 六月色色| 97碰精品| 五月天丁香六月综合| 天天天天天天天操| 91精品婷婷国产综合久久| 天天日天天插| 色婷婷情片| 91精品电影18T| 五月天.com| 丁香六月综合激情| 五月婷婷九九久久| 色欲日日躁| 9久久婷婷国产综合精品性色| 极品人妻VIDEOSSS人妻| 激情综合网五月| 热99这里只有精品视频| 色婷婷久久| 另类图片五月天激情| a色色色色色| 激情五月天 婷婷| 久久精品国产一区二区三区四区| 激情爱爱网站| 99热这里只要精品免费| 狠狠操狠狠| 五月激情网站| 亚洲色爱综合| 精品久久久中文字幕大豆网推荐理由| 在线99热| 丁香久久综合| 热久久这里只有三级视频| 电影蜘蛛女| 日本啪啪天堂| 久久激情五月网| 99色最新在线视频网站| 国产一区二区三区影院| 欧美操人| 狠狠久久婷五月| 中文字幕第四色.999| 白天AV月月| 五月综合久久| 成人综合网站| 色久一| 天天橾日日橾夜夜橾17| 婷婷色中文字幕| 亚洲AV人人操| 激情爱爱网站超大免费| 久久婷婷东京热大香樵| 日日操天天爽| 狠狠干五月| 米奇激情婷婷| 538在线精品| 人人爱天天摸摸天天爱| 大香蕉伊人久久| 区区久久妻| 99这里只有精品|v| 啪啪91| 久久HD| 人人97碰| 五月天综合婷婷| 九九热超碰| 免费色色色| 99热成人| 婷久久| 色欲色香综合网| 五月色情婷婷| 精品少妇人妻AV无码专区偷人 | 少妇高潮A片无套内谢麻豆传| 欧美综合激情五月丁香| 这里只有精品96| 久久免费婷婷视频| 98永久精品| 激情AV| 色色影院aaaav| av大片在线| 99热99热在线| 九九re精品视频在线观看| 亭亭五月色男人| 五月熟妇婷婷久久| 日本操B片| 色狠狠999综合| 18av天堂| 97偷拍对白视频| 亚洲熟妇无码乱子AV电影| 国精产品一区二区三区| 人妻AV在线| hd五月婷婷在线| 亚洲成人无码免费| 五月婷婷天| 思思热热久久| 欧美色97| 99精品视频在线观看| 婷婷五月中文在线视频| 97人人干人人操| 国产偷人爽久久久久久老妇APP| 天天做天天摸| 久久五月丁香婷婷| 亚洲色图五月丁香五月婷婷| 99福利导航| 五月激情视频网| 五月天久久网站| 性爱综合网| 亚洲激情综合| 婷婷五月天亚洲天堂| 色婷婷文字幕| 婷婷成人基地| 97色欧美| 五月花亭亭| 久草五月| 天综合日日夜综合7799| AV中文在线| 99只有这里有精品在线视频| 综合在线网| av第一二区| 97在线观视频免费观看| 91黄操| 婷婷五月天免费视频在线观看| 97资源碰碰| av一区二区电影免费在线观看| 五月天婷婷丁香| 亚洲五月停停| 婷婷伊人五月| 丁香六月色香蕉视频| 五月天婷婷激情网| 丁香五月婷婷av影院| 99色综合网| 可以免费看的AV网站| AV天堂淫乩| 色婷婷av在线| 97人妻人人| www.wuyuetian啪啪| 亚洲操B| 91狠狠综合网| 天天日本夜夜谢| 五月婷婷乱| 人人色性网| 六月丁香深深爱综合网| 大香蕉久热| 99啪在线| 久久婷婷五| 99九九99九九九视频精品| 国产看真人毛片爱做A片| 久婷婷| 九九精品亚洲| 亚洲美女网Va| 26uuu精品一区二区| 五月婷婷激情中心| 亚洲婷婷丁香五月亚洲| 色亚洲无码| 日本色道视频网站| 啊V视频在线观看| 久久久久8888| 碰碰女| 久久久五月五丁香| 草榴视频网| 综合网狠狠| A1片久久| 影音先锋 一区| 久久丁香九| 婷婷之玖玖| www激情网站| 色播五月天婷婷老师| 伊人九九综合| 亚州操操| 91超碰人人操| AV激情五月| 很很操96| 六月丁香综合网| 久久99久久99精品免观看软件| 久久婷婷五月综合色播| 天天干天天色天天干| 丁香五月激情六月| 色五月视频,小说| 色六月视频| 思思re99视频在线观看| 色噜噜五月天| 久久久久亚洲AV无码网影音先锋| 丁香五月网址| 日本色色色| 五月丁香综合激情| 婷婷色色综合| 亚洲婷婷综合视频| 91丨九色丨白浆| 99热9| 六月丁香五月亭亭| 天堂草在线观看| 99精品视频在线观看| 原琪琪色影院| 在线播放成人网站| 色婷婷8| 狠狠色婷婷7777久综合| 久婷| 色亭亭五月天网扯| 欧美日韩AAAA| 亚洲综合五月天婷婷丁香| 色婷婷五月天在线观看| 免费黄网不卡AV| 色久99| 久久五月天婷婷| 性爱电影科技贸易有限公司| 玖玖资源在线视频| 婷婷九月| 婷婷影院A成人| 色99婷婷五月天| 综合激情伊人影视在线| 色五月天在线| 五月婷婷综合久久| 少妇人妻偷人精品无码视频新浪| 西西4r午夜剧场| 99男人的天堂| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 九久久九精品视频| 99热加勒比| tingtingjiqingwuyue| 啄木鸟丝袜美女福利视频| 六月婷婷激情图片| 久99婷婷色综合| 99操久久| 丁香婷婷六月在线资源观看| www.91.com黄| 射婷婷中文字幕| 天堂色婷婷| 五月开心啪啪| 欧美日韩99| 国产精品24r| 性爱动图国产麻豆一区二区三区| 五月天五月天成人网亭亭成人色网站| 色婷婷色99国产综合精品| 天堂在线伊久| 日木狠狠干| 99热这里只有精品免费| 欧美搡BBBBB摔BBBBB| 中文字幕丰满人妻无码专区| 婷婷五月天视频在线观看| 大香蕉综合| 婷婷综合玖玖五月| 五月婷婷偷| 婷婷亚洲综合| 91婷婷视频| 狠狠看狠狠| 99久在线观看| 亚洲正能量欧美| 青青草a在线| 色欲婷婷五月天丁香| 色香蕉婷婷| 色色色综合视频| 婷婷色情网| 国产色色色色色| 南京搡BBBB搡BBBB| 激情文学久久| 五月天婷婷狠狠| 婷婷情色激情| 日本一级黄色片。| site:minyis.com| 成人午夜无码视频| 亚洲有码在线视频| 天天操夜夜爽歪歪| 99热个人在线| 思思视频这里是精品| 五月丁香无码| 国产精品人妻在线网址| 狠狠五月综合在线 | 91成人看片| 色五月丁香五月天| 20253AV| 五月婷在线色视频| BBWCUCKOLD精品熟妇| 狠色综合网| 五月天综合视频| 五月婷亚洲精品AV天堂| 99视频在线播放大全| 日韩精品电影| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 99热在线看| 久久久久久久久99精品| 五月婷婷丁香俺日污视频| 99精品热| 伊人狠狠丁香婷婷综合尤物| 亚洲最大激情无码| 色婷婷第四色| 亚洲小视频| 色青青电影色五月| 啪啪五月天啪啪| 五月婷在线| 欧美色狠婷久| 国产精品色色| 99综合视频在线| 狠狠色丁香| 九月激情综合| 14色综合婷婷| 色婷婷五月天偷拍| 色综合五月| 色天堂操| 久色大| 99热碰碰| 亚州操操| 久久久久久综合88| 色狠狠综合| 日韩啪啪网| 中文av网站| 深爱五月激情综合| 国自产拍偷拍精品啪啪一区二区 | 五月丁香网中文字幕| 麻豆WWWCOM内射软件| 久er7久热| 四川BBB搡BBB爽爽视频| 久久这里99| Caoub青青超碰| 人人干av| 伊人激情综合网| 激情五月天婷婷五月天| 五月激情丁香六月狠狠干| 精品一二三区久久AAA片| 丁香五月狠狠综合欧美| 九九爱激情| 噜噜色婷婷| 婷婷五月丁香欧洲| 91九色在线| 激情深爱综合| 色无婷婷| 99热亚洲| 66精品国产成人| 免费视频WWW在线观看网站| 人妻肉射免费观看| 日本在线观看aaa 99| 色色色色色网| 91久热| 国产欧美熟妇另类久久久| 亚洲激情综合五月婷婷啪啪| 伊人久久大香线蕉亚洲五月天,| www热久久yy9| 五月开心婷婷中文字幕| 五月丁香婷婷五月色| 激情综合五月婷婷六月丁香| WWW色色色COm| 99国产精品白浆在线观看免费| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 99精品爱| 久久91久久91色欲精品| www.五月.com| 这里只有精品在线免费视频| 久久91久久91色欲精品| 久久久免费精彩视频| 俺去也在线www色官网| 欧美日韩五月婷婷| 九九热免费视频| 色五月成人在线| 99热费观看| 在线理论片| 激情图片久久| 日日色五月天| 182TV大香蕉| 激情五月婷婷| 亚洲在线资源| 六月婷婷亚洲| 大香蕉520| 五月婷婷综合色啪首页| 性一交一乱一交A片久久四色| 婷婷色五月天综合网| 超碰国产AV| 狠狠干狠狠干| 婷婷五月天综合久久| 婷婷激情五月天亚洲综合| 182TV大香蕉| 无遮羞AV| 激情五月丁香五月| 99热这里只要精品免费| 天天做天天爱天天日| 毛v一区二区视频| 丰满少妇猛烈A片免费看观看| 国产无人区大片| 五月天五月婷五月激情网| 97操在线视频| 日本九九九九九九| 久久9热好| 天天综合在线网| 激情五月天婷婷在线网址发给我| 婷婷六月开心网| 91操熟女| 在线观看亚洲AV| 五月四色激情| 久热大香蕉| 激情AV在线| 五月天激情小说欧美激情| 亚洲色欲欧美一区二区三区| 色六月婷婷| 99热99| 五月婷婷激情在线| 婷婷丁香社区| 激情五月丁香婷婷| 婷色五月天| 色婷久久| 婷婷色激情五月天| 亚洲99视频| www.sd-xiangsu.cpm| 日韩操人| 久草五月婷婷| 丁香五月婷婷天堂大香蕉| 日韩精品呦呦va| 欧美精品在线观看| 欧美日韩成人在线| 激情五月天在线视频| 日本啪啪网| 天天日夜夜| 色婷婷www| 婷婷五月天成人综合网| 婷婷瑟五月天久久综合| 无码一区二区日韩| 啪啪啪综合网| 色婷婷综合久久久久| 六月色播| 婷婷激情性爱| 欧美色色色色色| 九色自拍| 天天爽人人综合免费7799| 色婷婷婷婷| 日本不卡中文字幕| 欧美97色| 欧美黑人大吊| 99热乎| wWw色五月| 婷婷色无码| 亚洲欧洲自拍图片专区五月天| 婷婷五月天国产手机在线视频观看| 六月久久狠狠| 99精品视频播放| yazhoujiqingav| 丁香,开心成人,久久| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 79精品视频在线观看,| 嫩草乱码一区三区四区| 五月天狠狠网| 热99免费在线| 五月丁香色情| 9久久精品| 无码 av电影| 五月丁香狠狠爱婷婷综合| 亚洲AV日韩AV永久无码网站| 久久精品天| 五月 成人 婷婷| 66精品国产成人| 国产Va视频| 就爱射中文字幕资源网| 五月六月丁香激情| 九月综合| 久热九九| 婷婷五月丁香青青草在线| 久久久免费图片视频| 日韩淑女人妻luan伦激情精品一区二 | 4438国产免费看| 久久婷婷五月丁香网| 色婷婷六月性| 操操操操操电影网| 色色色com| 六月激情婷婷| 成人综合视频网址| 99热在线看片| 色综合网上班开心婷婷久久| 色六月丁香婷婷狠狠干| 日日夜夜爽| 91超碰在线观看| 青青草免费公开视频| 五月婷婷久久爱| 超碰91在线| 五月婷婷m| 伊人五月综合网| www.超碰| 久久码久久无清| 操操操操操操婷婷五月天| 婷婷激情五月综合丁香社| 囯产精品久久欠久久久久久九大| 色色网站| 久久久久九九九九视屏小说88| 久久精品9| 天天色天天舔天天爱天天爽 | 九九99免费视频| 成人在线二区| 丝袜激情网| 天天日夜夜草进麻麻的子宫| 五月丁香网站| 欧美黑人巨大性生话| 丁香久月婷| 丁香六月婷婷综合麻豆| 国产.亚洲.欧洲视频在线| 欧美交换配乱吟粗大25P| 98色丁香五月婷婷综合网| 久热这里这里有精品| 久久丁香五月天| 亚洲精品久久久久AV无码| 激情宗合 激情宗合| 天天草天天舔| 欧美综合123区| 69天堂99| 久久婷婷成人视频| 天天做天天爱天天玩| 精国产品一区二区三区A片| 色在线99| 99av视频| 成人精品视频99在线观看免费| 五月婷婷日| 日日操,天天操| 狠狠操狠狠| 97碰碰视频| 成人九九视频| 五月丁香影视| 亚洲欧美婷婷五月色综合| 五月激情婷婷在线| 国产肥白大熟妇BBBB视频| 日韩一级片| 婷婷色操| 东北熟女高潮99综合99| www.狠狠操.com| 欧美黄色AA片哗啦啦啦| 大香蕉久久婷婷| 无码任你操| 婷婷五月花.97| 九九视频这里只有精品在线播放| 色五月婷婷操逼| 超碰99热在线观看| 人人人人人人人草| 久久丁香| 九九热这里只有精品首页| 人人综合久| 绿色小导航AV| 五月天另类图片| 狠狠干.com| 丁香伊人综合| 九九碰九九爱97超碰| 激情五月综合网| 91九色国产在线| 超碰无码318604| 日本婷婷| 天天网曰日曰夜夜综合永久免费| 丁香五月冃欧美| 熟惀91九色在线| 91视屏在线观看com.wwwvv| 99热只有| 六月婷婷狠狠| 亚洲激情av| 六月激情婷婷综合|