久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

open-code-review:構(gòu)建機(jī)器先審、人再審的代碼審查流水線(xiàn)

open-code-review:構(gòu)建機(jī)器先審、人再審的代碼審查流水線(xiàn) 代碼審查這事兒做過(guò)的團(tuán)隊(duì)都懂它折磨的不只是某一個(gè)人的耐心而是整個(gè)交付鏈路。寫(xiě)代碼的人怕被挑刺審查的人怕漏掉關(guān)鍵點(diǎn)負(fù)責(zé)人怕流程走了個(gè)寂寞。我自己維護(hù)過(guò)幾個(gè)中大型前端項(xiàng)目踩過(guò)不少代碼質(zhì)量的坑后來(lái)沉淀出一套開(kāi)源的、完全自托管的代碼審查方案代號(hào)就叫 open-code-review。它不是一個(gè)單體工具而是一套把靜態(tài)分析、自動(dòng)化規(guī)則、人工走查規(guī)范串成流水線(xiàn)的工程實(shí)踐。這篇文章會(huì)把這套方案的設(shè)計(jì)思路、落地步驟、調(diào)參心得和踩坑記錄一次講透。這套方案解決的核心問(wèn)題很樸素讓機(jī)器先把機(jī)械的活干完把人解放出來(lái)做真正需要判斷力的部分。凡是能用規(guī)則表達(dá)的檢查項(xiàng)——代碼風(fēng)格、重復(fù)代碼、死代碼、明顯的反模式、遺留的FIXME——全部自動(dòng)化凡是需要業(yè)務(wù)理解、架構(gòu)權(quán)衡、邊界推演的部分做成清單化、可跟蹤的人工審查。它適合正在為代碼審查低效發(fā)愁的小團(tuán)隊(duì)也適合想在自己的CI流水線(xiàn)里加一道質(zhì)量閘門(mén)的獨(dú)立開(kāi)發(fā)者。1. 項(xiàng)目的起點(diǎn)為什么我們需要一套開(kāi)放的代碼審查方案1.1 人工審查的困境比想象中嚴(yán)重我剛帶團(tuán)隊(duì)的時(shí)候review代碼基本靠自覺(jué)。后來(lái)復(fù)盤(pán)一個(gè)線(xiàn)上事故發(fā)現(xiàn)根因在代碼審查階段就該被攔下來(lái)但當(dāng)時(shí)所有reviewer都只回了句LGTM沒(méi)人細(xì)看。這不是某個(gè)人偷懶而是人工審查天然有幾道坎。第一道坎是規(guī)模問(wèn)題。一個(gè)功能分支改動(dòng)幾百行加一個(gè)新頁(yè)面改動(dòng)上千行審查者打開(kāi)diff就頭大。真要逐行看下來(lái)一個(gè)中型MR耗掉半天很正常如果當(dāng)天有會(huì)、有線(xiàn)上問(wèn)題要處理審查就會(huì)被無(wú)限順延最后趕在發(fā)版前草草合并。第二道坎是注意力問(wèn)題。審查代碼本質(zhì)上是在做陌生代碼的快速推理人腦能維持高專(zhuān)注的時(shí)間有限??吹降谖迨畟€(gè)文件的時(shí)候?qū)彶檎邔?duì)前四十九個(gè)文件的印象已經(jīng)開(kāi)始模糊。真正該關(guān)注的并發(fā)問(wèn)題、邊界條件、狀態(tài)流轉(zhuǎn)往往被淹沒(méi)在瑣碎的格式和命名里。第三道坎是經(jīng)驗(yàn)落差。團(tuán)隊(duì)里新人做審查時(shí)不知道看什么、抓不住重點(diǎn)最后只能改改縮進(jìn)和變量命名。有經(jīng)驗(yàn)的老人又可能因?yàn)樘o出的意見(jiàn)高度濃縮新人看不懂也問(wèn)不出口。時(shí)間一長(zhǎng)審查就成了走過(guò)場(chǎng)意見(jiàn)記錄分散在IM聊天里過(guò)后想追溯都找不到。我后來(lái)統(tǒng)計(jì)過(guò)團(tuán)隊(duì)一段時(shí)間的review意見(jiàn)真正由人工發(fā)現(xiàn)的高價(jià)值問(wèn)題占比不到三成剩下七成以上是本來(lái)就能自動(dòng)查出來(lái)的風(fēng)格問(wèn)題、重復(fù)實(shí)現(xiàn)、異常邊界被吞掉這類(lèi)“機(jī)器可識(shí)別”的問(wèn)題。這個(gè)結(jié)論讓我開(kāi)始認(rèn)真考慮能不能把審查里“機(jī)器擅長(zhǎng)”的部分先自動(dòng)化讓人的精力聚焦在機(jī)器做不了的事情上。1.2 open-code-review 的定位機(jī)器先審人再審所以 open-code-review 的核心思想可以概括成四個(gè)字分層審查。先讓工具做一輪全量掃描把客觀(guān)的、可判定的問(wèn)題全部拉出來(lái)并且自動(dòng)貼到MR對(duì)應(yīng)的代碼行上然后人工只需要在這張“過(guò)濾后的清單”上做判斷重點(diǎn)看業(yè)務(wù)邏輯、架構(gòu)合理性、潛在的邊界條件這類(lèi)機(jī)器難以理解的部分。這套方案是開(kāi)放、可自托管的。開(kāi)放指的是兩層含義工具鏈?zhǔn)情_(kāi)源的團(tuán)隊(duì)可以按需替換組件規(guī)則是開(kāi)放的所有檢查規(guī)則都以代碼的形式沉淀在倉(cāng)庫(kù)里誰(shuí)都能提修改意見(jiàn)。自托管則是出于安全和成本的考慮代碼本身是公司的核心資產(chǎn)把整個(gè)倉(cāng)庫(kù)交給外部SaaS平臺(tái)掃描很多團(tuán)隊(duì)在合規(guī)上過(guò)不了關(guān)商業(yè)方案按席位收費(fèi)團(tuán)隊(duì)擴(kuò)張之后成本也偏高。一句話(huà)總結(jié)定位open-code-review 不追求替代人而是做一個(gè)“審查前置過(guò)濾器”把代碼審查從“憑感覺(jué)找人看”變成“機(jī)器先查人再審重點(diǎn)”的標(biāo)準(zhǔn)化流程。它的產(chǎn)物是一次次可跟蹤的MR評(píng)審記錄也是一套可以持續(xù)演進(jìn)的團(tuán)隊(duì)質(zhì)量規(guī)范。2. 整體設(shè)計(jì)與技術(shù)選型把代碼審查這件事拆開(kāi)看2.1 一條審查流水線(xiàn)的五個(gè)層次設(shè)計(jì)這套方案的第一步是把“代碼審查”這件事從抽象拆成具象。我把它分成五個(gè)層次每一層都有明確的工具和輸出物第一層是格式與風(fēng)格層。統(tǒng)一縮進(jìn)、引號(hào)、分號(hào)、命名規(guī)范這些是最沒(méi)爭(zhēng)議的部分也是消耗人工審查最多精力的部分。交給Prettier和ESLint自動(dòng)處理不滿(mǎn)足規(guī)范直接在CI階段報(bào)錯(cuò)根本不讓它流到評(píng)審人眼前。第二層是靜態(tài)缺陷層。檢測(cè)空指針隱患、未使用的變量、可疑的類(lèi)型斷言、危險(xiǎn)的函數(shù)調(diào)用等。ESLint內(nèi)置規(guī)則加上插件規(guī)則集已經(jīng)能覆蓋不少場(chǎng)景SonarQube在這個(gè)層次做交叉驗(yàn)證識(shí)別力更強(qiáng)。第三層是語(yǔ)義與復(fù)雜度層。關(guān)注圈復(fù)雜度、重復(fù)代碼塊、過(guò)長(zhǎng)函數(shù)、過(guò)度嵌套這些都是代碼可維護(hù)性的關(guān)鍵指標(biāo)。SonarQube在這一層提供質(zhì)量門(mén)禁和歷史趨勢(shì)能直觀(guān)看到代碼是越改越亂還是在變好。第四層是團(tuán)隊(duì)規(guī)范層。這一層屬于“機(jī)器里帶有人情味”的部分每個(gè)團(tuán)隊(duì)都有自己的約定比如PR標(biāo)題必須帶模塊前綴、MR改動(dòng)文件數(shù)不能超過(guò)某個(gè)閾值、禁止往主干提交FIXME注釋。通過(guò)Danger JS這種可編程的規(guī)則引擎團(tuán)隊(duì)規(guī)范可以直接變成自動(dòng)化檢查項(xiàng)而不是躺在Wiki里吃灰的文檔。第五層是人工走查層。最終仍需人來(lái)決策的問(wèn)題包括這個(gè)方案是否符合當(dāng)前架構(gòu)演進(jìn)的預(yù)期、是否存在多線(xiàn)程安全風(fēng)險(xiǎn)、接口設(shè)計(jì)是否考慮了后續(xù)擴(kuò)展、異常處理是否覆蓋了真實(shí)業(yè)務(wù)場(chǎng)景。為了讓這些判斷不靠臨場(chǎng)發(fā)揮open-code-review 提供一份可勾選的MR審查清單模板把常見(jiàn)關(guān)注項(xiàng)列全審查者逐項(xiàng)走查后留下結(jié)論。這五層可以類(lèi)比成一輛車(chē)的出廠(chǎng)質(zhì)檢先是產(chǎn)線(xiàn)自動(dòng)化外觀(guān)檢查再上檢測(cè)臺(tái)測(cè)制動(dòng)和排放最后由經(jīng)驗(yàn)豐富的技師路試。每道關(guān)卡篩掉一部分問(wèn)題越往后越需要人的判斷力整體效率就上來(lái)了。2.2 組件選型背后的取舍邏輯很多團(tuán)隊(duì)做自動(dòng)化審查時(shí)容易陷入一個(gè)誤區(qū)想用一個(gè)大而全的工具搞定所有問(wèn)題。我試過(guò)幾個(gè)商業(yè)SaaS方案功能確實(shí)強(qiáng)但最終都卡在了數(shù)據(jù)和成本上。所以選型時(shí)定了幾條原則必須是開(kāi)源可自托管的、必須能對(duì)接現(xiàn)有代碼托管平臺(tái)、必須允許通過(guò)代碼定義規(guī)則。在這個(gè)原則下open-code-review 的核心組件如下需求主力工具備選方案選擇理由審查評(píng)論統(tǒng)一出口ReviewDog自研API腳本支持GitHub/GitLab/Gitea能在MR對(duì)應(yīng)行貼評(píng)論多種reporter可切換靜態(tài)質(zhì)量與趨勢(shì)SonarQubeCodeQL、Semgrep自托管部署成熟質(zhì)量門(mén)禁和趨勢(shì)圖完善團(tuán)隊(duì)自定義規(guī)則Danger JS自寫(xiě)CI腳本用JS/TS寫(xiě)規(guī)則團(tuán)隊(duì)上手成本低和Node技術(shù)棧貼合代碼格式統(tǒng)一Prettier ESLintStandardJS生態(tài)成熟配置靈活可按團(tuán)隊(duì)習(xí)慣定制MR流程規(guī)范GitLab CI / 模板腳本鉤子CI觸發(fā)維度多可以精準(zhǔn)控制只在MR事件時(shí)跑審查ReviewDog 的選擇值得多說(shuō)一句。它的關(guān)鍵能力是把靜態(tài)分析工具的輸出轉(zhuǎn)換成MR上的行級(jí)評(píng)論比如ESLint報(bào)了個(gè)錯(cuò)誤ReviewDog會(huì)自動(dòng)把評(píng)論貼到對(duì)應(yīng)的代碼行旁邊。這個(gè)體驗(yàn)上的提升極其重要審查者不用再打開(kāi)日志文件逐個(gè)位置去對(duì)開(kāi)發(fā)者也能在熟悉的MR界面直接回應(yīng)。SonarQube 的價(jià)值在于歷史視角。單次掃描只能告訴你這次有多少個(gè)問(wèn)題而SonarQube能展示問(wèn)題數(shù)是上升還是下降哪個(gè)模塊是重災(zāi)區(qū)。質(zhì)量門(mén)禁直接和CI結(jié)果掛鉤不達(dá)標(biāo)就不給合并這個(gè)硬約束讓代碼質(zhì)量從“彈性指標(biāo)”變成了“強(qiáng)制門(mén)檻”。至于為什么沒(méi)用更復(fù)雜的AI代碼審查做主力我的觀(guān)點(diǎn)是AI現(xiàn)階段適合做輔助提示不適合做硬性門(mén)禁。誤報(bào)太多會(huì)觸發(fā)“狼來(lái)了”效應(yīng)讓團(tuán)隊(duì)對(duì)審查結(jié)果麻木。open-code-review 里給AI留了一個(gè)可選接入位但它不在默認(rèn)的失敗條件中更像一個(gè)“增值評(píng)審員”。3. 落地實(shí)操?gòu)牧愦罱ㄒ惶卓捎玫膶彶榄h(huán)境3.1 環(huán)境準(zhǔn)備一臺(tái)服務(wù)器和一套Docker編排open-code-review 對(duì)硬件的要求不高代碼倉(cāng)庫(kù)規(guī)模不大時(shí)一臺(tái)2核4G的服務(wù)器就跑得動(dòng)整套服務(wù)。如果倉(cāng)庫(kù)很大、提交很頻繁建議到4核8G主要瓶頸在SonarQube的JVM進(jìn)程和分析任務(wù)上。以下部署方式基于Docker Compose這也是目前維護(hù)成本最低的方式。準(zhǔn)備階段要做三件事裝好Docker和Compose、準(zhǔn)備一個(gè)代碼托管平臺(tái)的賬號(hào)令牌、規(guī)劃好存儲(chǔ)目錄。令牌建議用機(jī)器人賬號(hào)申請(qǐng)權(quán)限只需要讀取倉(cāng)庫(kù)和提交流水線(xiàn)評(píng)論這一檔不要用個(gè)人賬號(hào)的完整令牌避免權(quán)限過(guò)大。docker-compose.yml 大概長(zhǎng)這樣核心就是SonarQube加上PostgreSQL其他組件都跑在CI里不常駐version: 3.8 services: postgres: image: postgres:15 environment: POSTGRES_USER: sonar POSTGRES_PASSWORD: sonar_pass POSTGRES_DB: sonar volumes: - sonar_pg:/var/lib/postgresql/data restart: unless-stopped sonarqube: image: sonarqube:10.5-community container_name: sonarqube depends_on: - postgres environment: SONAR_JDBC_URL: jdbc:postgresql://postgres:5432/sonar SONAR_JDBC_USERNAME: sonar SONAR_JDBC_PASSWORD: sonar_pass ports: - 9000:9000 volumes: - sonar_data:/opt/sonarqube/data - sonar_logs:/opt/sonarqube/logs restart: unless-stopped volumes: sonar_pg: sonar_data: sonar_logs:啟動(dòng)之后瀏覽器訪(fǎng)問(wèn)服務(wù)IP的9000端口用默認(rèn)賬號(hào) admin/admin 登錄第一時(shí)間改掉默認(rèn)密碼。接著在SonarQube里創(chuàng)建一個(gè)項(xiàng)目拿到項(xiàng)目的project key和token這兩個(gè)值后面配置CI任務(wù)時(shí)要用到。這里有個(gè)小經(jīng)驗(yàn)PostgreSQL 的數(shù)據(jù)目錄一定要掛到宿主機(jī)卷里否則容器一重建所有掃描歷史全部清零質(zhì)量趨勢(shì)圖表直接變成一張白紙。我第一次部署就因?yàn)橥祽袥](méi)掛卷升級(jí)容器版本時(shí)把半年的歷史數(shù)據(jù)全弄丟了只能重頭積累。3.2 規(guī)則配置讓審查器學(xué)會(huì)團(tuán)隊(duì)的習(xí)慣環(huán)境起來(lái)之后最難也最花時(shí)間的環(huán)節(jié)是規(guī)則配置。很多團(tuán)隊(duì)在第一步就翻車(chē)原因是把規(guī)則集直接設(shè)為“全家桶”所有插件全開(kāi)于是第一次掃描冒出來(lái)幾千個(gè)問(wèn)題看著就泄氣項(xiàng)目直接被放棄了。正確的姿勢(shì)是“先收斂再放權(quán)”。第一版配置只開(kāi)最重要、最沒(méi)有爭(zhēng)議的規(guī)則控制在團(tuán)隊(duì)一天能清理完的范圍內(nèi)。跑幾天等存量問(wèn)題清得差不多再逐步放開(kāi)更多規(guī)則。這個(gè)過(guò)程本質(zhì)上是在和團(tuán)隊(duì)約定“什么是好代碼”的基線(xiàn)基線(xiàn)定得越低規(guī)則的公信力就越容易建立。ESLint配置我一般長(zhǎng)這樣核心是繼承推薦的規(guī)則集再針對(duì)團(tuán)隊(duì)歷史問(wèn)題追加少數(shù)規(guī)則{ root: true, extends: [ eslint:recommended, plugin:typescript-eslint/recommended, prettier ], parser: typescript-eslint/parser, plugins: [typescript-eslint], rules: { no-console: warn, typescript-eslint/no-explicit-any: warn, typescript-eslint/explicit-function-return-type: off }, ignorePatterns: [dist/, node_modules/, coverage/] }no-console設(shè)成 warn 而不是 error是因?yàn)殚_(kāi)發(fā)調(diào)試確實(shí)需要日志直接禁掉只會(huì)逼著大家寫(xiě)一個(gè)繞過(guò)規(guī)則的 debug 函數(shù)。explicit-function-return-type直接 off這種規(guī)則對(duì)業(yè)務(wù)代碼的收益很低開(kāi)著只會(huì)制造噪音。規(guī)則配置的核心不是越多越好而是每條規(guī)則都要經(jīng)得起“這條能攔下什么真實(shí)問(wèn)題”的追問(wèn)。SonarQube側(cè)的重點(diǎn)是質(zhì)量門(mén)禁。我通常建議設(shè)置四個(gè)維度新增代碼覆蓋率不低于80%、新增Bug數(shù)量為0、新增安全漏洞為0、新增Code Smell級(jí)別不高于A(yíng)。覆蓋率的門(mén)檻看團(tuán)隊(duì)基礎(chǔ)如果項(xiàng)目剛起步測(cè)試很少可以先定60%再逐步往上提。關(guān)鍵是把“增量”設(shè)為目標(biāo)存量垃圾可以慢慢還新增的必須達(dá)標(biāo)這樣團(tuán)隊(duì)不會(huì)產(chǎn)生對(duì)抗情緒。Danger JS的規(guī)則則完全是團(tuán)隊(duì)自定義的“流程紅綠燈”。下面是我常用的dangerfile片段import { danger, fail, warn } from danger const modifiedFiles danger.git.modified_files const createdFiles danger.git.created_files const changedFiles [...modifiedFiles, ...createdFiles] if (changedFiles.length 30) { warn(這個(gè)MR改動(dòng)的文件超過(guò)30個(gè)建議拆分成多個(gè)小PR否則審查質(zhì)量很難保證) } if (danger.git.diff.includes(FIXME) || danger.git.diff.includes(HACK)) { fail(禁止將FIXME/HACK標(biāo)記隨代碼合入主干請(qǐng)先處理或關(guān)聯(lián)跟蹤issue) } const titleRegex /^(feat|fix|docs|refactor|test|chore)(\(.\))?:/ if (!titleRegex.test(danger.github.pr.title)) { fail(PR標(biāo)題不符合約定格式例如 feat(user): 增加用戶(hù)注冊(cè)接口) }這三條規(guī)則分別約束了改動(dòng)規(guī)模、代碼遺留標(biāo)記、提交規(guī)范。注意力的度需要拿捏我見(jiàn)過(guò)有人把規(guī)則寫(xiě)得極其嚴(yán)格從縮進(jìn)到空行全管結(jié)果開(kāi)發(fā)提PR頻繁被機(jī)器人打回怨聲載道。Danger規(guī)則的設(shè)計(jì)原則是“只攔會(huì)導(dǎo)致返工或線(xiàn)上風(fēng)險(xiǎn)的問(wèn)題”風(fēng)格問(wèn)題讓Linter去管這里只管流程和倉(cāng)庫(kù)衛(wèi)生。3.3 接入CI讓每一次提交都被自動(dòng)審查規(guī)則配好之后所有能力要串到CI流水線(xiàn)里才能真正產(chǎn)生約束力。我以GitLab CI為例GitHub用戶(hù)思路完全一樣把reporter參數(shù)從gitlab-mr-discussion換成github-pr-review即可。下面是.gitlab-ci.yml的核心片段stages: - verify code-review: stage: verify image: node:18-slim rules: - if: $CI_PIPELINE_SOURCE merge_request_event before_script: - npm ci script: - npx eslint src --format checkstyle eslint_report.xml || true - REVIEWDOG_GITLAB_API_TOKEN$REVIEWDOG_TOKEN reviewdog -fcheckstyle -nameeslint -reportergitlab-mr-discussion -levelwarn - npx danger ci variables: REVIEWDOG_GITLAB_API_TOKEN: sonar-scan: stage: verify image: sonarsource/sonar-scanner-cli:10 rules: - if: $CI_PIPELINE_SOURCE merge_request_event script: - sonar-scanner -Dsonar.projectKeymy_project -Dsonar.sourcessrc -Dsonar.host.urlhttp://your-server:9000 -Dsonar.token$SONAR_TOKEN -Dsonar.pullrequest.key$CI_MERGE_REQUEST_IID -Dsonar.pullrequest.branch$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME -Dsonar.pullrequest.base$CI_MERGE_REQUEST_TARGET_BRANCH_NAME有兩個(gè)細(xì)節(jié)值得展開(kāi)。第一ESLint命令末尾加了|| true這是為了避免ESLint發(fā)現(xiàn)錯(cuò)誤以非零狀態(tài)退出導(dǎo)致后續(xù)ReviewDog還沒(méi)來(lái)得及把問(wèn)題貼到MR上流水線(xiàn)就停了。真正攔截合并的動(dòng)作放在SonarQube質(zhì)量門(mén)禁上ReviewDog負(fù)責(zé)“把問(wèn)題展示給人看”兩者分工不同。第二ReviewDog只對(duì)diff涉及的行發(fā)表評(píng)論不會(huì)把整個(gè)倉(cāng)庫(kù)的歷史問(wèn)題全部刷到當(dāng)前MR里這個(gè)行為由工具自動(dòng)處理但前提是給SonarQube傳了pullrequest相關(guān)的參數(shù)它才知道要按MR范圍做增量分析。這里再補(bǔ)一句關(guān)于評(píng)價(jià)標(biāo)準(zhǔn)的經(jīng)驗(yàn)自動(dòng)化審查的最終目標(biāo)是把CI變成一條“有觀(guān)點(diǎn)、可解釋、不煩躁”的流水線(xiàn)。我見(jiàn)過(guò)同行把門(mén)禁配到極致任何警告都不放過(guò)結(jié)果團(tuán)隊(duì)每天花大量時(shí)間跟機(jī)器人搏斗真正的設(shè)計(jì)討論反而變少了。工具是服務(wù)人的不是給開(kāi)發(fā)流程添堵的這個(gè)底線(xiàn)要守住。4. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄4.1 審查結(jié)果沒(méi)人看了誤報(bào)率太高這是open-code-review落地過(guò)程中遇到最多的一個(gè)問(wèn)題。第一周大家還會(huì)點(diǎn)開(kāi)ReviewDog的評(píng)論看看第二周開(kāi)始直接把MR頁(yè)面的機(jī)器人評(píng)論折疊因?yàn)闄C(jī)器人說(shuō)的十句話(huà)里有八句是廢話(huà)。排查思路很明確把告警按照“嚴(yán)重級(jí)別”和“是否會(huì)影響線(xiàn)上行為”兩個(gè)維度重新排隊(duì)。級(jí)別為error的問(wèn)題保留在門(mén)禁里warn級(jí)別的問(wèn)題要么刪掉規(guī)則要么存到一個(gè)獨(dú)立的整理清單里不要在MR評(píng)論里刷屏。同時(shí)開(kāi)啟白名單機(jī)制對(duì)第三方SDK的調(diào)用、自動(dòng)生成的代碼目錄直接跳過(guò)檢查這些位置的告警沒(méi)有可操作性報(bào)出來(lái)只會(huì)消耗信任。我給團(tuán)隊(duì)的規(guī)矩是一條審查規(guī)則如果在兩周內(nèi)沒(méi)有攔下任何真實(shí)問(wèn)題那么它就屬于無(wú)效噪音必須下線(xiàn)。工具和團(tuán)隊(duì)之間需要不斷做“信任校準(zhǔn)”只有機(jī)器每次說(shuō)話(huà)都靠譜大家下一次才會(huì)認(rèn)真看評(píng)論。4.2 CI任務(wù)超時(shí)流水線(xiàn)卡成蝸牛接入自動(dòng)化審查之后最直接的問(wèn)題是流水線(xiàn)變慢了。SonarQube全量掃描一個(gè)中等規(guī)模的前端項(xiàng)目首次跑可能要十幾分鐘后續(xù)有增量緩存會(huì)快一些但對(duì)“每次提交十幾分鐘”的體驗(yàn)團(tuán)隊(duì)很難接受尤其是在冒煙測(cè)試、單元測(cè)試都要排隊(duì)跑的階段。解決辦法是拆分觸發(fā)粒度。ESLint和Danger這種輕量任務(wù)每次MR更新都跑它們是秒級(jí)的SonarQube做兩檔處理merge request事件下只對(duì)增量代碼做分析并配置在后臺(tái)執(zhí)行不阻塞流水線(xiàn)commit到主干時(shí)再做一次完整掃描用于更新質(zhì)量趨勢(shì)。另外給SonarQube的JVM堆內(nèi)存調(diào)大一些默認(rèn)配置偏保守2核4G服務(wù)器上建議至少把SONAR_RUNTIME_OPTS里的-Xmx調(diào)到2GB以上分析速度提升明顯。時(shí)間規(guī)劃上還有個(gè)技巧把單元測(cè)試和代碼審查放到同一個(gè)階段并行跑而不是串行排隊(duì)。GitLab CI里只要不聲明needs依賴(lài)同階段的job默認(rèn)并行執(zhí)行總時(shí)長(zhǎng)只取決于最慢的那個(gè)任務(wù)而不是所有任務(wù)的和。4.3 制度很完美團(tuán)隊(duì)就是不執(zhí)行工具層面全部跑通之后真正決定這套方案成敗的是團(tuán)隊(duì)習(xí)慣的遷移。一開(kāi)始推進(jìn)時(shí)我的做法是把審查結(jié)果直接納入MR合并的硬性條件SonarQube質(zhì)量門(mén)禁不通過(guò)點(diǎn)不了合并按鈕Danger規(guī)則報(bào)錯(cuò)流水線(xiàn)紅叉掛著。這個(gè)硬約束把“可做可不做”變成了“不做就發(fā)不了版”。但硬約束不能解決所有問(wèn)題還會(huì)引發(fā)逆反心理。我同步做了一件事把代碼審查的反饋閉環(huán)縮短。任何人提交MR后機(jī)器人幾分鐘內(nèi)給出問(wèn)題列表人工review在一個(gè)工作日內(nèi)完成。意見(jiàn)太多時(shí)允許先合并再補(bǔ)齊技術(shù)債但必須關(guān)聯(lián)一個(gè)跟蹤issue。這樣既保住了發(fā)版節(jié)奏又沒(méi)有把質(zhì)量問(wèn)題變成不可見(jiàn)的歷史賬。還有一個(gè)小技巧是“機(jī)器人先說(shuō)話(huà)”。在MR描述里固定讓機(jī)器人貼一段自動(dòng)生成的質(zhì)量摘要包括改動(dòng)文件數(shù)、新增問(wèn)題數(shù)、覆蓋率變化、是否有遺留標(biāo)記。質(zhì)量信息在人類(lèi)評(píng)審開(kāi)始之前就展示出來(lái)開(kāi)發(fā)者在等評(píng)審的空檔期就會(huì)自己先把低級(jí)問(wèn)題清掉后面人看的時(shí)候自然輕松很多。4.4 常見(jiàn)問(wèn)題速查表現(xiàn)象可能原因排查思路解決建議ReviewDog沒(méi)有在MR評(píng)論API Token權(quán)限不足或reporter參數(shù)寫(xiě)錯(cuò)先本地手動(dòng)跑一次reviewdog看是否能正常獲取diff檢查token權(quán)限是否含api確認(rèn)CI環(huán)境的CI_MERGE_REQUEST_IID存在SonarQube掃描結(jié)果為空project key或source路徑配置錯(cuò)誤查看CI job原始日志中的報(bào)錯(cuò)逐項(xiàng)核對(duì)sonar.projectKey、sonar.sources、sonar.token質(zhì)量門(mén)禁一堆存量問(wèn)題沒(méi)有區(qū)分新增和全部在SonarQube項(xiàng)目配置里查看New Code定義把Leak Period設(shè)置為“上次版本迭代”只考核增量代碼Danger一直沒(méi)有輸出dangerfile語(yǔ)法錯(cuò)誤或觸發(fā)條件不符本地執(zhí)行npx danger ci --text-only驗(yàn)證檢查rules條件里的事件類(lèi)型確保MR事件傳入流水線(xiàn)過(guò)慢SonarQube執(zhí)行全量分析查看SonarQube日志分析耗時(shí)改為MR只做增量分析主干才做全量掃描并行跑各job團(tuán)隊(duì)不點(diǎn)機(jī)器人評(píng)論評(píng)論太多太碎全是低價(jià)值信息統(tǒng)計(jì)一下機(jī)器人評(píng)論的類(lèi)型分布收斂規(guī)則集把無(wú)害告警轉(zhuǎn)為靜默聚合只在門(mén)禁攔截時(shí)上報(bào)5. 寫(xiě)在最后的個(gè)人體會(huì)open-code-review 這套方案做下來(lái)我最大的體會(huì)是代碼審查工具化不是要取代人的判斷而是要把人的判斷力留給真正難的問(wèn)題。機(jī)器擅長(zhǎng)的是在幾千行代碼里穩(wěn)定地、無(wú)情緒地篩出符合或違反規(guī)則的那一列而團(tuán)隊(duì)真正需要的是在MR被淹沒(méi)之前讓一個(gè)人能專(zhuān)注地回答“這個(gè)方案到底行不行”。最后分享一個(gè)小處理我在最后一道人工審查環(huán)節(jié)里始終保留一個(gè)開(kāi)放問(wèn)題——請(qǐng)?jiān)u審者給出至少一條可執(zhí)行的建設(shè)性意見(jiàn)而不是簡(jiǎn)單回復(fù)“通過(guò)”。如果所有人都覺(jué)得代碼完美那大概率是審查沒(méi)有深入。這個(gè)要求沒(méi)辦法靠機(jī)器人強(qiáng)制執(zhí)行但當(dāng)我們把審查變成一種習(xí)慣而不是一種任務(wù)時(shí)團(tuán)隊(duì)的代碼底座會(huì)越來(lái)越穩(wěn)。后續(xù)你可以在自己的技術(shù)棧里繼續(xù)擴(kuò)展這套方案比如接入更多語(yǔ)言的Linter、把審查規(guī)則做成npm包在多個(gè)項(xiàng)目間共享、甚至在倉(cāng)庫(kù)內(nèi)沉淀一份“歷史踩坑手冊(cè)”供新人快速建立上下文。技術(shù)工具會(huì)換代但“先機(jī)器篩查、再人審重點(diǎn)”的思路放在任何團(tuán)隊(duì)都值得一試。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久国产精品熟女人妻| 色色婷婷丁香| 黑人综合色| 亚洲精品视频二区| 国产无套粉嫩白浆在| 美女t无毒不卡不卡| 插老姨肥穴| www.狠狠操| AAAAAAAAA黄片| 久久嫩草| 另类图片欧美激情综合| 天天天堂影视日韩亚洲91| 吻戏激情性巴克| 人人妻人人爽 97人人看碰人免费公开视频| 亚洲骚男同com| 亚洲性少妇| 嗯啊不要啊在线 | 69超碰综合| 久久AV无码网址| 免费精品国偷自产在线在线 | 国产九九九九九九九九| 日韩在线欧美精品一区二区| 超碰人妻97| 2020天天色综合| 91强在线播放| 青女在线| 欧美精品久久| 性色av一区二区| 亚洲人在线| 偷拍网站久久男女男| 亚洲无码一区二区三区三州| 免费看毛片操穴| 美女网站黄页| 3028国产精品| 亚洲五月丁香花狠狠干一区二区三区| 亞洲久久直播| h无码动漫在线观看| 中文字幕乱在线伦视频中文字幕乱码在线 | 丁香五月天啪啪| 久久精品店| 欧美日韩性爱电影在线| 四虎午夜影院| 久久中文字幕一区不卡| 青草草免费网站av| 国产高清26uuu| 日韩欧美成人午夜福利| 国产人妖视频一区在线观看| 最近2019中文字幕国语免费版| 韩国成人精品久久久免费看| 色青青久久影视| 日韩丰满熟妇| 人妻精品一区二区在线| 天天插天天操| 曰韩欧美国产传媒麻豆第一区| 婷婷色导航| 亚洲精品男人的天堂| 婷婷爱五月| 少妇二级| 精品一区二区三区四区女| 欧美国产一区二区三区麻豆传媒 | 亚洲中文字幕精品一区| 亚洲av国产av综合av卡| 国产一级黄色片在线观看| 国产后入清纯| 欧美啪啪啪91| 人妻9117c| 久久毛卡| 久久久久久久极品香蕉视频| 久久m| 91bbbbbb| 国产精品久久久久亚洲av| 手机在线观看不卡无码av| 九九热精品在线| 亚洲欧美综合色| 欧美韩国你懂得在线 | 天天色黄色影院天天操| 亚洲色诱惑| 色妺妺在线视频| 91激情网| 九九九九久久久久| 免费精品中文字幕| 韩国女主播青草福利视频| 久久久久亚洲精品| 性感美女91影视| 日本一区二区三区四区五区六区七区八区九区| 国产精品亚洲色婷婷久久久| 天天干2019| 天堂精品| 手机在线人成免费视频| 日本不卡码黄色| 久久久久久久国产a∨| 九九色精品| 亚洲日韩青青草色月| 91在线国产后入风骚翘臀美女素人| 9久精品| 国产AV激情无码久久无码| 丰满人妻-区二区三区免费| 成人热久久精品| 少妇天堂| 99久久久er直播网址| 伊人久久国产免费观看视频| 国产精品剧情| 综合久久中文字幕综合日韩精品| 福利一级版子| 国产熟女完整版中字| 91亚·色| 天天综合-91入口| 亚洲国产成人精品无码专区| 精品人妻一区二区乱码一区二区| 思思久热在线精品66| 免费一级欧美片片线观看| 欧美在线啊啊啊 | 丁香六月天| 91欧美性| 秋霞免费AV| 91美女看B| 亚洲国产一区二区入口| 美欧老女人97| 国产亚洲精品美女久久久| 一区二区三区精品黑丝白丝酒店对鸡 | 伊人久久亚洲色欲综合网站| 欧美久久久| 午夜舔阴达高潮视频免费看| 欧美激情 日韩精品| 91人妻人人澡人人爽人人精品| 亚州国产精品乱| 国产999精品久久久| 人人插人人搞人人操| 不卡一区视频| 亚洲最大的综合性av| 99久久9| 日本一区二区不卡精品| 综合第一页| 亚洲宅男天堂| 韩国一级做a久久久久| 伊人久久青青草| 超碰在线一区二区| 国产农村妇女精品一二区| 国产白丝av| 九九热免费国产视频婷婷伊人五月 | 啊啊啊啊啊好舒服视频| 亚欧高清v| 丝袜 中出 制服 人妻 美腿 中文字幕| 欧美性爱另类综合| 日韩精品-原创伙伴| 五月天综合网| 日韩av无码网站| 丝袜喷水在线| 免费毛片在线播放| 丝袜AV一区二区三区| 日比av无码| 玖玖综合.com| 美国aaaaa一级黄片| 青草伊人网| 久久久蜜桃一区二区三区| 97爱综合| 久久久神马影院| 久久草大香蕉| 人妻一二三区| 青青草AV色| 91亚洲精品青草| 国产欧美精选激情视频| 99999国产精品| 欧美亚洲高清不卡| 最新欧洲欧美日本激情网站| 草莓精品视频在线免费观看| 超碰九7| 91成人社区| 日韩AV一区二区三区四四| 天堂无码| 蜜臀中文无码午夜| 亚洲欧美九九九| 国产久久久久久久久一区二区| 久久中出| 少妇精品| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 亚洲国产精品久久久男人的天堂| 99青草| 欧美极度丰满熟妇hd| 1区2区3区视频| 日日夜夜青青草母狗| 久久在肏| 97超碰9| 超碰在线综合97| 亚洲精品一二三四区| 人人扣人人操| 99在线观看| 91搞逼视频| 99无码狠狠久久| 很狠操| 亚洲男人的天堂AV| 欧亚第一综合网| 嗯啊啊啊轻点视频 | 日韩精品9区| 暖暖精品二区三区观看| 96AV精品| 开心激情站| 日韩激情中文字幕有码| 综合久久六月久久婷婷| 日本 色 导航| 成人七区| 日韩无码a片| 日韩黄色av中文字幕| 97干色| 亚洲同性aV综合| 丰满熟女人妻一区二区三五十一路| 蜜臀久久99精品| 国产精品久久久蜜臀| 国产欧美伊人| 亚洲欧洲视频小说在线观看| 天堂性色| 黄页av| 国产尤物在线三区| 男人的天堂2019| 日韩有码专区| 国产性爱在线视频一区二区| 高清无码 国产精品| 岛国片在线播放| 欧美传媒| 中文字幕一区电影在线观看| 日韩成人性爱电影在线播放| 国产精品老师| AV天天在线观看| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 色5月婷婷| 99热| 美女黄页| 任你干在线视频| 九七人妻在线| 99超碰碰| 亚洲精品成人动漫在线| 日韩精品碰碰| 99这里有精品视频| 美日韩一卡二卡三卡免费人妻精品| 久久综合18p| 少妇一区二区三区在线观看| 天天射夜夜| 欧美青青草视频| 97视频免费播放| 日韩欧美大片免费高清啪啪| 国产精品视频麻豆入口| 激情综合亚洲| 精品人妻夜夜草| 好看的久久不射无码影视影院| 啊啊啊啊啊啊啊网址在线观看| 久9爱经典视频 | 天天淫人人妻日日色| 91视频成人福利网站在线一区| 久久亚码| 国产熟女精品一区二区| 久久这里是精品| www久久99| 久久一二区四| 91丝袜人妻| 三级日韩一区二区三区| 日韩成人大片一区二区| 九九热精彩视频| 天天综合中文字幕 91| 操人人| 91超级碰| 国产第二页| 97欧美综合| 国产成人免费观看在线视频| 中文字幕精品丝袜| 99热线麻豆 | 亚洲一区中文字幕一区| 亚洲美女30b| 99热这里只有精品18| 国产日逼视频| 白丝少妇一区二区| 97欧美视频| www色日本| 中出789在线视频| 东北熟女91| 日本操BAV| 色 婷97| JuliaAnn丝袜熟女系列| 俺去俺来也在线www| 78久久久| 黑人白女精品一区| 亚洲男人天堂2012| 国产久久久久久| 婷婷五月天成人网| 激情婷婷黑人91| 欧美日韩一区二区三区四区蜜桃| 10000部十八禁看电影| 久久78| 丁香六月婷婷久久综合| 夜夜无码| 超碰99在线观看| 人妻人久久精品中文字幕| 天堂俺去俺来也www久久婷婷| 800zy一区二区| 狠狠超| 性爱动态120秒| 91熟女在线| 亚洲色吧网| 91天美免费| 色五月综合网| 亚洲精品97久久| 久热伊人99re| 免费视频在线一区二区不卡| 青青草亚洲一区| 白嫩少妇| 天美一二三在线观看Av| 免费a级毛片av无码久久精品中文字幕| 人妻一区二区三区| 中文字幕91页| 久久久性少妇| 97中文天堂| 麻豆久久精品亚洲精品88| 久久精品视频久久久| 中文字幕精品探花视频| 神马午夜久久久| 亚洲第一精品在线视频| 亚州精品人妻一二三区| 五月天婷婷影院| 久久78| 欧美天天谢综合网| 久久久久国产无av| 极品白嫩美少妇在地板上位骑射淫水泛滥| 美日韩一卡二卡三卡免费人妻精品| 免费观看日本操逼视频| 东京热伊久| 91黑丝露脚| 一区AV| 无码久| 青草av在线| 日日夜夜精品视频| 亚洲精品黑丝| 操人妻少妇中文| 国产一区免费午夜视频| 国内外毛片在线观看| 九九综合色| 亚欧高清| 青娱乐91| 久久噜噜噜精品国产亚洲综合| 五月丁香亭亭| 亚州免费啪啪视频| 屁股久久久久久| 色婷婷婷五月天激情四射| 黄片无码在线制服| 国产精品精品系列在线观看| 亚洲青青草| 婷婷五月天激情网| 精品久久久高清无码| 久久男人| 日韩八十路老熟女| 91视频观看网站| 日韩精品亚洲专区在线影视| 国产精品高清2021在线| 九九九九精| 亚洲美女黄色| 九九九九免费高| 久久精品人体| 中文字幕 国产区| 中文字幕一二区二三区人妻专区| 五月亭亭六月丁香| 99re6在线视频播放免费精品| 精产国品一区二三产品| 深夜啪啪啪视频免费| 91精品人妻电影| 成人无码在线视频网站| 9Ⅰ老熟女| 亚洲a色| 国产精彩女在线观看视频| 厕所偷拍在线| 日韩欧亚太美不卡| 91国产丝袜足交精品视频| 国产超碰人人操| 操逼逼福利视频| 日本欧美一区二区三区视频麻豆| 99久久99久久免费精品蜜臀| 大学生美女口爆| 亚欧美综合网| 久久丝袜| 伊人加勒比| 97综合激情| 99热在线只有精品| 欧美,日韩,中文,另类| 久久久禁| 五月天亚洲网| 精品人妻一区二区三区四区| 亚洲资源吧| 蜜臀无码一区二区| 久久久精| 2017天天插| 超碰97伊人| 天天欧美| 一区二区三区国产在线播放| 日韩字幕一区| 黄色电影在线播放综合网站| 午夜爽爽爽在线观看永久入口姬片| 久操网址| 亚洲aV无码成人在线观看| 国产一区二区av综合| 久久久久国产精品喷潮免费观看臀 | 欧美牲| 99热这里只有精品1| 爱丝福利| 老司机免费视频在线91| 97久久综合网| 国产精品一二三区18| 欧美劲爆视频一区二区| 亚洲1区2区三区高清中文字幕| 亚洲男人在线观看天堂| 97久久网| 亚洲国产麻豆一区二区三区| 超碰精品在线| 九久久九精品视频| 欧美在线视频播放| henhen91| 国产精品无码久久久久2025| 五月丁香啪啪网| 99色悠悠| 日本一卡二区在线| 亚洲欧美黄| 俺去啦俺来也久久综合| 欧美性爱第一区| 丁香六月激情综合| 国产人伦精品一区二区三区| 久久久久密臀视频| 超碰久超碰久| 亚洲阿v天堂无码z2018| 欧美激情综合| 中文字幕AV片| 亚洲超碰97| 91精品久久久| 激情综合五| 国产精品欧美激在线| 久久久9 9 9精品| av黄图片在线观看| 亚洲Av无码成人精品国产| 熟女人妻av在线资源,黄色的资源 粉嫩国产精品久久粉嫩 | 人妻熟女午夜精品在线| 亚热日本熟女| a级免费在线观看| 综合久久六月久久婷婷| 蜜桃久久久久久| 亚州五月| 成人性爱av.com| 美女尤物福利视频| 欧美BT 亚洲色图| ji熟女.com| 五月天激情小说| 97精品中文字幕| 日本色色色网站免费看不卡| 凹凸视频特色日本特黄| 色悠久久久av| 熟妇的味道HD中文字幕| 内射白嫩美女| 久久久久女教师免费一区| 在线视频免费播放一区| 嗯嗯,好大,好爽,好骚 | 18岁禁 茉莉成人久久| 人人妻人人爽| 久久东京国产精品视频| 夜夜骑操视频| 免费一级性爱久久| 亚洲天堂另类小说男人| 国产精品香蕉| 97干色| 国产99热| 97综合激情| 凹凸视频特色日本特黄| 人妻 欧美亚洲| 日本精品无码三级网站| SUV一区二区在线看| 国产狂喷潮在线精品| 啊…啊…操我用力操我| 久久无码精品| 啊啊啊啊嗯嗯嗯用力好爽 | 91殴美| 成人五月香网在线| 国产成人五月天丁香花| 99视频内射三四| 精品人妻一区二区三区四区| 操一区| 98超碰欧美| 国产精品99久久久www| 夫妻AV网站| 亚洲综合婷婷| 秋霞Av理论一级在线| 99这里有精品| 欧美区亚洲区偷拍区| 91成人在线| 波多野结衣一级视频| 欧美第二页午夜| 国产吞精a级片激情电影| 久久华人网| 色综合天天| 男人天堂网站| 超碰夫妻97| 日韩一级片在线看| 天天做天天爱| 人人噜夜夜操| 大地资源在线观看中文第二页| 黄色交缠性感爆操91国产精品免费一区二区三区 | 欧美亚洲影视| 伊人五月天激情| 97亚洲自在精品在线观看| 婷婷丁香五月综合| 91被操| 精品无码产区一区二| 五月天社区| 国产又黄又爽| 蜜臀无码一区二区| 又黄又爽在线观看视频| 最新岛国大片| 久操国产在线| 人妻少妇精品久久久| 大香蕉久| 欧美一级黄片视频在线| 欧美九九九九九| 国精综合一二三区影视| 亚洲综合色婷婷| 亚洲一区日韩精品| 高清视频一区| 97bbn| 亚洲黑丝在线| 逼逼逼逼操操操操操操操操操午夜剧场 | 啊啊啊啊啊啊啊啊在线观看| 久久久111| 婷婷激情啪啪| 中文自拍欧美影视| 亚洲国产成人精品999| 亚洲第一男人天堂| 蜜臀99999| 亚洲婷婷五月天| 久久精品国产亚洲AV嘿嘿| 久久超碰日韩精品| 亚洲天在线| 神马久久啊啊| 日韩AV中文字幕电影| 婷婷色色五月| 欧美一区二区亚洲天堂| 人人操人人操人人操人人操人人操人人人11.CM | 日韩啪啪视频| 人妻夜爽夜夜爽| 97操在线| 97超碰巨乳| 亚州操操穴网| 五月综合激情网| 国产日本久久免费精品| 久久精品中文字幕无码l| 国内毛片欧美香蕉精品| 天天综合网日韩| av影院十区| 制服丝袜第二页| 91欧美另类| 久久伊人网视频一区二区三区| 丁香激情网| 这里都是精品在线观看| 欧美性爱视频免费一区一A| 又粗又长又爽在线观看| 欧美激情性爱视频网站| 无码人妻一区二区三区色欲aⅴ| 2017天天拍大香蕉| 蜜桃久久一区二区| 97视频在线| 美女啊啊啊啊啊| 亚洲高清自拍| 国产自制av蜜乳| 一区二区三区国产在线播放| 欧美性天天| 老司机福利青青草| 最新av网站在线观看| 亚洲码在线中文在线观看| 一中国女人毛片水真多| 欧美大香蕉久| 日韩欧美中文| 综合色啪| 蜜臀久久99精品久久久久久久久| 蜜桃久久久久久久| 1204av韩国| 亚洲综合情色| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 中文字幕一区二区三四五区日日骚| 欧美夜夜骑视频| 欧美色图97| 日韩久射综合| 国产在线综合福利网站| 91香蕉视频在线观看免费| 亚洲系列第一页| 91狼人| 啪啪91| 欧美暴力猛交| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 国产视频大全| 亚洲精品国产拍免费91在线| 亚洲欧美另类小说| 干干干天天| 91色久| 超碰激情808| 91美女看B| 黑人性欧美| 日婷婷| 亚洲AV无码乱码在线观看性色| 激情综合97| 媚薬在线视频麻豆| 九九热av| 上海一级黄片| 中文伊人大香蕉视频| 91在线/欧洲| 日韩小电影| 日日操丁香五月天| 91oumei| 夜夜青青无码影院| 夜夜嗨视频| 天天搞在线综合网| 内射白嫩美女| 97视频免费在线| 超碰在线人妻中文字幕| 亚洲色啪| 国产1727欧美| 另类亚洲一区二区三区| 五月天色色色| 偷拍色图| 手机看片日韩人妻| 九九在线视频| 久肏视频字幕| 老熟女乱子伦中文字幕一区二区| 蜜臀久久99精品久久久老,,| 欧美 日韩第一性色| 秋霞网—男女啪啪亚洲免费体验区| 99热免费| 激情另类激情| 欧美久久伊人| 九九九九九九九九九九九九九九九女| 韩国一级做a久久久久| 国产自偷自拍一区| 亚洲91大片| 操人人| 九月丁香婷婷| 91美女网站| 操91| 高颜值美女口爆高潮浪叫| 九月丁香综合网| 中文字幕人乱码中文字的预防方法 | 操逼日批| 极品少妇99| 香蕉欧美| 亚州成人a∨| 国产日本一区二区三区蜜臀在线观看| 五月天大香蕉| 91亚洲欧美激情| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 午夜激情成人在线观看| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 中文字幕福利视频一区二区三区在线观看| 囯产乱伦一区二区三女| 国产九九九九九九| 国产精品久久伊人| 熟妇无码视频三区| 亚洲欧美经典一区二区| 9精品久久久久| 色婷婷狠狠| 9久久久久| 欧美人妻精品| 婷婷av在线中文字幕| 久久av网| 操操逼操操逼操操逼逼| 亚洲天堂久| 国产精品一区二区黄片| 欧美天天干| 伊人影院在线理论播放| 国产成人无码a| 天天干人妻| 亚洲黄网在哪免费看| 天堂av最新电影网| 99热精品在线观看| 日韩免费中文字幕视频| 欧美青青视频| 大香蕉久| 婷婷干黄色| 青青草久久| 狠狠色婷婷| 偷拍 欧美 日韩| 精品一二三区女同| 九九性视频| 国产午夜精品理论片a大结局| 91在线丝袜视频| 俺去俺来也在线www| 麻豆精品.欧美精品.日韩精品.| 欧美日韩国产中文精品字幕自在自线,| 中文字幕天堂在线| 日韩av电影网站| 91美女丝袜诱惑视频| 国产精品视频91久久| 日本免费一区二区不卡| 美女超碰978| 福利操逼| 日日夜夜摸| 98福利在线视频| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 9九九国产| 日本天堂网| 在线观看国产黄色| 日韩成人私密一级精品av| 国产熟女自拍| 国产福利夜| 成人精品在线| 思思热国产在线视频| 伊人九九九| 色踪合AV| 嗯嗯,啊啊,国产精品| 欧美人人AAA| 国产日韩无码一区二区三区久久区| 天天热精品| 99热在线不卡| 97资源制服丝袜| 久久精品国产亚洲AV高级北京| 麻豆精品一区二区三区四区免费观看| 91色s| 诱惑人妻欧美一区在线播放| 91黑丝在线播放| 亚洲古典另类欧美在线| 亚洲高清无毛一区二区| 91丝袜| 日日97| 国产风韵犹存熟妇三区| 中文字幕久久精视频久久大全| 亚洲日韩一区电影| 这里都是精品在线观看| 日韩乱伦影音先锋| 欧美日韩国产另类综合| 亚洲中文字幕在线视频一区二区| 欧美性爱一区二区三区| 日韩欧美~中文字| 久草精品一区| 色男人色天堂东京热| 亚洲精品欧洲精品| 91亚洲青青草原精品1区| 亚洲男人天堂2019| 色婷婷六月| 亚洲精品成人激情在线| 久久国内| 黄aaaaaaaaaaaaaaaaaa色网站| 顶级丝袜熟女一区二区三区| 无码天天操| 国产高清精品一区二区三区毛片| 性爱视频免费网址| 欧差乱伦二三| 午夜福利国产欧美日韩夜夜| 亚洲无码 国产无码| 国产91影院| 国产福利一区二| AVE乱伦| 国产最火爆久久国产网站网站| 国产家庭乱伦表演| 人妻献身系列第54部| 国产三级在线现体验区| 啪啪视频亚洲第一| 精品国产人成在线| 深夜激情无码| 综合久久中文字幕综合日韩精品| 色色丁香| 有码免费观看| 妇人噜噜| 97综合久第一页| 久久久极品| 欧美组图日韩亚洲中文字幕| www.亚洲黄色| 啪啪AV导航| 一级免费啪啪片| 欧美日韩高潮喷水91| 欧美日韩淫加| 色阁阁AV综合网| 亚洲高潮影院| 国产精品免费久久久久久久久久| 四虎午夜影院| 亚洲欧综合另类无码一区| 日本黄 R色 成 人网站| 久久亚洲影院一区二区| 淫骚熟女一区二区三区| 春色综合免费| 色图综合网| 日韩乱中文| 亚洲综合五月天| 精品国产91久久久久久一区黄无| 久久人人爽av亚洲精品天堂桃色 | 91chinese在线| 国产天天骚| 欧美极品色| 久久男人的天堂| 95自拍视频在线观看| 九九人人操| 欧美色图私拍91| 色婷婷日韩精品一区二区三区| 熟女探花啪啪| 无遮挡h肉动漫在线观看| 熟妇人妻一区二区三区| 亚洲欧美综合网站| 中文字幕精品探花视频| 久久‘黄片视频| 91九色丨国产丨爆乳| 校园春色美腿丝袜 | 啊啊啊不要嗯嗯在线观看| 欧美激情专区| 国产人妻天天干精品| 中文字幕视频2区| 日韩无码第3页| 岛国激情视频在线观看| 国产农村妇女一区二区| 97久久国产精品| 一级二级三级黑人无码| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 欧美久久久15P| 夜夜嗨一区二区三区直播内容| 国产亚洲日韩欧| 99无码精品| 91人妻久久久久久久久久久久久| WWW.操逼.COM| 色播五月丁香| 性色高清..……| 先锋激情∨在线视频播放| 亚码激情| 可乐操在线| 91精品无码人妻系列| 九九九九日本 | 色女综合| 人人搞人人插人人操| 婷婷丁香六月天| KK色在线影院| 91在线精品| 超碰98综合网| 天天插夜夜操| 国产a级精品| 男人的天堂 在线一区| 婷婷五月成人| 精品人妻15区| 五月天色图| 舔人妻中文免费视频| 国产黄色 A 片免费看| 亚洲老司机123专区| 性爱视频啪啪啪啪| 麻豆天美传媒在线视频天堂| 污色区网站| 国产精品乱人伊人网| 另类图片天天影视| 久久五月份| 97天堂| 亚洲天堂东京热| 97精品久久| 99超碰色| 超碰在线人妻中文字幕| 91jk色拍| 日韩激情小说一区二区| 天堂伊人久久| 欧洲一级性爱视频在线观看| 麻豆黄站| 色色99| 99re超碰| 欧洲亚洲人妻无码中字久久三区四区| 日韩人妻一区二区| 亚洲色图加勒比| 国产成人精品必看| 不卡一区视频| 亚洲综合色婷婷| 欧美97在线欧| 久久99手机免费视频| 精品国产一区二区三区香蕉欧美| 久久久久久久久久久久欧美日| 国产成人精品日本视频| 東南亚性呦成人伦理资源在线视频 | 91久久久久| 午夜天堂精品久久久久91| 国产精品久久久啊| 金典av| AA丁香综合激情| 思思热一热婷婷热一热| 97操综合| 91色综| 国产精品亚洲高清在线| 亚洲双插| 久久av色| av天堂手机版追回| 91亚洲电影| 久久久男人的天堂| 青青草日韩无码| 国产最新小视频在线播放下载 | 操逼视频亚洲| 亚洲 欧美 色图| 美女诱惑在线一区| 亚洲av乱伦色图网站| 亚洲av青草久久一区二区| 色欲色香天天天综合网www-亚洲综合国| 牛牛aV| 日韩精品在线视频,日韩精品……| 97超碰久久色| 狠狠久久亚洲欧美专区| 乱伦1色页| 综合网欧美| 嫩草黄页| 欧美性,色九九| 99操逼| 九月激情婷婷| 激情综合网亚洲| 国产蜜臀在线| 精品久久久久黄少妇| 久久久97| 3P乱轮视频| 婷婷操视频| 久久久久女教师免费一区 | 午夜人人操| 伊人九九| 一摸二插三插| 97日视频| 在线观看AV不卡| 国模吧 一区二区三区| 久思思热视频在线观看| 欧美人黑A片无码免视费| 91欧美情色| 久久 久久国内精品亚洲| 国产农村妇女精品一| 婷婷中文字幕| 日本午夜精品理论片A级APP发布| 精品国产无码中文| 思思热国产高清| 欧美天天综合在线| 青青草中出视频| 啊啊啊啊啊好舒服视频| 1204av韩国| 超碰在线人妻不卡| 翘臀vidoes| 粉嫩国产精品久久粉嫩| 99视频精品| 欧美一级A片在线看视频性色| 一牛影视成人片免费| 国产成人亚洲精品无码最新在线| 99操逼| 精品国产乱码久久久| 国产农村一一级特黄毛片| 国产中文精品一区二区在线观看| 老熟女乱伦片| 欧美999| 久久色网| 97超碰色五月| 午夜天堂精品久久久久91| 免费一级欧美片片线观看| 新婚人妻扶着粗大强行坐下| 黄片色区软件| 夜嗨影院| 在线国产一区二区av| 国产a级午夜毛片| 成年人一级黄色毛片大全在线观看| 无码操逼网| 九月丁香综合网| 亚洲女毛多水多21P| 最新日韩黄片| 天天插天天操| 99在线免费视频| 五月丁香啪啪啪| 超碰亚洲97| 91丝袜在线观看视频在线观看| 日韩AV中文字幕电影| 99999精品成人| 啊啊啊啊啊好大好舒服想要| 成人在线永久| 中文字幕第95页| 国产精品伦理| 日本韩高清无砖码22o| 日本黄色精品专区网站| 韩国一级AAA| 日韩国产中文字幕| 射 色综合| 1二区9| 一本色道久久综合狠狠操| 日日摸日日碰夜夜爽视频| 欧美精品三级黄片| 午夜福利av电影在线| 国产人妻天天干精品| 中文字幕 人妻不满 在线视频| 天美麻豆精品视频99| 国产五码丝袜屁眼| 超碰久草| 国产女大学生AV| 日韩免费大片一级播放| 亚洲中文字幕av| 尤物av网站| 91 国产丝袜在线播放-百度| 精品免费囯产一区二区三区 | 亚洲精品日日夜夜52| 欧插网站| 色亚州人久干视频在线观看免费版| 97伦综合| 亚洲高清无毛一区二区| 丁香五月激情综合国产| 日本亚洲vr欧美不卡高清专区| 97在线观看免费视频l| 东北女人高潮视频| 啪啪啪东京| 99精彩视频| 99re99视频在线免费观看| 91狠狠综合久久| 翔田千里一区二区三区奶水| 丁香久久| 激情人妻另类| A 天堂| 久99热| 精品一二三区女同| 永久免费观看的毛片的网站| 强奸乱伦av电影| 国产精品久久久视频| 91亚.色| 一级毛片久久久久久久女人18| 人妻少妇色综合| 国产一区二区精品在线视频| 国产精品com| 99热超碰在线| 在线情色电影 91大| a级免费在线观看| 久久婷综合| 97精品在线| 成人AV超碰免费在线| 又大又白奶子| 精品少妇一区二区三区| 911av网站免费观看| 亚洲AO在线| 亚洲在线欧美| 狠狠干综合| 91精品少妇搡搡搡| 2020中文在线一区二区三区| 中文字幕视频2区| 亚洲国产精品无石码久久| 国产女人成人精品视频| a片亚洲一本通视频| 嫩草在线视频| 91九九九逼| 久久国产AⅤ| 久热色情精品| 99热| 有码免费观看| 亚洲学生妹高清av| 亚洲欧美一区二区三区在钱蜜桃| 午夜啊啊| 无码又爽又硬又激情免费视频 | 日产狠狠干| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 亚洲AV乱码专区国产噜噜亚洲 | 最新一二三区视频| 蜜臀99久久| 精品射1999| 亚洲 中文字幕 精品| 青青草久久一区网| 手机在线免费看的av| 日han少妇无码| 人人艹亚洲| 99re6国产精品99re| wwwcaobibi| 亚洲 日本 不卡| 校园春色综合| 26uuu最新| 天天综合网入口~91| 强奸乱伦大香蕉| 四虎精品一区| 色五月大香蕉| 九九九九热| 北京美女一区二区| 免费簧片在线观看| 9美女超碰在线免费观看| 992这里有精品| 亚洲中文字幕精品一区| 性生活无遮挡纯毛片在线看| 日本www操操操| 日本大香蕉综合网| 国产精品经典一卡久久久| 俺去啦俺来也久久综合 | 中文字幕jul-617人妻熟女| 精品久9| 99国产精品免费| 国产成人无码高清| 欧美翘臀视频网站一区二区三区| 男人的天堂激情| 操高情无码| 啊啊啊免费| www.男人天堂| 激情综合网激情五月天| 日本成熟少妇A∨网站| 91女优在线观看 | 大香蕉免| 天天干天天狼在线视频| 色欲av国内精品久久久久久| 中出789在线视频| 九色婷婷| 国产乱色国产精品免费视| 亚洲色图欧美色18直播在线| 欧美亚洲丝袜美女电影| 国产黄色av大片网站| 97在线免费| 欧美在线干| 嗯嗯啊啊用力视频免费| 国产在线精品偷| 成人小说另类在线| 97久久久久久久久久| 天堂国产AV| 天天综合精品| 综合操逼| 女性喷水高潮在线观看| 欧美综合在线第一页| 中美日韩毛片| 亚洲综合色网| 国产精品久久久无码AV网站| 亚洲天堂精品日韩电影| 亚洲交换| 青青草国产盗摄一二三区| 国产精品一二三区福利| 强奸乱伦大香蕉网| 摸奶性爱视频网站在线免费播放| 伊人宅男大香蕉| 中文字幕视频免费| 超碰97资源中文字幕| 婷婷五月天丁香| 激情干在线| 欧美aa一级片| 国产v亚洲v日韩v欧美v片另类| 亚洲天堂少妇| 超碰在线第一页| 91电影色诱| 97在线免费看| 欧美亚洲日韩人妻在线观看| 人人做人人妻人人夜视频| 手机在线A片| 99re热有精品视频国产| 精品一级毛片在线观看| 国产AV中文| 欧美色综合网| 好湿好紧视频| yazhouzaixian| 久久精品中文字幕女同| 91真人天天在线| 丰满搜索结果 -第18页- 久久高清无码| 人人喜人人妻| 天天日少妇逼AV| 五月天偷拍| 超碰99在线| 狠狠五月天| 九九色热| 麻豆国产尤物AV| 天天日天天舔天天喷天天射| 狠狠综合网| 丁香成人五月天| 成人看片网站| 这里只有精品视频在线| 色婷婷综合网| 亚洲天堂男人在线| 亚洲色图激情小说| 激情四射婷婷四五月天| 久久国色天香香蕉| JULIA人妻风俗店中出电影| 99热精品青草在线| 九九热超碰97亚洲最新香蕉| 东北女人的毛片| 欧美A√综合网| 校园春色亚洲无码| 久草成人影片| 欧美成人精品欧美一级乱黄一区二…| 天天干夜夜鈤| 久久久新亚洲AV| 日韩操逼性鲍|