免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

開源代碼評審工具open-code-review:把Code Review變成工程化流程

開源代碼評審工具open-code-review:把Code Review變成工程化流程 現(xiàn)在很多團(tuán)隊(duì)談到 Code Review第一反應(yīng)就是又慢又煩評審人打開 PR 看一眼就 Approve或者干脆在群里吼一句誰有空幫我看看然后一整天沒人理。我做了幾年研發(fā)管理和架構(gòu)工作見過太多 Review 流程從最初的嚴(yán)格把關(guān)慢慢變成了形式主義最后退化成合并代碼前的心理安慰。這個痛點(diǎn)促成了我業(yè)余時間折騰的一個開源項(xiàng)目 open-code-review它不是那種換個皮的管理后臺而是一套把代碼審查從人肉流程變成可配置、可度量、可強(qiáng)制的工程化方案。這篇文章把我從設(shè)計思路到落地踩坑的完整過程都寫出來適合正在搭建或者想優(yōu)化團(tuán)隊(duì)代碼評審流程的工程師、技術(shù)負(fù)責(zé)人參考。1. 明明大家知道 Code Review 有用它就是容易爛尾1.1 評審走形式不是人的問題是流程缺約束我在很多團(tuán)隊(duì)里發(fā)現(xiàn)一個共性現(xiàn)象Code Review 在制度層面寫在研發(fā)規(guī)范里但實(shí)際執(zhí)行質(zhì)量完全取決于個人責(zé)任心和當(dāng)天忙不忙。評審人在非工作時間收到 PR 通知大概率草草看一眼提交標(biāo)題就點(diǎn)了通過開發(fā)者覺得評審是額外負(fù)擔(dān)挑一個最閑的同事當(dāng)吉祥物審批員整個閉環(huán)基本是失控的。我拆過一些團(tuán)隊(duì)的評審數(shù)據(jù)Pull Request 的平均評審時間從 2 小時到 72 小時不等跨度極大評論數(shù)量從 0 條到 40 多條都有說明很多 PR 根本沒有被認(rèn)真讀過。這不是某個人的問題而是因?yàn)闆]有一套機(jī)制去約束最小評審質(zhì)量到底哪些文件必須看哪些規(guī)則變更必須指定負(fù)責(zé)人超過多長時間不評審該提醒誰通過標(biāo)準(zhǔn)是什么這些如果只靠口頭約定時間一長一定走形。這也是我決定做 open-code-review 的根本原因。我需要一個東西能把這些約定固化成配置讓流程替人去記住什么必須做而不是等到代碼合并出問題再追責(zé)。1.2 我理想中的開源代碼評審工具長什么樣在動手之前我先列了一份需求清單明確我的工具至少要覆蓋幾件事第一能自動識別變更文件類型針對不同目錄執(zhí)行不同規(guī)則第二能對關(guān)鍵指標(biāo)比如新增代碼量、循環(huán)復(fù)雜度、TODO 殘留做機(jī)器判斷給評審人提供明確提示第三支持把評審結(jié)果作為合入門禁不滿足條件就不允許合并第四所有評審行為要有記錄能統(tǒng)計出團(tuán)隊(duì) Review 覆蓋率。這其實(shí)比大多數(shù)人想得要復(fù)雜。市面上已有的機(jī)器人或插件大多是單點(diǎn)功能比如只做靜態(tài)檢查、只做提醒、只做統(tǒng)計很少有把規(guī)則引擎流程編排數(shù)據(jù)分析捏在一起的開源方案。我想要的不是一個提示工具而是一個可以嵌入現(xiàn)有 Git 工作流、能自定義規(guī)則、能輸出報告的輕量化平臺。open-code-review 最終定位成了這樣一個開源的、基于 Git 事件驅(qū)動的代碼評審輔助系統(tǒng)。它監(jiān)聽代碼倉庫的 Pull Request也支持 Merge Request事件拉取變更內(nèi)容把變更信息經(jīng)過規(guī)則引擎分析后輸出評審建議和攔截結(jié)論再通過 Webhook 回寫到代碼平臺從而實(shí)現(xiàn)自動化評審和門禁控制。2. open-code-review 的整體設(shè)計思路與核心架構(gòu)2.1 規(guī)則引擎驅(qū)動一切把評審經(jīng)驗(yàn)沉淀成配置open-code-review 的核心不是界面多漂亮而是它的規(guī)則引擎。我把所有評審策略抽象成一個個規(guī)則對象每個規(guī)則有獨(dú)立的觸發(fā)條件、匹配范圍、嚴(yán)重級別和處置動作。一套規(guī)則本質(zhì)上是一段可解釋、可測試的邏輯描述而不是散落在業(yè)務(wù)代碼里的 if-else。觸發(fā)條件我設(shè)計了幾個維度基于文件路徑的前綴匹配比如 backend/src 和 frontend/src 用不同規(guī)則集、基于變更規(guī)模的判斷比如單次 PR 新增超過 800 行觸發(fā)大變更提醒、基于文件類型的判斷比如只對 Java/Kotlin 文件啟用空指針風(fēng)險規(guī)則、基于關(guān)鍵詞的檢測比如日志中是否出現(xiàn) print 輸出、是否遺留 TODO/FIXME。規(guī)則結(jié)果分為三個等級Info 只是提示Reviewer 可以忽略Warn 會要求評審人顯式確認(rèn)才能繼續(xù)Error 則直接阻止合并除非有管理員權(quán)限強(qiáng)制放行。這套分級機(jī)制很關(guān)鍵它不搞一刀切給了團(tuán)隊(duì)根據(jù)自身容忍度做選擇的自由。規(guī)則的定義我用的是 YAML 格式理由很簡單團(tuán)隊(duì)成員學(xué)習(xí)成本低、和 CI 配置風(fēng)格一致、寫錯了容易發(fā)現(xiàn)。每條規(guī)則文件包含元信息、match 條件、message 模板、level 等字段系統(tǒng)啟動后加載所有規(guī)則對每個 PR 事件進(jìn)行鏈?zhǔn)狡ヅ?。?guī)則引擎本身是無狀態(tài)的每次執(zhí)行只需要變更文件列表和規(guī)則集所以擴(kuò)展性很好。2.2 為什么選 Webhook 而不是定時輪詢在設(shè)計數(shù)據(jù)采集方式時我對比了兩種主流方案定時輪詢 Git 平臺接口或者通過 Webhook 接收事件推送。輪詢實(shí)現(xiàn)簡單但存在延遲大、浪費(fèi) API 配額、容易漏掉中間狀態(tài)等問題Webhook 是事件驅(qū)動一有變更立刻觸發(fā)實(shí)時性好很多。我最終選的 Webhook 方案GitHub、GitLab、Gitea 這些平臺都原生支持配置 Webhook 地址把 open-code-review 服務(wù)部署到一個公網(wǎng)或內(nèi)網(wǎng)可達(dá)的地址在倉庫設(shè)置里配置好 Webhook平臺就會在指定事件發(fā)生時把 JSON 請求發(fā)過來。收到事件后服務(wù)先做去重和冪等處理再從 Git 平臺拉取變更詳情進(jìn)入規(guī)則分析流程。這套模式的優(yōu)點(diǎn)很明顯沒有輪詢造成的資源浪費(fèi)、能實(shí)時響應(yīng)、離線也不丟事件平臺會有重試機(jī)制。代價是需要保證服務(wù)可用性并且 Webhook 接口要做簽名校驗(yàn)防止被人偽造請求。這部分我在后面安全加固小節(jié)里會詳細(xì)說。2.3 方案選型為什么不用自研機(jī)器人而做獨(dú)立服務(wù)其實(shí)最開始我試過把邏輯寫成一個 GitHub Action這樣做集成成本最低直接在倉庫里加一個 workflow 就行。但測試了幾個場景后我放棄了原因有三個。第一GitHub Action 的運(yùn)行環(huán)境是臨時的每次執(zhí)行完?duì)顟B(tài)就沒了團(tuán)隊(duì)想要連續(xù)的 Review 覆蓋率數(shù)據(jù)會比較困難。第二Action 的市場里功能齊全但規(guī)則引擎和門禁控制這種重度定制邏輯放進(jìn)去調(diào)試一次要 push 一次效率太低。第三也是最重要的我們要接的不止一個代碼平臺。團(tuán)隊(duì)里同時有 GitHub 倉庫和 GitLab 倉庫用 Action 就得寫兩套東西而獨(dú)立服務(wù)可以做到一套核心邏輯多個平臺適配器。所以 open-code-review 的架構(gòu)分為三層接入層負(fù)責(zé)和代碼平臺交互通過適配器模式對接 GitHub/GitLab/Gitea核心層包含規(guī)則引擎、變更解析器、分析器輸出層負(fù)責(zé)任務(wù)分發(fā)、結(jié)果回寫、通知發(fā)送。每層之間通過接口通信新接一個代碼平臺只需要實(shí)現(xiàn)接入層接口核心邏輯完全復(fù)用。到現(xiàn)在為止我接過的平臺包括 GitHub App、GitLab Webhook、Gitea Webhook適配成本基本在幾天以內(nèi)。3. 完整實(shí)操5 分鐘搭好一套自動化代碼審查環(huán)境3.1 準(zhǔn)備環(huán)境的那些細(xì)節(jié)在開始之前你需要準(zhǔn)備一臺能跑 Docker 的服務(wù)器配置不用太高我自己的測試實(shí)例是 2 核 4G 內(nèi)存同時處理十來個中小型倉庫的評審任務(wù)完全夠用。操作系統(tǒng)建議選 Ubuntu 22.04 或 Debian 12依賴少、好維護(hù)。項(xiàng)目提供了兩種部署方式Docker Compose 和裸機(jī)運(yùn)行。Docker Compose 更適合快速驗(yàn)證一條命令就能起來還默認(rèn)帶了一個 PostgreSQL 用來存統(tǒng)計數(shù)據(jù)裸機(jī)運(yùn)行適合已經(jīng)有完整運(yùn)維體系的團(tuán)隊(duì)直接把編譯好的二進(jìn)制扔到服務(wù)器上就行。我這里用 Docker Compose 演示。首先克隆項(xiàng)目代碼進(jìn)入部署目錄復(fù)制環(huán)境變量模板然后按自己倉庫的平臺類型修改配置git clone https://github.com/yourname/open-code-review.git cd open-code-review/deploy cp .env.example .env vim .env.env 文件里最關(guān)鍵的是平臺類型和 Token 配置。GitHub 用 Personal Access Token 或者 GitHub App 的私鑰GitLab 用 Personal Access Token權(quán)限至少需要讀代碼和更新 PR 評論的權(quán)限。注意 Token 不要提交到 Git 倉庫里用部署機(jī)的環(huán)境變量方式加載更安全。配置好之后執(zhí)行docker compose up -d日志出現(xiàn)server started at :8080就說明服務(wù)起來了。這時用瀏覽器訪問http://服務(wù)器IP:8080/health應(yīng)該能看到一個 JSON 返回表示服務(wù)狀態(tài)正常。3.2 最小可用規(guī)則集先跑通有輸出服務(wù)跑起來后我在項(xiàng)目里預(yù)設(shè)了一套默認(rèn)規(guī)則覆蓋了最常見的問題場景禁止在代碼中直接寫文件絕對路徑、檢測遺留的調(diào)試輸出、禁止硬編碼數(shù)據(jù)庫連接串、識別超過 500 行的超大函數(shù)、檢查是否符合 commit message 規(guī)范。這套默認(rèn)規(guī)則的好處是開箱即用不需要每個團(tuán)隊(duì)從零開始寫規(guī)則。以檢測調(diào)試輸出這個規(guī)則為例規(guī)則文件長這樣name: debug_output_detector description: 檢測是否遺留 print/console.log/debugger 等調(diào)試輸出 level: warn match: files: - **/*.py - **/*.js - **/*.ts exclude: - **/tests/** - **/__tests__/** patterns: - console\\.log\\s*\\( - print\\s*\\( - logging\\.debug\\s*\\( - debugger\\s*;? message: 檢測到調(diào)試輸出語句請確認(rèn)是刻意保留還是無意遺留這個規(guī)則做了幾個關(guān)鍵設(shè)計第一通過exclude排除了測試目錄因?yàn)闇y試?yán)镉?print/console.log 輸出輔助信息是常見操作不該報警第二mix了多種語言的調(diào)試輸出模式第三把嚴(yán)重級別定成 warn給了評審人判斷空間。配置好規(guī)則后往倉庫提交一個測試 PR在 open-code-review 的日志里會看到事件已接收、開始解析變更、命中規(guī)則 debug_output_detector、評論已發(fā)布這樣的執(zhí)行鏈路再去 PR 頁面就能看到自動發(fā)布的評審評論。我自己第一次跑通這個流程時看到評論出現(xiàn)在 PR 下面確實(shí)有種終于不用人肉盯著代碼的輕松感。3.3 把規(guī)則從建議升級為門禁規(guī)則能出評論只是第一步真正讓 Review 流程硬起來的是把結(jié)果做成合入門禁。open-code-review 支持在規(guī)則結(jié)果里配置block_merge: true當(dāng)命中 Error 級別規(guī)則時系統(tǒng)會調(diào)用代碼平臺的合并檢查接口把當(dāng)前 PR 標(biāo)記為未通過檢查。具體操作是在倉庫設(shè)置里把 open-code-review 注冊為一個 required check這樣開發(fā)者即使點(diǎn)了合并按鈕平臺也會攔住只有所有 Error 規(guī)則清零后自動放行。這種機(jī)制好處在于不是靠人自覺而是系統(tǒng)強(qiáng)制。我團(tuán)隊(duì)落地時的實(shí)際配置長這樣測試覆蓋不足時只給 warn給開發(fā)者保留解釋空間硬編碼密鑰掃描命中的直接給 Error 并阻止合并新增文件不是 UTF-8 編碼的給 warnAPI 路徑缺少鑒權(quán)中間件的給 Error。這樣分級的門禁比一刀切的必須全部通過更有利于推進(jìn)團(tuán)隊(duì)不會有反抗情緒而真正嚴(yán)重的問題又不會被放過。3.4 寫一個自定義規(guī)則以檢測裸 IP 地址為例為了讓讀者真正掌握自定義規(guī)則的方法我以檢測代碼中直接寫裸 IP 地址這個實(shí)際案例拆解完整的規(guī)則開發(fā)流程。裸 IP 地址硬編碼的問題在微服務(wù)架構(gòu)里特別常見改一次環(huán)境就要改一次代碼而且容易把內(nèi)網(wǎng)拓?fù)湫孤兜酱a倉庫。規(guī)則文件我放在rules/custom/no_hardcoded_ip.yamlname: no_hardcoded_ip description: 檢測代碼中硬編碼的 IPv4 地址建議使用配置中心或環(huán)境變量 level: warn match: files: - **/*.{py,java,go,js,ts,yml,yaml,json,properties} exclude: - **/*.md - **/test/** - **/tests/** patterns: - \\b(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b except: patterns: - 127\\.0\\.0\\.1 - 0\\.0\\.0\\.0 - localhost message: 發(fā)現(xiàn)硬編碼 IP 地址請改用環(huán)境變量或配置中心管理這個正則表達(dá)式看起來長實(shí)際上就是 IPv4 地址的標(biāo)準(zhǔn)校驗(yàn)它把每段限制在 0-255 范圍內(nèi)避免把999.999.999.999這種無效地址誤判成 IP。這里的except字段是例外配置用來排除回環(huán)地址和測試常見地址減少誤報。寫好規(guī)則文件后不需要重啟服務(wù)系統(tǒng)會以一定的間隔自動掃描規(guī)則目錄加載新配置或者你可以手動調(diào)用一個 reload 接口。我測試時是先本地建一個小倉庫提交一個含192.168.1.1的配置文件然后發(fā) PR看評審評論有沒有正確命中。整個流程跑通后再把規(guī)則推到團(tuán)隊(duì)公共規(guī)則庫大家就能共用一套自定義規(guī)則了。4. 把靜態(tài)判斷延伸到團(tuán)隊(duì)流程管理4.1 讓統(tǒng)計報告驅(qū)動評審文化改進(jìn)工具如果只停留在提醒攔截層面時間久了大家還是會覺得它是個煩人的機(jī)器人。真正讓團(tuán)隊(duì)接受自動化評審的前提是它能反過來幫助團(tuán)隊(duì)看清問題、改進(jìn)流程。這是我后來補(bǔ)充統(tǒng)計模塊的原因。open-code-review 會把每次評審的完整數(shù)據(jù)記錄下來PR 編號、提交人、評審人、變更文件數(shù)、命中規(guī)則數(shù)、規(guī)則級別、合并耗時、是否被攔截。這些數(shù)據(jù)存到 PostgreSQL 里通過內(nèi)置接口可以查詢按周/月維度輸出團(tuán)隊(duì) Review 報表。我在實(shí)際使用中最??磶讉€指標(biāo)評審覆蓋率有多少 PR 真正走了評審流程、平均首評時間從 PR 創(chuàng)建到第一個有效評論的時間單位小時、規(guī)則命中率 Top10哪些規(guī)則最容易命中意味著團(tuán)隊(duì)哪些問題最高發(fā)、阻斷率有多少 PR 曾被打回。舉個例子我團(tuán)隊(duì)連續(xù)三周看到硬編碼密鑰規(guī)則命中率排第一就知道這不是偶發(fā)問題而是開發(fā)規(guī)范里缺少配置中心使用指引。于是我在周會上專門花半小時講了一遍配置規(guī)范第二周命中率直接降了 60%。這個價值不是靠人肉盯代碼能實(shí)現(xiàn)的它讓 Review 從個人行為變成了團(tuán)隊(duì)數(shù)據(jù)資產(chǎn)。4.2 接入內(nèi)部通知PR 沒人評審機(jī)器人來催很多時候 PR 卡住不是因?yàn)榇a有問題而是沒人響應(yīng)。我發(fā)現(xiàn)團(tuán)隊(duì)里 PR 平均等待時間最長的環(huán)節(jié)不是 CI 執(zhí)行而是等人類評審人點(diǎn)開鏈接。為了解決這個問題我加了一個 notifications 模塊支持在以下幾種情況發(fā)通知新 PR 創(chuàng)建后沒有評審人認(rèn)領(lǐng)、PR 超過設(shè)定閾值時間比如 24 小時還沒被評審、Error 規(guī)則被命中需要立即關(guān)注。通知渠道我集成了釘釘、飛書、Slack 和郵件。以飛書為例配置一個自定義機(jī)器人 Webhook然后在配置里寫好模板PR 被創(chuàng)建或阻塞時對應(yīng)的處理人就會在群里收到一條消息。這里要注意消息模板不能太長否則重要信息被淹沒我一般只保留倉庫名、PR 標(biāo)題、變更行數(shù)、命中規(guī)則摘要和鏈接這幾個字段。這個功能上線之后效果非常顯著團(tuán)隊(duì) PR 的平均響應(yīng)時間從 26 小時降到了 7 小時。不是靠制度壓迫而是靠信息及時到達(dá)責(zé)任人解決了響應(yīng)滯后問題。4.3 分支保護(hù)策略的配套調(diào)整如果你真的打算用 open-code-review 做強(qiáng)門禁光在工具里配置還不夠Git 平臺本身的分支保護(hù)策略必須同步調(diào)整。以 GitHub 為例進(jìn)入倉庫 Settings 的 Branches 頁面為默認(rèn)分支通常是 main/master添加保護(hù)規(guī)則勾選 Require status checks to pass before merging然后在搜索框里選中 open-code-review 上報的檢查項(xiàng)還要勾選 Require pull request reviews before merging次數(shù)建議設(shè) 1 或 2 人。這里有一個容易踩的坑如果團(tuán)隊(duì)的強(qiáng)制評審人數(shù)是 1但開了允許作者合并自己的 PR那作者可以自己給自己 Approve 合掉門禁等于擺設(shè)。我的建議是取消允許作者合并自己的 PR同時要求至少 1 個其他人的 review。這樣配合 open-code-review 的規(guī)則檢查基本能杜絕單人自審自合的問題。4.4 評論區(qū)交互直接在 PR 里打/review命令另一個實(shí)際使用中很有用的功能是評論命令。開發(fā)者偶爾會遇到規(guī)則引擎誤判或者想跳過某些不適用規(guī)則的情況。open-code-review 支持在 PR 評論區(qū)發(fā)指令來控制行為比如/review skip跳過當(dāng)前 PR需要權(quán)限校驗(yàn)、/review rerun強(qiáng)制重新執(zhí)行評審、/review rule:規(guī)則名只運(yùn)行指定規(guī)則。實(shí)現(xiàn)方式是通過 Webhook 接收評論事件解析文本內(nèi)容匹配到命令前綴后做權(quán)限校驗(yàn)再觸發(fā)對應(yīng)動作。這個交互方式開發(fā)者非常熟悉不需要去單獨(dú)的 Web 界面操作學(xué)習(xí)成本約等于零。我把常見命令寫進(jìn)了項(xiàng)目 README 的醒目位置新同事加入團(tuán)隊(duì)后看到 PR 下面自動冒出來的評論寫著輸入 /review 命令可以管理評審流程基本就懂了大半。5. 落地過程中最常踩的坑與排查實(shí)錄5.1 誤報太多團(tuán)隊(duì)嫌吵怎么辦這是所有自動化審查工具都會遇到的頭號問題。規(guī)則太寬泛PR 里到處是紅字評審人一天要點(diǎn)幾十次忽略最后干脆不看評論了。我自己的解法分三步第一步把所有規(guī)則默認(rèn)調(diào)成 warn 而不是 error先觀察一段時間第二步分析忽略率高的規(guī)則用正則負(fù)向前瞻或except列表把常見的合法場景排除掉第三步允許各子團(tuán)隊(duì)維護(hù)自己的規(guī)則覆蓋文件而不是所有倉庫共用一套全局規(guī)則。這里有個典型案例我們最初有一條規(guī)則是檢測 Python 中的 assert 語句本意是希望用 pytest.raises 替代裸 assert 來處理預(yù)期異常。但測試文件里大量合理使用 assert 斷言導(dǎo)致誤報滿天飛。最終我們調(diào)整了匹配范圍只對src/目錄生效并排除所有test文件誤報率立刻下降了很多。這類調(diào)優(yōu)需要持續(xù)進(jìn)行不要指望一次性做到完美。5.2 Webhook 收不到事件PR 死活沒反應(yīng)這是接入階段被問得最多的問題。排查路徑我建議按下面幾條來先在 Git 平臺倉庫的 Webhook 設(shè)置頁面查看最近投遞記錄確認(rèn)服務(wù)地址是否收到了請求如果投遞顯示失敗看返回狀態(tài)碼一般 500 說明服務(wù)內(nèi)部有異常404 說明路徑不對401/403 說明簽名校驗(yàn)失敗如果壓根沒有投遞記錄檢查 Webhook 是否勾選了對應(yīng)的事件類型比如 Pull requests、Issue comments 等。簽名校驗(yàn)失敗的情況尤其常見。GitHub 的 Webhook 簽名是X-Hub-Signature-256用 HMAC-SHA256 對請求體做簽名密鑰是 Webhook Secret。open-code-review 在配置里設(shè)置webhook.secret之后會做同樣的簽名計算再做比對。如果你在 Git 平臺配置的 Secret 和本地配置不一致請求就會被拒絕。建議在服務(wù)里臨時打開 debug 日志看服務(wù)端收到的X-Hub-Signature-256和本地計算的簽名是否一致一步步排查。我在編寫這塊時還特意加了一個防重放機(jī)制每收到一個 Webhook 事件會把事件 ID 存到數(shù)據(jù)庫的唯一索引里重復(fù)事件直接忽略。初期調(diào)試時反復(fù)在同一 PR 上測試這個機(jī)制避免了很多臟數(shù)據(jù)。5.3 超大 PR 分析超時機(jī)器人卡住當(dāng)一個 PR 改了上千個文件拉取 diff、逐文件匹配正則、生成評論整套流程跑下來可能超過平臺的 Webhook 超時限制GitHub 默認(rèn) 10 秒。這會導(dǎo)致 Git 平臺認(rèn)為 Webhook 投遞失敗反復(fù)重試服務(wù)端壓力更大。我的解法是引入異步任務(wù)隊(duì)列Webhook 收到請求后立即返回 200把解析和分析任務(wù)丟到后臺隊(duì)列執(zhí)行。這樣 Git 平臺的超時問題徹底消失只是評審評論會在幾秒到十幾秒后才出現(xiàn)。如果 PR 特別大還可以配置一個大小閾值超過閾值的 PR 不逐文件分析只輸出一條該 PR 變更過大建議拆分評審的提示。這招既保護(hù)了服務(wù)性能又促進(jìn)了團(tuán)隊(duì)的合理提交習(xí)慣。具體來說在配置里設(shè)置max_diff_files: 300當(dāng)單個 PR 的變更文件數(shù)超過 300 時不執(zhí)行任何正則有匹配直接生成一條 warn 級別評論引導(dǎo)開發(fā)者拆分提交。我遇到過幾次團(tuán)隊(duì)提交 800 多個文件的巨型 PR靠這個機(jī)制至少把問題暴露在了評審階段而不是悄悄溜進(jìn)主干。5.4 我加了一個自檢模式把規(guī)則調(diào)優(yōu)變成日常操作為了讓規(guī)則維護(hù)不那么痛苦我專門做了一個規(guī)則自檢的子命令用來在本地快速驗(yàn)證規(guī)則是否正常工作。你可以在本地準(zhǔn)備一個測試目錄里面放幾個模擬文件分別對應(yīng)應(yīng)該命中、不應(yīng)該命中的場景然后執(zhí)行open-code-review check --rule rules/custom/no_hardcoded_ip.yaml --dir ./testdata如果測試文件中的正例正確命中、反例正確排除命令會顯示 PASS否則顯示 FAIL并打印匹配詳情。這相當(dāng)于給每條規(guī)則寫了單元測試改正則的時候可以快速回歸不用每次推到遠(yuǎn)端倉庫驗(yàn)證。我現(xiàn)在的要求是每條新規(guī)則必須附帶至少一個正例和一個反例測試文件沒有測試的規(guī)則不允許合入團(tuán)隊(duì)規(guī)則庫。這個自檢模式表面上看是個小功能但對團(tuán)隊(duì)協(xié)作幫助很大。不同后端、前端工程師維護(hù)各自領(lǐng)域的規(guī)則不需要懂整個系統(tǒng)架構(gòu)只需要知道自己這條規(guī)則的正則邏輯和測試樣例就夠了。規(guī)則庫的質(zhì)量提升了誤報自然減少團(tuán)隊(duì)的信任感也就建立起來了。6. 同類開源方案對比與選型建議6.1 主流工具橫向?qū)Ρ仁忻嫔献龃a評審自動化的開源工具不少但側(cè)重點(diǎn)差異很大我梳理了幾個我實(shí)際用過的方案和 open-code-review 的定位差異。方案核心側(cè)重規(guī)則引擎門禁能力多平臺支持統(tǒng)計報表適用場景SonarQube代碼質(zhì)量掃描內(nèi)置插件強(qiáng)中強(qiáng)中大型項(xiàng)目持續(xù)質(zhì)量門禁CobraPR 靜態(tài)分析點(diǎn)評弱弱GitHub only弱輕量 PR 檢查Super-Linter風(fēng)格統(tǒng)一檢查基于 linter中GitHub only弱快速統(tǒng)一代碼風(fēng)格open-code-review評審流程引擎自研YAML規(guī)則強(qiáng)GitHub/GitLab/Gitea中團(tuán)隊(duì)流程定制化、跨平臺統(tǒng)一評審SonarQube 在深度靜態(tài)分析領(lǐng)域仍然是王者圈復(fù)雜度、代碼壞味道、安全漏洞掃描這些能力不是 open-code-review 的目標(biāo)我們也不想去替代它。但我們強(qiáng)在流程編排和規(guī)則定制的靈活性上SonarQube 的規(guī)則體系足夠強(qiáng)大但是要改它的規(guī)則需要用插件機(jī)制學(xué)習(xí)成本高而 open-code-review 使用 YAML 定義規(guī)則半小時就能從零寫一條團(tuán)隊(duì)專屬規(guī)則。6.2 什么場景下我推薦直接用 open-code-review如果你的團(tuán)隊(duì)滿足下面幾個條件中的任意兩個我會建議試試 Open 方案第一團(tuán)隊(duì)同時維護(hù) GitHub 和 GitLab 倉庫希望用一套體系統(tǒng)一管理評審第二現(xiàn)有的 linter 只能查風(fēng)格查不出業(yè)務(wù)規(guī)則而你們恰好有一些代碼審查要走查業(yè)務(wù)關(guān)鍵字、敏感配置這類私有規(guī)則第三你們希望對評審覆蓋率、響應(yīng)耗時做數(shù)據(jù)化管理而不是憑感覺說我們評審做得還行。反過來如果團(tuán)隊(duì)只有非常輕量的需求只想讓 PR 自動檢查一下 ESLint 和 Prettier 就結(jié)束那 Super-Linter 會更合適沒必要引入一套帶數(shù)據(jù)庫的服務(wù)。如果團(tuán)隊(duì)預(yù)算充足且急需深度代碼質(zhì)量分析SonarQube 依然值得投入也可以兩者配合使用SonarQube 負(fù)責(zé)代碼質(zhì)量深度掃描open-code-review 負(fù)責(zé)流程規(guī)則和評審門禁互不沖突。從投入產(chǎn)出比來說open-code-review 的部署成本大約一個下午寫規(guī)則和維護(hù)的成本每周大概一小時但換來的是流程可追溯、評審有數(shù)據(jù)、違規(guī)被攔截這筆賬怎么算都劃算。7. 從工具到機(jī)制幾個讓評審真正有效的經(jīng)驗(yàn)從 open-code-review 上線到現(xiàn)在我總結(jié)出幾條工具之外的心得它們和配置規(guī)則一樣重要。第一柵欄要慢慢收緊不要第一天就把所有規(guī)則都設(shè)成 error。團(tuán)隊(duì)不是機(jī)器突然被卡住會產(chǎn)生很強(qiáng)的對抗情緒我的做法先跑兩周只讀模式只有 warn 和建議不攔截讓大家看到命中提示的合理性再逐條升級成 error接受度會高很多。第二規(guī)則的作者必須吃自己的狗糧。我要求每個寫規(guī)則的人在自己的 PR 里至少讓它命中三次親手處理自己定義的規(guī)則帶來的提示這樣才能體會到被自己規(guī)則攔住是什么感受。修改流程后你會發(fā)現(xiàn)很多不合理閾值在第一輪就被作者自己發(fā)現(xiàn)了。第三評審機(jī)器人和人類評審員的職責(zé)要有邊界。open-code-review 擅長的是無腦、重復(fù)、客觀的規(guī)則檢查比如敏感信息、硬編碼、調(diào)試點(diǎn)但架構(gòu)合理性、命名是否貼切、單元測試斷言的邏輯是否嚴(yán)謹(jǐn)這些必須由人來判斷。工具做工具該做的事人做人該做的事這個邊界越清晰協(xié)作越順暢。最后關(guān)于評審效率要有一個正確的指標(biāo)觀。團(tuán)隊(duì)最容易追求的數(shù)字是評審?fù)ㄟ^速度快但過快的平均評審時間也可能意味著評審流于形式。我真正關(guān)注的是評審中有實(shí)質(zhì)評論的比例和缺陷逃逸率這兩個指標(biāo)前者代表評審質(zhì)量后者代表評審有效性。open-code-review 的統(tǒng)計模塊能幫我把這三個指標(biāo)拉出來對比觀察當(dāng)發(fā)現(xiàn)為了追求速度導(dǎo)致有意義的評論變少時就需要在流程上做干預(yù)了。我個人的經(jīng)驗(yàn)是不要把代碼評審神器化也不要因?yàn)橛龅竭^阻力就放棄自動化。給團(tuán)隊(duì)一個能解釋、可調(diào)整、能慢慢適應(yīng)的工具遠(yuǎn)比設(shè)計一個完美卻沒人用的復(fù)雜制度有用得多。open-code-review 還在持續(xù)迭代后續(xù)我打算加入 AI 輔助的語義審查能力在現(xiàn)有正則規(guī)則的基礎(chǔ)上對函數(shù)邏輯做更智能的分析減少純模式匹配的誤判率。如果你也在頭疼團(tuán)隊(duì)評審怎么落地歡迎把這份經(jīng)驗(yàn)?zāi)萌ビ靡矚g迎隨時交流你們的踩坑記錄。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月天婷婷影院| 人妻激情综合| 99狠狠| 婷婷激情人妻| 99精品偷自拍| 热99久| 中文字幕AV在线播放| 丁香色五月婷婷17C| 丁香狠狠| 五月天伊人久久久久| 五月丁香婷中文| 99精品热| 色婷婷AⅤ| 97人人干人人操| 久热这里只有精品在线观看| 草综合14| 大地9中文在线观看免费高清| 国成人网| 九九热这里只有精品556| 日本五月丁香| 五月激情婷婷综合| 色婷婷香蕉在线| 激情久久 婷婷| 97色色综合| 99色色热| 免费AV在线| 日本九九九九| 成人短视频免费观看| 九九这里只有精品在线视频| 熟女激情五月天| 亭亭玉月丁香| 91九色在线视频| 久操激情| 国产偷人妻精品一区| 99热首页| 激情亭亭五月| 婷婷五月天论坛| 伊人婷婷大香蕉| 狠狠CAO日日穞夜夜穞AV| 伊人九九九久| 丁香婷婷射| www.夜夜操| 欧美精品XXXXBBBB| 先锋五月婷婷丁香草草| 九九婷婷网五月天| 丁香五月婷婷欧美性爱| 色五月婷婷中文字幕在线观看 | 久久人妻高清中文| 婷婷久久五月天| 丁香五月 性爱| 五月色情婷婷| 丁香五月欧美色综合| 在线18av | 久久99久久99精品免观看粉| 人人操 色| 久久这里只精品66| 色综合久久44| 婷婷激情五月视频| 99视频热| 4438亚洲欧美| aaaaaa片| 日本va欧美va国产激情| 9|无码久久久久久| 婷婷中文字幕网| 国产看真人毛片爱做A片| 97干欧美| 精品网站:999WWW| 五月激情四射网站| 色综合av超碰| 天天综合网亚洲网站| av九九| 2016日日夜夜操| 99色视频在线观看| 亚洲国产精品二二三三区| 国产激情AV| 婷婷六月天激情| 色啪网| 色久女| 噜噜色噜噜网| 国产人人操| 五月丁六月香av| 五月丁香婷婷基地| 丁香五月性| 免费看欧美成人A片无码| 色综合激情图区| 婷婷五月天国产手机在线视频观看| 丁香花五月天激情| 久久精典| 精品久久久人妻| 极品另类| 这里只有久久精99| 婷婷五月欧美AA片免费| 天天爽综合网| 99热观看| 婷婷色五天| 色综合久久无码| m色激情网| 国产乱妇乱子在线播视频播放网站 | 久久免费操| 黄色毛片精品| 五月丁香六月婷婷色情| 综合久久五月天| 丁香五月天激情视频| 99热九九九九| 天天精品视频免费观看| 成人色图情色成人网 www.5b5b5bcom 五月天| www.色五月天.com| 成人小说色图婷婷五月| 色99在线视频| 亚洲成人中心| 色色色国产| 婷婷的久久网站| 九九AV在线| 久久99激情| 色婷婷偷拍| 成人色图情色成人网 www.5b5b5bcom 五月天 | 久1色色| 色色色9| 一级黄色影片| 秋霞免费视频| 久久婷婷五月天综合| 伊人热在线大香蕉| 五月丁香777| 久青草大香蕉| 色婷婷五月色| 人人操AV| 五月婷婷综合网| www.夜夜操.con| 色婷婷久久| 六月色婷婷欧美| 亚洲亚洲人成综合网络| 这里只有精品在线免费视频| 亚洲色图在线视频| 日韩综合久久| 九九视频这里是精品五月| 色五月激情五月| 天天日人人爽| 超碰啪啪网| 泰州成人视频| 香蕉久久国产AV一区二区| 99热手机在线精品| 成人狠狠成人狠狠成人狠狠成人狠狠| 色婷婷aV四虎| 久久久久久久久久8888| 五月丁香婷婷久久| 六月婷婷日| 婷婷色导航| 色五月天堂| 色色五月天网站| 超碰国产在线| 九月丁香很很色| 99在线精品视频在线观看| 亚洲第一av| 超碰在线精品| 丁香五月综合图片在线观看| 丁香花成人区| 在线播放成人网站| 五月天涩涩| 538任你爽视频不一样的| 午夜成人天堂久久无码日韩久久| 五月丁香天天| 91精品人妻少妇无码影院| 国产亚洲在线观看| 激情五月天色婷婷综合| 色色五月天丁香婷婷| 丁香五月天堂| 婷婷五月另类网站| 欧美婷婷六月丁香综合色| 九九在线视频| 亚洲第一综合| 这里只有精品日韩精品| 五月天婷婷色色首页| 99色视频| 婷婷伊人五月天| 久/久精品99看9| 国产免费性爱| 99自拍视频在线| 五月永久激情| 亚洲视频二区| 91碰免费视频| 囯产精品久久欠久久久久久九大| 五月丁香中文字幕| 99热在这里只有免费精品| 婷婷99狠| 婷婷综合网| 日日日天天干| 欧洲亚洲免费视频9| 五月丁香天堂| 少妇人妻人伦A片| 美女丁香五婷婷| 天天插天天狠| 美女爆乳18禁www久久久久久| 丁香五月天黄色片| 综合五月丁香六月婷婷| 五月丁香五月丁香| 成人欧美日韩| 日韩啪图| 一本色道久久88综合日韩精品| 婷婷五月天色播| 亚洲第一色色色| 亚洲午夜一区二区| 67194中文在线| 超碰av在线| 五月天 另类图片| 99色在线视频| 色五月大| 丁香婷婷综合影院| 久久99热这里只频精品6学生| 久久这里只有精品热在99| 天天色天天干天天插| 综合色吧| 婷婷94s| 五月天婷婷综合| 激情www| 99激| 26UUU| 激情综合色婷婷啪啪六月天| 波多婷婷久久| 天堂成人A片永久免费网站| 色婷婷AV在线| 夜夜躁爽日日| 97婷婷五月天| 蜜臀av在线成人电影| 亚洲小视频免费播放| 久久久.www| 色婷婷小说网| 97色婷| 丁香婷婷激情五月天无毒不卡蜜桃| 人人干人人操人人摸人人做| 亚洲激情高潮| 婷婷五月天777| 日99网站| 五月婷婷丁香五月| 婷婷六月色| 91九色国产| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | www久| 五月婷婷免费在线视频| 岛国AV网| 五月天伊人综合| 五月婷婷中文网| 秋霞电影一级黄| 99人妻碰碰碰久久久久| 婷婷五月激情综合啪啪| 91超级碰人人操| 五月丁香久久综合91| 91狠狠综合久久久| 99性视频| 欧亚成人A片一区二区| 五月开心激情| www.夜夜操.com| 婷婷综合五月天| 午夜成人综合| AV在线观看网站| 色5月丁香婷婷| 欧美xx激情视频在线观看| 婷婷五月天亚洲综合网| 欧美综合五月丁香六月婷| 亚洲日韩人妻操逼| 婷婷五月天无码熟女| 丁香午月AV中文字幕| 日本人妻A片成人免费看片| 超碰93在线观看| 狠狠爱婷婷色| 国产av影片| 色爱99| 97成人在线视频精品| 在线日韩av| 99九九99九九九视频精品| 久久婷婷一级片| 久久婷婷五月丁香蜜桃网| 日韩国产在线精品| 综合另类激情| 另类丁香综合| 久久最新色| 五月天婷婷情色| 中文字幕,综合,91| 大香蕉手机视频| 99久热在线精品| 爱性综合网| 少妇丁香婷婷 | 九九爱精品网站| 久久久无码精品成人A片小说 | 99视频只有精品| 五月天成人综合| 婷婷丁香色无五月| 91无码高清| 开心五月综合激情网| 婷婷五月天综合AV| 99热这里只有精品4| 激情99| 亚洲亚洲人成综合网络| 九九九干精品| 操逼综合网| 六月婷基地| 99黄色在线视频精品熟女| 丁香九月婷| 思思热久久阴99| 激情伊人六| 台湾佬天天日丁香婷婷五月天| 久热网站| 五月在在观看| 思思热AV| 日韩操人| 天天做天天爱天天高潮| 久色大香蕉| 久久aaaaa| 婷婷五月综合色拍| 日韩婷婷五月| 婷婷综合网站| 国产精品视频| 中文幕无线码中文字蜜桃| 波多婷婷久久| 国产成人av在线播放| 婷婷六月丁香在线| 天天天操天天天日| 久久伊人大香蕉| 久久人人妻| 婷婷五月丁香亚洲| 美欧日韩国产成人在战| 五月丁香色婷婷伊人| 婷婷五月AV| 天天噜天天插| 人人爱人人摸人人澡| 9热精品| 99热66| www.婷婷五月.com| 九九久久99| 婷婷激情综合网| 久久激情网| 热99在线| 婷婷第一页| 色噜噜狠狠色综合无码久久欧美| 色天天综合| 婷婷五月天亚洲五码| 五月天综合久久| 丁香狠狠色婷婷久久无码视频| 大香蕉久热| 色婷婷激情小说网| 操逼巨乳91| 99在线小视频| 色欲AVV| 色色五月天丁香| 久久性爱网站| 五月婷婷激情| 欧美日韩成人在线| 丁香密臀AV激情网| 激情五月com| 丁香五月婷婷五月| 全部老头和老太XXXXX| 五月婷久久久| 日本熟女一区二区| 亚洲第一综合| 天天肏天天肏天天肏| 蜜桃婷婷丁香五月天狠狠久久综合| 五月天婷婷亚洲| 五月婷婷久久综合| 久婷婷色| 婷婷六月激情在线视频| 思思热视频在线观看| 3DAV亚洲香蕉久久 一区二区| 久久婷婷丁香五月一二三| 久久色亭亭五月天| WWW色色色COM| 久久这里99| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 狠狠色丁香婷婷五月| 丁香激情网| 天天天天天久久久久久| 97色婷婷| 9久久精品| 色婷婷成人五月| 国产精品18久久久| 天天色播| 狠狠干综合网| 九九中文字幕九| 色婷婷五月天激情综合 | 色噜噜综合网| 色婷婷88| 激情久久综合网| 激情影院免费视频婷婷五月天| 九九亚洲综合| 久久图色4| 怡红院院久久| 337p大胆噜噜噜噜噜91Av| 98永久精品| 五月天激情www| AA片在线观看视频在线播放| 777.色色| 国产肥白大熟妇BBBB视频| 激情五月天色网站| 99熟女视频| 丁香六月青青草| 丁香六月婷婷综合在线| 黄色片avv| 色综合五月婷婷狠狠干| 色综合久久之分久久| 婷婷五月丁香人妻无码高清| 婷婷五月天免费视频在线观看| 亚洲精品V天堂中文字幕| 欧美丁香婷婷天天操| 亚洲综合在线视频| 色玖玖| 久久久91| 大香蕉av在线| 夜夜爱网站| 色婷婷久久综合| 亚洲激情综| 色色色婷婷| 久久这里有精品| 久久婷婷电影| 狠狠狠狠狠狠| 99久在线精品| 五月天开心激情综合网| 久久久色婷婷五月天| 中文av网站| 丁香丁婷五月激情| 欧美日韩999| 另类图片五月天婷婷| 五月婷婷综合激情| 久久午夜理论| 男人大jjc女人免费视频| www.色五月天.com| 中文字幕天天干| 精品乱码久久久久| 中文字幕,综合,91| 爱射综合| 九热在线这里有精品6| 91狠狠色丁香婷婷综合久久| 开心五月婷婷在线视频免费观看| 91在线精品一区二区| 亚洲第一精品成人999久久精品| 欧美三级大片AA在线看| 91九色中文| 91碰碰视频| 九九久久精品| 国产婷婷五月中文字幕高清| 久久综合五月天激情小说网站| 亚洲婷婷成人五月天| 五月色亭丁香| 9久久久久久久久久久| 婷婷激情四射| 午夜69成人做爰视频| 亚洲、热| 久久精品夜色噜噜亚洲a∨| 狠狠爱婷婷爱| 这里只精品| 97超碰,人人舔,人人操,人人摸 | 亚欧州精品视频| 婷婷五月天激情文学| 2014天天爽| 欧亚成人A片一区二区| 天天天天爽爽天干| 日本视频99| 天天爽夜夜操| 九九精品在线网| 婷婷丁香综合| 日日撸夜夜操| 成人精品99| 五月丁香色综合| 开心激情网五月天| 色婷精品91| 久久九九网| 国产精品久久久久久五月天加勒比| 婷婷丁香五月基地| 青青草激情网| 天天天摸夜夜夜玩| 色婷婷六月天| 亚洲午夜成人av电影网| 国产激情在线| 五月激情婷婷色| 亚洲成人av在线观看| 97操视频| 9999热这里只有精品| 欧美丁香五月| 天天日夜夜| 婷婷色五月天在线观看| 婷婷在线观看五月天在线视频| 91麻豆国产三级精品福利在线观看| 99热免费| 色综合久久88色综合中文字幕| 五月婷婷婷| 亚洲高清在线| 六月激情久久| 啪啪啪啪五月天| 99九九热视频免费| 国产乱妇无乱码大黄AA片| 婷婷五月另类网站| 激情婷婷内射| 日本色久| 激情婷婷五月丁香啪啪啪| 99亚洲视频| 丁香五月婷婷精品视频| 91碰| 97碰 在线视频观看| 色五月天婷婷| 五月天天天天天天天天天天天天天天天婷婷婷 | 欧美日韩99| 可以看的AV网站| 五月丁香啪啪啪免费看| 九九九九大香蕉| 丰满少妇猛烈A片免费看观看| 中文AV在线观看| 久久99日本精品视频免费观看| 久久538| 天天爽天天摸天天爱| 天天干夜夜操A片| 免费啪啪啪网站| 丰满人妻一区二区三区| 九热精品| 精品久久久人妻| 婷婷九月激情| 97操操操| 亚洲操B视频| 亚洲精品第一色色色色色色| 99热都是精品| 五月激情网站| 97 A I色色| 天天做天天爱天天爽在| 五月丁香婷婷色色| 久xxxx| 丁香五月婷婷激情97| 久久香蕉网| 婷婷天天色| 艹| 99热99成人| 五月天天综合| www99xxxx五月丁| 久久9热好| 天天操婷婷| 五月天婷婷爱| 五月天啪啪啪| 久久视频在线| 五月激情黄色小说| 九月婷婷综合八月丁香在线观看| 涩五月婷婷| 婷婷五月激情的图片| 亚洲天堂AV综合网| 久婷婷视平| 在线观看国产高清视频免费网站| 97色色色| 天天舔天天爽| 日韩色色视频| 五月天精品视频| 站长推荐无码播放| 五月天婷婷AV| 天天干天天拍| 婷婷丁香五月综合免费视频百花| 五月天综合在线观看| 婷婷六月天亚州| 久久婷婷六月综合资源| 狠狠88综合久久久久噜噜噜| 色八月婷婷| 97人人射| 思思99热这里只有精品| 亚洲成人在线播放| www狠狠| 操操天堂| 亚洲中文字幕av| 综合久久高清| 99热免费精品| 丁香激情网| 色五月色图| 无码yw| 91人碰| 大香蕉 伊人夜| 午夜日日| 97黑人精品区| 亚洲一级色电影| 1024操逼视频| 午夜激情综合| 婷婷导航| 思思热思在线精品视频| 婷婷激情五月天在线视频| 99热精品网| 色吧五月婷婷六月丁香| 成人色五月天| 99人人操人人摸| 国内精品玖玖| av狠狠操| 亚洲天堂啪啪| 九九色综合| 天天干天天干天天| 五月婷婷六月丁香| 婷婷中文字幕网站| bukadeavzaixian| 一操久久| www.婷婷五月| 天天色天天色天天色天天色天天色天天色| 欧洲亚洲免费视频区| 丁香六月 人妻| 五月婷婷免费视频| 国产综合网在线| 色99色| 亚洲综合五月天婷婷丁香| 国产日比| 精品影院| Av在线不卡一区| 亚洲超级碰| 日本69日人视频| 五月香蕉综合| 99免费视频在线观看爱| 婷婷六月亚洲综合| 九九热99热| 免费观看18视频网站| 伊人香大香蕉视频| WWW·色色色·COM| 9.1综合网| 操逼123网| 五月亚洲| 色婷婷小说| 久久人妻熟女一区二区| 秋霞网在线免费基地五月婷婷丁香| 日亚二欧美| 五月婷婷另类| 色情五月天A片| 天天爽天天日| 五月丁香网站| www.色欲丁香婷婷| 亚洲一级色电影| 婷婷丁香五月天综合网| 色噜噜狠狠插综合| 久久9精品| 99精品国产乱码久久久人妻| 欧美操我| 综合五月丁香久久| 天天日夜夜帕| 99色亚洲| 91男人资源站| 色婷婷久久| 中文字幕 久久9999| 五月婷婷丁香六月| 日本狠狠干| 色站9/| 五月丁香六月婷婷综合在线| 亚洲激情97五月天| 91欧美| 色婷婷很很十八禁| 91啪啪视频| 狠狠色噜噜狠狠狠888了| 色婷婷激情| 五月天偷拍| 五月天基地| 亚洲性爱干干| 久久久久久久人妻| 无码激情AAAAA片-区区| 久久新地此| 国产欧美婷婷五月| 99碰网站| WWW色五月| 婷婷伊人综合中文字幕| 五月天激情久色| 色哟哟精品| 丁香五月婷中字在线| 婷婷色丁香五月| 操你av| 狠狠做婷婷| 9 9热这里有精品| 综合激情五月丁香9999久久精| 国产激情综合五月久久| 97精品人人A片免费看| 色色狼人综合| 女人天堂 AV| 337p大胆噜噜噜噜噜91Av| 美腿丝袜AV天堂网| 国产一区男女| 五月婷婷综合视频| www、丁香五月天| 精品少妇蜜臀91| 天天精品视频免费观看| 青青草99热久久精品国| 毛片新网地| 色五月婷婷在线| 97婷婷狠狠久久综合9色| 婷婷色丁香五月| 六月婷婷五月天| 久久99精品久久久久久青青AR| 五月天婷婷六月| 五月综合久久| 激情四射婷婷色色色| 婷婷色网站| 午夜少妇在线观看视频| 婷婷综合在线| 天天搞天天色综合| 亚洲无码AV片| 激情色情五月天| 狠狠操天天干| 色婷婷av在线观看| 97人妻碰碰碰久久香蕉| 丁香婷婷五月人体| 五月之婷婷| 国产露脸150部国语对白| 丁香五月性爱| 日日噜噜夜夜狠狠久久丁香六月| 97碰碰电影| 五月天激情无码专区| 超pen个人视频97| 99er这里只有精品| 九九激情综合| 色婷婷狠| 五月丁香婷婷色色色| 色色九区| 婷婷五月天视频亚洲| 老司机视频lsj爱就色| 丁香伊人激情| 欧美性猛交 XXXX 乱大交| 性五月激情| 国产精品久久..4399| av在线免费网站 | 色五月激情视频在线综合| 99热这里都是精品| 九热久| 色五月成人| 综合色婷婷| 丁香五月综合AV在线| 五月婷狠狠| 色综合色色色色色| 婷婷五月丁香第四色超碰在线| 五月天欧美 另类小说| 99自拍视频| 天天干夜夜操A片| 色婷婷综合视频| 婷婷 久综合| 婷婷丁香成人| 99这里只有精品视频在线| 久久五月视频| www.99热最新视频8| www.夜夜操| 蜜臀A∨在线水帘洞| 五月综合久久| 日韩一66精品| 97操操网| 天天色综合网1| 99九九热播在线免费视频| 婷婷开心久久| 日日噜噜久久婷婷五月天| 激情六月丁| 日韩欧美老妇性视频91久久久| 丁香五月综合激情性爱| 婷婷五月综合网| 大香蕉精品视频| www.日本久久videos| 久久婷婷影院| 五月天久久成人| 爱iii做iiii日| 五月婷婷片| 婷婷婷久久久| 久碰视频| 天天狠狠插| 婷婷丁香成人色综合| 四色AVwww| 日韩黄色电影| 超碰免费在线| 丁香五月日啪| 色欲AVV| 五月天综合久久| 色色色综合色| 色五月综合网| 五月婷色啪| 中文字幕亚洲-区久久99婷婷| 色呦呦美女| 久热这里只有精品6官网亚洲| 99re6在线视频精品免费| 亚洲五月天婷婷综合| 欧美啪啪网| 久久久97| 丁香婷婷六月天| 91免费试看| 玖玖爱综合网| 欧美99热| 二区成人视频| 亚洲人妻AV| 就爱干 在线| 岛国资源站| 亚洲精品亚洲人成人网| 激情婷婷五月天伊人在线观看| 玖久久网站| 久9久成人精品视频| 只有精品在线观看| 久久久久久久91| 亚洲欧洲午夜成人精品av| 天天做天天要天天爱| 蜜乳av一级av| 五月天婷婷操逼视频| 久久婷婷丁香五月一二三| www91色网站| 超碰97人人操| 99精品久久| 9久热精品在线视频| 99色热视频在线| 久久五月综合| 亚州欧美黄色电影| 欧美综合123区| 亚洲瑟瑟精品在线| 久久婷婷东京热| 五月天激情婷婷| 狠狠色综合久久| 99久热| 熟妇人妻中文字幕无码老熟妇 | 91视屏在线观看com.wwwvv| 狠狠色婷婷7777久| 久久丝袜婷婷| 亚洲婷婷丁香五月在线| 狠狠操在线视频| 激情九九这里只有精品| 五月天激情久久| 色婷婷天堂| 天天爽夜爽| 国产人妻777人伦精品HD| 婷婷操无码| 九九久久免费视频44| 亚洲成人在线免费| WWW色综合| 婷婷激情五月综合丁香社| 亚洲视频图片婷婷五月| 久久综合五月天| 丁香色色网| 丁香av网| 九热电影av| 五月婷丁香花| 婷婷六月激情在线视频| 丁香六月激情综合| 99爱视频| 九九色婷| 婷婷五月丁香六月| 久1色色| 舔色婷婷| 婷婷大香蕉| 1024欧美看片| 成人电影在线免费试看| 久久与婷婷| 激情五月天社区| 日本色色色| 玖玖综合色区在线观看| 玖玖婷婷色五月| 天天更新天天亚洲| 亚洲精品国产精品乱码视99| 五月丁香亚洲综合| 久久五月天激情| 97狠狠色| 另类小说五月天激情| 男人天堂99| 玖玖婷婷色欲| 亚洲色碰| 五月婷在线播放| 天天干夜夜谢| 国产4P视频精品五区| 五月丁香网视频| 99爱视频免费| 丁香五月天啪啪| 亚洲激情电影五月天色婷婷丁香一起草| 亚洲九N| 激情久久久| 99久久9| 天天日 天天草| 激情五月天激情综合网| 桃色激情婷婷伊人网| 99热这里只有精品26| 热99免费在线| 九9九9无码| av在线中文| www色五月天| 欧美久久五月婷婷| 五月婷婷激情综合| 激情丁香六月| 99久久.www| 成人性生活免费观看。| 亚洲精品又粗又大又爽A片| 9+1视频网址| 丁香五月婷婷亚洲色图| 99亚洲无码| 99久久国产成人精品| 午夜九九九九九九九九九九九九九| www亚洲无码| 91热久88| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 欧洲亚洲免费视频9| 激情五月久久| 亚洲性爱区无码区| 五月丁香色| AV五月丁香| 婷婷丁香社区| 久久精品天| 人人爱人人添| 综合五月婷婷| 色色丁香婷婷综合| 激情伊人五月天| 嫩草免费视频| 人人干天天操五月丁香| 九九99在线免费在线观看视频| 五月天激情日色在线| 激情婷婷狠狠干| 禁欲电影完整版在线播放| 中文字幕AV在线播放| 日本天堂免费99| 大香蕉在九| 玖玖资源部在线播放| 日日噜狠狠| 久久9热| 色色无码| 丁香花综合永久入口| 婷婷五月天影视| wwwss在线观看| 99,色| 五月丁香激情综合网| 天天操五月天| 久久99大全| 人妻中文字幕网| 啪啪小说五月天| 久热9热| se影音资源在线观看| 91欧美| 97人人操人人爽| 97人人干| 色综合久久中文| 玖玖色综合网| 丁香五月天激情五月天激情五月天激情网| 婷婷丁香六月五月天| 婷婷丁香五月激情图片| 色婷婷五月综合在线| 婷婷五月天成人基地| 激情五月婷婷网| 五月婷婷开心网| 五月婷婷三级| 狠狠插狠狠操| 丁香五月成人| 九一娱乐在线观看视频| 第1影院之五月婷婷| 天天爽天天草| www.色色com| 国产精品电影网| 丁香五月婷婷基地| 色噜噜狠狠色综合日日| 亚洲色婷婷婷婷人人爽| 婷婷五月丁香六月| 日本特黄aaaaa| 丁香五月婷婷五月基地| 激情丁香五月天图片| 91精品久久久久久久久| 亚洲综合热| 欧美综合123区| 91婷婷| www.五月激情红色| 国产亚洲av片| 激情婷婷亚洲五月| 亚洲人成网站999综合| 99热这里| 激情五月丁香五月| 国产无遮挡又黄又爽免费网站| 五月婷六月丁| 丁香婷婷老司机久操| 亚洲av成人在线| 99久久66| 伊人狠狠丁香婷婷综合尤物| 在线中文av| 综合激情婷婷| 嫩草乱码一区三区四区| 丁香五月情| 欧美日韩欧美| 深爱五月网| 亚洲熟女色| 性色做爰片在线观看WW| 天天艹天天色| 99热狠狠操| 99爱视频在线| 天天色天天噜| 大香蕉网站,大香蕉综合| 五月婷婷啪啪| 国产午夜精品久久久观看| 中文字幕精品在线观看| 色久综合| 思思热99热| www,五月天com| 久久免费少妇高潮99精品| 思思热久久久在线| www色色com| 五月天大香蕉av| 色玖玖综合| 管管補管管紱| 婷婷爱爱蜜臀天天操| 99久热| 五月婷婷激情视频| www.激情五月天。com| 亚洲日韩一页精品发布| 先锋资源婷婷| 欧美性丁香色色五月天综合爱爱| 看逼中文字幕| 91丨九色丨大屁股| 操逼巨乳91| 丁香五月亭亭六月综合激情网| 色色激情网| 天天舔天天摸视频| 婷婷六月色| 色婷婷五月天无码视频| 激情五月婷婷免费视频| 五月天.com| 人妻丰满精品一区二区A片| 久久婷婷五月综合啪| 激情五月综亚网| 亚洲国产成人在线| 操精品9| 五月丁色AV| 婷婷激情在线| 九九爱激情| 婷婷在线观看五月天在线视频| 激情综合网五月激情| 五月丁香狠狠爱| 五月丁香婷草| 亚洲精品乱码久久久久久按摩观| 欧美色五月| 五月天激情网图片| 五月丁香六月停停| 色综合久久888| 99热这里有精品首页10| 五月激情综合网| 五月天激情综合| 激情五月婷婷丁香综合网| 夜夜骑操AV| 开心婷婷中文字慕| 999久久久国产精品| 九九9久九9国产视频| 久久曰曰| www.久久久久| 日本色爽| 五月丁香六月婷婷综合网站| 99热久久最新地址| 久久五月婷婷电影| 91久久久久久久久| 99re热在线视频观看| 久久九九思思| 全部老头和老太XXXXX| 99热在线播放| 婷婷大香蕉| 九九这里是免费的视频5| 狠狠色噜噜狠狠狠888| 这里只有精品9| 能看的av片| 欧洲亚洲免费视频区| 五月丁香怕啪啪| 久久久久98| 婷婷五月欧美| 五月丁香六月停停停| www。久久久久一b。Cc| 欧美性爱五月天| 亚洲婷婷91丁香| 97干综合网| 97色色色| 99视频在线观看网址| 五月婷婷片| 99热这里只有精品搜| site:feetmall.com| 国产熟女日日骚五月丁香爱| 亚洲综合五月天综合| 日本精品。999| 91操色| 五月丁香六月婷婷啪啪综合| 99re这里只有精品9| 丁香五月在线伊人| 婷婷五月激情网站| 色婷婷五月天亚洲| 狠狠婷婷爱| 五月婷庭丁香在线| 色五月丁香一区在线| 久久九九99亚洲国产久精综合| 狠狠人妻久久久久久综合丁香| 久久狠色噜噜狠狠狠狠97| 、激情六月天| 夜夜躁狠狠| 日韩五月天婷婷| 99热在线观看这里只有精品| 五月婷婷丁香av| 欧美激情综合色综合| 五月天激情图片| 丁香五月开心亚洲| 亲子乱AV一区二区三区下载| 色五月av| 大地资源色婷婷视频在线| 久久久天堂国产精品女人| 婷婷94s| 免费AV在线网址| 色情五月婷| 久久视这里只有精品| 电影《战争与艾拉》免费观看| 丁香婷婷免费| 日日爽日日爽| 色播五月综合网| 91丨九色丨国产打屁股| 国产精品a无线| 日本综合99| 婷婷五月天综合亚洲| 日韩成人综合| 色色色com| 丁香五月天狠狠操| 久鲁鲁色网| 夜夜躁狠狠 | 99爱视频精品| 五月 丁香 欧美| 久久久精品人妻录| 日韩欧美骚货| 人人色婷婷| 日本三级日本三级99| 九九无毛| 91丨九色丨丰满人妖| 亚洲综合新99视频| 99热在线只有精品| 五月婷婷视频在线观看| 九九人人操| 免费91久久精品| 五月婷婷激情日本| 免费视频舔| 亚洲情欲| 婷婷综合| 五月停视频天堂| 99久久久免费| 伊人午夜综合色啪| 丁香久久综合| 成人无码髙潮喷水A片| 99人人操人人操人人精| 五月丁香欧美综合| 天天干天天操天天干天天操天天干天天操| 婷五月天| 五月丁香六月婷| 色五月婷婷丁香凹凸| 玖玖在线视频福利| 五月婷婷丁香在线视频| 伊人五月婷婷| 99人人爽| 97色啪| 亚洲视频a| www五月| 国产乱子轮XXX农村| 亚洲成人九九九| 日本熟女三区| 97色女人在线| 亚洲亚洲人成综合网络| 久久五月婷婷丁香| 99.色| 亚洲色啪| 美女伊人久久| 深爱激情九九五月天 | 婷婷五月色播天| 国产精品99久久久久久猫咪| 五月丁香激情六月| 色情综合| 久久机热思思热| 丁香五月自拍| 97久久超视频| 丁香 婷婷五月| 五月综合久久| 婷婷五月成人社区| 五月丁香日本在线视频观看| 色偷偷色婷婷| 午夜伊人大香蕉| 禁片二区| 五月婷深深爱激情网| 成片免费观看视频大全| caopeng97人人| 亚洲六月婷| 丁香五月Av| 五月丁香欧美综合| 五月丁香婷婷潮喷中文字幕| 婷婷丁香花五月天| 婷婷国产五月天17c| 婷婷五月丁香色情| 精品乱码久久久久| 98永久精品| 涩涩涩五月天| 亚洲成人AV电影在线| 九九色色| 激情综合区| 久久色五月| 婷婷五月中文在线视频| 夜夜爽77777妓女免费下载| 深爱婷婷基地| 成人在线不卡| www.久久99精品| www.日日夜夜| 大地资源色婷婷视频在线| 99热18| 久热亚洲| 婷婷色五月开心五月| 播播网色播播| 东京热人妻一区二区三区在线| 精品色色网| 亚洲V国产V欧美V久久久久久| 夜夜夜天天操| 97资源碰碰| 久久婷婷啪啪视频| 自拍偷窥99热| 91九色小视频| 五月婷婷六月情| 亚洲午夜一区二区| 日本天堂免费99| 99热99| 五月天.com| 婷婷中文字幕网| 激情婷婷六月天| 91九色 熟| 色噜噜狠狠插综合| 色综合av超碰| 婷婷六月丁香欧美视频在线| 香蕉久久五月| 综合久久五月天| 婷婷色偷拍| 婷婷五月天成人网| 成年人夜夜喷水| 九九精品re免费视频| AV在线不卡播放| 激情五月天综合| 九九激情| 日韩在线五月天婷婷| 五月天a婷婷伊人| 超碰97久久| 性色九九| 白人荫道BBWBBB大荫道| 26uuu亚洲| 五月丁香婷婷综合视频| 日本五月婷| 五月丁香六月婷婷手机无线| 久久五月天合网| www.99热视频| 天堂综合久久| 久久丁香九| 久婷婷久草| 色99视频| 欧美日韩91| 久久婷婷网| 五月丁香影院| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | www.婷婷亚洲基地| 五月天激情国产综合婷婷婷| 五月丁香 啪啪啪| 日韩啪啪视频| 人妻videos人妻高清| 玖玖玖婷婷婷| 婷婷中文在线| 涩综合在线| 1024AV视频| 亚洲视频二区| 激情婷婷五月天伊人在线观看| 日韩黄在免| 丁香婷婷激情| 亚洲中文丁香| 草榴视频黄色网| 五月婷婷六月天| 色色色777| av五月天婷婷丁香| 色一情一乱一乱一区91| 五月丁香综合激情在线观看| www.91av.com| 热99精品视频五月| 色丁香综合影院| 五月天丁香花婷婷| 久9久9热久热| 这里只有精品在线播放| 色色色色色五月丁香| 日日干夜夜干| 深爱激情六月| 色99在线| 色婷婷丁香AV综合| 久青操| 色五月 激情婷婷 综合五月天| 91综合网| 久久婷婷五月综合| 色五月婷婷在线| 五月婷婷开心深|