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

ARTICLE DETAIL

資訊詳情

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

無(wú)可挑剔的代碼質(zhì)量:impeccable聚合工具與CI集成實(shí)踐

無(wú)可挑剔的代碼質(zhì)量:impeccable聚合工具與CI集成實(shí)踐 拿到這個(gè)標(biāo)題的時(shí)候我第一反應(yīng)是哪個(gè)項(xiàng)目敢起名叫“impeccable”這詞翻譯過(guò)來(lái)是“無(wú)可挑剔”口氣不小。但轉(zhuǎn)念一想干我們這行的人多少都有點(diǎn)完美主義傾向尤其在代碼質(zhì)量這件事上。我見(jiàn)過(guò)太多項(xiàng)目功能做得挺全一開(kāi) code review 卻慘不忍睹——縮進(jìn)風(fēng)格五花八門、死代碼一堆、測(cè)試覆蓋率形同虛設(shè)。所以當(dāng)我在某次技術(shù)分享里看到這個(gè)項(xiàng)目名時(shí)反而來(lái)興趣了它到底做了什么才敢說(shuō)自己“無(wú)可挑剔”這個(gè)項(xiàng)目本質(zhì)上是一個(gè)代碼質(zhì)量規(guī)范與檢查聚合工具目標(biāo)是讓團(tuán)隊(duì)的代碼在提交之前就達(dá)到“挑不出毛病”的狀態(tài)。它把散落在各種工具鏈里的檢查邏輯——格式化、靜態(tài)分析、依賴安全、測(cè)試覆蓋率——統(tǒng)一到了一套配置里并且嵌入了 CI 流程。它的價(jià)值不是引入一個(gè)新框架而是把團(tuán)隊(duì)里“靠人自覺(jué)”的那部分質(zhì)量工作變成了“機(jī)器強(qiáng)制”的自動(dòng)化流程。適合正在為代碼規(guī)范扯皮、review 效率低下、線上 bug 反復(fù)出現(xiàn)而頭疼的團(tuán)隊(duì)參考。我花了幾天時(shí)間把它完整跑了一遍并且在一個(gè)模擬項(xiàng)目里實(shí)際落地。下面把我拆解它的思路、踩過(guò)的坑、以及最終沉淀下來(lái)的那套配置方案一步步寫出來(lái)。1. 整體設(shè)計(jì)思路把“完美”拆成可執(zhí)行的規(guī)則先說(shuō)結(jié)論任何一個(gè)號(hào)稱“完美”的工具背后都不是魔法而是一堆可量化、可執(zhí)行的規(guī)則堆出來(lái)的。impeccable 這個(gè)名字看著抽象但它做的事情非常具體——把“代碼質(zhì)量”這個(gè)模糊概念拆成了四個(gè)維度然后逐個(gè)擊破。1.1 四個(gè)質(zhì)量維度格式、靜態(tài)、依賴、測(cè)試我拿到這個(gè)項(xiàng)目后先看了它的規(guī)則配置文件結(jié)構(gòu)非常清晰它把檢查項(xiàng)分成了四層格式層統(tǒng)一縮進(jìn)、引號(hào)、換行、導(dǎo)入排序。這些是 review 里最浪費(fèi)時(shí)間但又最沒(méi)技術(shù)含量的爭(zhēng)論點(diǎn)。靜態(tài)分析層未使用變量、隱式類型轉(zhuǎn)換、空指針風(fēng)險(xiǎn)、復(fù)雜度超標(biāo)。這一層抓的是“能跑但很危險(xiǎn)”的代碼。依賴安全層掃描依賴樹(shù)標(biāo)記有已知漏洞的版本。這一層很多人會(huì)忽略但恰恰是線上事故的高發(fā)區(qū)。測(cè)試覆蓋層強(qiáng)制核心模塊的分支覆蓋率閾值達(dá)不到直接構(gòu)建失敗。這個(gè)分層設(shè)計(jì)我給高分。它解決了一個(gè)很現(xiàn)實(shí)的問(wèn)題把質(zhì)量問(wèn)題的處理時(shí)機(jī)前置了。以前代碼合并到主干之后出了問(wèn)題再回頭修成本高且容易引入新 bug。現(xiàn)在把這些檢查塞進(jìn) CI 流程提交代碼的瞬間就知道合不合格修起來(lái)也就是幾分鐘的事。1.2 為什么選擇“配置聚合”而不是“重新造輪子”我一開(kāi)始以為這是個(gè) lint 工具看完才發(fā)現(xiàn)它沒(méi)有自己解析代碼而是把現(xiàn)成的工具鏈串了起來(lái)。這恰恰是它最聰明的決定。舉個(gè)例子它底層調(diào)用的還是社區(qū)里成熟的檢查器但統(tǒng)一了它們的配置文件格式和觸發(fā)時(shí)機(jī)。這帶來(lái)的直接好處是團(tuán)隊(duì)不需要學(xué)習(xí)新工具只需要在一個(gè)地方改配置。對(duì)帶團(tuán)隊(duì)的人來(lái)說(shuō)這非常重要——任何需要成員額外學(xué)習(xí)成本的新工具落地阻力都會(huì)非常大。而它把已有的、大家熟悉的工具組合起來(lái)形成了一個(gè)統(tǒng)一入口學(xué)習(xí)曲線幾乎為零。當(dāng)時(shí)我正好在給一個(gè)老項(xiàng)目做質(zhì)量治理深有體會(huì)。那個(gè)項(xiàng)目前后用了三套不同的檢查工具配置散落在各個(gè)模塊里CI 上跑的還是各自獨(dú)立的腳本互不通信。真正的問(wèn)題不是某個(gè)檢查器不好用而是它們各自為政團(tuán)隊(duì)不知道該聽(tīng)誰(shuí)的。impeccable 這種聚合思路本質(zhì)上是在解決“工具碎片化”帶來(lái)的管理成本。2. 規(guī)則體系搭建核心配置的拆解與參數(shù)調(diào)優(yōu)這一章是實(shí)操重頭戲。我把它裝進(jìn)一個(gè)模擬項(xiàng)目一個(gè)標(biāo)準(zhǔn)的三層架構(gòu) Web 服務(wù)前端框架加后端接口里折騰了整整兩天。下面是我最終沉淀下來(lái)的配置方案和調(diào)參心得。2.1 格式化規(guī)則把“審美爭(zhēng)議”消滅在提交前格式化這層最沒(méi)技術(shù)含量但對(duì)團(tuán)隊(duì)的隱形收益最大。我見(jiàn)過(guò)兩個(gè)同事因?yàn)椤翱s進(jìn)到底用兩個(gè)空格還是四個(gè)空格”在 PR 里來(lái)回 battle 了十幾條評(píng)論最后誰(shuí)也沒(méi)說(shuō)服誰(shuí)。impeccable 的做法是別吵了機(jī)器說(shuō)了算。它的配置文件里默認(rèn)啟用了一套比較激進(jìn)的格式化策略。以 JavaScript 代碼為例核心配置如下{ format: { indent: 2, quotes: single, semicolons: true, trailingComma: all, printWidth: 100 } }這里有個(gè)調(diào)優(yōu)細(xì)節(jié)值得注意。默認(rèn)的printWidth是 80但我實(shí)際測(cè)下來(lái)在現(xiàn)代寬屏顯示器上80 會(huì)導(dǎo)致很深的換行嵌套代碼反而更難看。我調(diào)到 100 之后整體可讀性好了很多。另外一個(gè)關(guān)鍵點(diǎn)是trailingComma必須開(kāi)成all。很多人覺(jué)得多寫個(gè)逗號(hào)無(wú)所謂但它直接關(guān)系到 git diff 的可讀性。試想一下你在數(shù)組末尾加了一項(xiàng)如果末尾沒(méi)有逗號(hào)那么新增行的上一行也會(huì)被標(biāo)記為修改diff 里多了無(wú)用噪音。開(kāi)成all之后每次改動(dòng)只影響真正新增的那一行代碼審查時(shí)掃一眼就能看清楚變化。2.2 靜態(tài)分析閾值寬容期與嚴(yán)格期的平衡靜態(tài)分析是這工具里最容易讓團(tuán)隊(duì)“炸毛”的部分。一上來(lái)就把規(guī)則全部拉滿團(tuán)隊(duì)成員的線上代碼會(huì)瞬間多出幾百個(gè)報(bào)錯(cuò)那時(shí)這工具離被卸載也不遠(yuǎn)了。它的設(shè)計(jì)里有一個(gè)非常實(shí)用的概念寬容期配置??梢栽O(shè)定一個(gè)過(guò)渡時(shí)間段期間只告警不阻斷給團(tuán)隊(duì)留出清理歷史債的時(shí)間。static_analysis: level: warning grace_period: 14 days max_complexity: 10 disallow_any_type: true我實(shí)測(cè)下來(lái)max_complexity設(shè)成 10 是個(gè)比較舒服的閾值。設(shè)成 5很多正常的業(yè)務(wù)代碼會(huì)頻繁報(bào)警容易產(chǎn)生“狼來(lái)了”效應(yīng)設(shè)成 15又基本放過(guò)了真正有問(wèn)題的深嵌套邏輯。10 是一個(gè)能逼著開(kāi)發(fā)者拆分函數(shù)、又不至于過(guò)度設(shè)計(jì)的折中值。disallow_any_type這個(gè)開(kāi)關(guān)我建議在 TypeScript 項(xiàng)目里直接打開(kāi)。它在前期會(huì)很痛苦因?yàn)闀?huì)逼著你給所有變量寫類型但在重構(gòu)時(shí)會(huì)救你一命。沒(méi)有類型約束的代碼三個(gè)月后你自己都看不懂當(dāng)初傳了什么進(jìn)來(lái)。2.3 依賴安全與測(cè)試覆蓋容易被忽視的硬門檻依賴安全這層我原本以為就是跑一遍掃描腳本實(shí)際用下來(lái)發(fā)現(xiàn)它還做了漏洞等級(jí)分級(jí)。不同等級(jí)的漏洞有不同的處理策略不是一刀切地全掛掉。dependency_checks: scan_depth: 3 fail_on: critical warn_on: [high, moderate] auto_update: false這里我吃了點(diǎn)教訓(xùn)。剛開(kāi)始我把fail_on設(shè)成了high結(jié)果有個(gè)冷門庫(kù)爆出一個(gè)高危漏洞但那個(gè)庫(kù)已經(jīng)兩年沒(méi)更新了上游根本沒(méi)人修只能被迫降級(jí)換庫(kù)折騰了一整天。后來(lái)我學(xué)乖了只對(duì)critical級(jí)別的漏洞做硬阻斷high級(jí)別作為警告推送。因?yàn)轱L(fēng)險(xiǎn)評(píng)估要考慮可利用性而不是只看評(píng)分等級(jí)。測(cè)試覆蓋這塊它支持按目錄設(shè)定不同的閾值這個(gè)設(shè)計(jì)對(duì)老項(xiàng)目非常友好。核心業(yè)務(wù)模塊要求 80% 的行覆蓋 70% 的分支覆蓋而周邊工具模塊只為 40% 的兜底下限。這個(gè)差異化策略幫我避免了一個(gè)尷尬情況團(tuán)隊(duì)為了達(dá)標(biāo)把沒(méi)用的 getter/setter 和工具函數(shù)硬寫測(cè)試來(lái)湊數(shù)白白浪費(fèi)工時(shí)。下面是我在模擬項(xiàng)目里用的覆蓋率閾值模塊行覆蓋率分支覆蓋率說(shuō)明核心業(yè)務(wù)服務(wù)80%70%不允許降級(jí)API 接口層60%50%保證主流程可用基礎(chǔ)設(shè)施工具40%30%僅設(shè)兜底下限UI 組件層50%40%重點(diǎn)覆蓋交互邏輯2.4 配置文件繼承多項(xiàng)目復(fù)用的關(guān)鍵設(shè)計(jì)這個(gè)特性是我用下來(lái)覺(jué)得最實(shí)用的。它的配置文件支持分層繼承能按團(tuán)隊(duì)、項(xiàng)目、模塊三個(gè)粒度疊配置。我實(shí)際搭建時(shí)用了三層結(jié)構(gòu)# 最底層的團(tuán)隊(duì)公共配置 common: extends: default static_analysis: level: error # 中間層按項(xiàng)目類型定制 service-project: extends: common test_coverage: core: line: 80 # 最上層針對(duì)個(gè)別模塊的特例 legacy-module: extends: service-project static_analysis: level: warning這個(gè)設(shè)計(jì)的價(jià)值在于新項(xiàng)目克隆下來(lái) 5 分鐘就能接好全套檢查不用從零開(kāi)始寫規(guī)則。同時(shí)老模塊可以暫時(shí)掛在一個(gè)較低的閾值下逐步整改。我在實(shí)際遷移一個(gè)老服務(wù)時(shí)就是靠這個(gè)能力先把檢查掛上但不強(qiáng)制通過(guò)一周后歷史報(bào)錯(cuò)清零了才切換成強(qiáng)制模式。3. 實(shí)操過(guò)程從零到一完整接入一套檢查流水線下面是我的完整實(shí)操記錄。我拿了一個(gè)模擬項(xiàng)目 X一個(gè)前后端分離的 Web 應(yīng)用來(lái)做試點(diǎn)把 impeccable 完整接入它。3.1 安裝與初始化先看清“家底”再動(dòng)手安裝本身很簡(jiǎn)單一個(gè)命令就能完成它會(huì)自動(dòng)檢測(cè)當(dāng)前項(xiàng)目用了什么語(yǔ)言和框架然后給出對(duì)應(yīng)的初始化模板。npm install -g impeccable-cli impeccable init初始化過(guò)程中它會(huì)問(wèn)幾個(gè)問(wèn)題項(xiàng)目類型、前端框架、是否啟用類型檢查、以及歷史代碼量。這里有一個(gè)很關(guān)鍵的選項(xiàng)“歷史代碼檢查模式”。我建議第一遍先選“只報(bào)告不阻斷”。為什么我試過(guò)直接上強(qiáng)制模式結(jié)果整個(gè)項(xiàng)目 300 多個(gè)文件報(bào)了 2000 多個(gè)問(wèn)題。那個(gè)紅色報(bào)錯(cuò)列表一出來(lái)團(tuán)隊(duì)其他人的反應(yīng)是“這工具是不是有問(wèn)題”。后來(lái)刪掉重來(lái)先跑了一輪純報(bào)告模式找出問(wèn)題的分布規(guī)律再分批修復(fù)順暢很多。先把家底摸清楚再定整改節(jié)奏這個(gè)順序不能反。3.2 配置調(diào)整把閾值調(diào)到“夠得著”的水平初始化生成的默認(rèn)配置是比較保守的。我根據(jù)模擬項(xiàng)目 X 的實(shí)際情況做了三處調(diào)整第一處是關(guān)閉了一項(xiàng)過(guò)于嚴(yán)格的命名約定。默認(rèn)規(guī)則要求所有的函數(shù)和變量都采用完整單詞命名不允許縮寫這在業(yè)務(wù)代碼里會(huì)導(dǎo)致大量報(bào)錯(cuò)。比如resp必須寫成responsebtn必須寫成button。這種規(guī)則的收益極低還容易造成行寬膨脹。我選擇關(guān)掉它。第二處是調(diào)整了復(fù)雜度閾值。模擬項(xiàng)目 X 里有一段處理訂單狀態(tài)流轉(zhuǎn)的邏輯天然就是個(gè)大 switch 分支怎么拆都別扭。我為這個(gè)特定的函數(shù)加了一條豁免注釋并在備注里寫清楚理由和負(fù)責(zé)人?;砻鈾C(jī)制很重要它給了規(guī)則一些彈性空間讓團(tuán)隊(duì)不會(huì)因?yàn)椤八腊逡?guī)則”而產(chǎn)生抵觸情緒。第三處是設(shè)置了覆蓋率閾值??紤]到這個(gè)項(xiàng)目之前幾乎沒(méi)有測(cè)試我新寫了兩個(gè)核心模塊的測(cè)試用例把覆蓋率頂?shù)搅?60%先跑通流程后續(xù)迭代再加。不要追求一步到位先讓門禁跑起來(lái)再逐步收緊。3.3 CI 集成讓人工檢查退居二線本地能跑只是第一步真正的價(jià)值在 CI 里體現(xiàn)。集成方式非常簡(jiǎn)單在 CI 配置里加一步即可- name: Code Quality Check run: impeccable ci它會(huì)自動(dòng)完成格式校驗(yàn)、靜態(tài)分析、依賴掃描、測(cè)試覆蓋報(bào)告生成最后輸出一個(gè)匯總結(jié)果。如果有硬性錯(cuò)誤直接讓構(gòu)建失敗如果只是警告會(huì)生成一個(gè) markdown 報(bào)告掛到構(gòu)建日志里供查看。這步操作我建議放在單元測(cè)試之后、構(gòu)建鏡像之前。放在測(cè)試前面代碼有問(wèn)題時(shí)測(cè)試還沒(méi)跑就退出不會(huì)浪費(fèi)時(shí)間跑完整個(gè)測(cè)試套件。放在構(gòu)建之前則是避免把不達(dá)標(biāo)的代碼打包進(jìn)產(chǎn)物里。原來(lái)我所在的團(tuán)隊(duì)總是把 review 的注意力放在“功能是否實(shí)現(xiàn)”上有了機(jī)器鏈路去做“代碼是否規(guī)范”的初篩人類 reviewer 就能把精力集中在真正需要判斷力的地方。3.4 報(bào)告解讀用數(shù)據(jù)代替感覺(jué)跑完檢查后它會(huì)生成一份非常直觀的報(bào)告核心是一張“質(zhì)量評(píng)分卡”給項(xiàng)目的四個(gè)維度分別打分。我用它發(fā)現(xiàn)了模擬項(xiàng)目 X 中一個(gè)隱藏很深的問(wèn)題某個(gè)基礎(chǔ)工具模塊的測(cè)試覆蓋率顯示 80%但分支覆蓋率只有 15%。當(dāng)時(shí)看著行覆蓋率覺(jué)得還行但仔細(xì)看了分支覆蓋的明細(xì)才發(fā)現(xiàn)測(cè)試全是對(duì)正常路徑的一路走到黑異常分支空指針、網(wǎng)絡(luò)錯(cuò)誤、權(quán)限不足一個(gè)都沒(méi)覆蓋到。這正是行覆蓋率的盲區(qū)——行數(shù)跑了但分支沒(méi)有全跑。這份報(bào)告讓我意識(shí)到閾值設(shè)計(jì)時(shí)必須把分支覆蓋率單獨(dú)設(shè)硬指標(biāo)不能只看行覆蓋。另外有個(gè)實(shí)用小技巧它支持直接對(duì)比兩次提交的質(zhì)量分這一個(gè)功能非常利于推動(dòng)整改。每次 PR 合并后對(duì)比一下質(zhì)量分的變化改善的要表?yè)P(yáng)退化的點(diǎn)對(duì)點(diǎn)提醒。用數(shù)字說(shuō)話團(tuán)隊(duì)里幾乎沒(méi)人會(huì)反駁。4. 落地實(shí)錄模擬項(xiàng)目 X 的兩天整改全過(guò)程把流程跑通之后真正的挑戰(zhàn)才開(kāi)始怎么讓存量代碼達(dá)標(biāo)。這一步我耗盡心力也累積了不少實(shí)戰(zhàn)經(jīng)驗(yàn)。4.1 存量代碼的“降噪”處理模擬項(xiàng)目 X 是個(gè)已開(kāi)發(fā)大半年的項(xiàng)目代碼量不算小。直接開(kāi)檢查報(bào)告里爆了幾百個(gè)問(wèn)題但仔細(xì)翻看大量報(bào)錯(cuò)其實(shí)是同一個(gè)根因。例如整個(gè)項(xiàng)目到處是console.log調(diào)試語(yǔ)句居然有 40 多處還有一些文件是歷史遺留的復(fù)制方法從未被調(diào)用。這些問(wèn)題有明確規(guī)律修復(fù)時(shí)我找到規(guī)律一次處理一類而不是一行一行改。推薦的做法是按報(bào)錯(cuò)類型分組處理而不是按文件處理。先全局清掉一批同類型問(wèn)題讓報(bào)錯(cuò)總數(shù)掉下來(lái)視覺(jué)上給人“整改在推進(jìn)”的信心再啃難啃的骨頭。我用了一個(gè)下午把格式類和未使用變量類問(wèn)題清了報(bào)錯(cuò)數(shù)量從 800 多降到了 200 左右。剩下那 200 個(gè)才是真正需要?jiǎng)幽X子的比如復(fù)雜的邏輯拆分、類型定義補(bǔ)全、異常處理重構(gòu)。這個(gè)過(guò)程不要急每天處理幾個(gè)模塊逐步推進(jìn)。4.2 豁免機(jī)制的正確姿勢(shì)上文提到豁免注釋這里展開(kāi)說(shuō)說(shuō)。它的配置里支持按原因分類的豁免方式。我制定了一條內(nèi)部規(guī)則只有三類情況允許豁免——第三方 SDK 適配層、深度耦合的歷史代碼、以及有明確重構(gòu)計(jì)劃的技術(shù)債。并且每條豁免都要在備注里寫清楚“為什么豁免、誰(shuí)負(fù)責(zé)、計(jì)劃什么時(shí)候修”。否則豁免會(huì)泛濫整個(gè)檢查形同虛設(shè)。我的項(xiàng)目里有一處倉(cāng)儲(chǔ)訪問(wèn)層鎖粒度設(shè)計(jì)不合理報(bào)了一個(gè)并發(fā)風(fēng)險(xiǎn)警告。這個(gè)確實(shí)該改但要?jiǎng)拥绞聞?wù)邊界牽扯面大不能馬上改。于是我給這段代碼加了一條半年的豁免申請(qǐng)備注里寫明重構(gòu)方案和責(zé)任人。半年后那些備注會(huì)全部過(guò)期重新報(bào)出來(lái)到時(shí)候再評(píng)估是否真正修了。這個(gè)“臨時(shí)許可證 過(guò)期提醒”的機(jī)制既給了過(guò)渡期又不會(huì)讓技術(shù)債永遠(yuǎn)爛在角落。4.3 團(tuán)隊(duì)的接受曲線先抓增量再補(bǔ)存量整個(gè)過(guò)程里最讓我意外的不是技術(shù)問(wèn)題而是團(tuán)隊(duì)心態(tài)。剛開(kāi)始強(qiáng)制門禁時(shí)有同事抱怨“以前能提交的代碼現(xiàn)在怎么提交不了”。這里我的經(jīng)驗(yàn)是先嚴(yán)抓新代碼存量代碼給緩沖期。新寫的代碼必須一次過(guò)檢歷史的存量故障可以分階段修。策略是新增的代碼如果格式不過(guò)關(guān)構(gòu)建直接失敗沒(méi)有商量余地。半死不活的老文件則集中列在“技術(shù)債清單”里每周五下午拿出兩個(gè)小時(shí)集中清理每清完一個(gè)文件就從清單上劃掉一個(gè)。這樣用了一個(gè)月清單上的文件從 80 個(gè)降到 12 個(gè)整個(gè)過(guò)程沒(méi)發(fā)生什么大的不愉快。關(guān)鍵點(diǎn)是讓大家看到整改在進(jìn)行而不是被規(guī)則“鎖死”。4.4 一次線上問(wèn)題帶來(lái)的反思整改過(guò)程中模擬項(xiàng)目 X 出現(xiàn)了一個(gè)線上報(bào)警某個(gè)接口偶爾會(huì)返回 500。查了很久最后發(fā)現(xiàn)是一個(gè)緩存工具模塊里并發(fā)寫入的時(shí)候沒(méi)有做好鎖保護(hù)。有意思的是——這個(gè)類的行覆蓋率做到了 90%因?yàn)楦鞣N寫入路徑都被測(cè)試覆蓋到了但并發(fā)場(chǎng)景的時(shí)序問(wèn)題單線程測(cè)試根本模擬不出來(lái)。我把這個(gè)案例復(fù)盤給團(tuán)隊(duì)聽(tīng)的時(shí)候大家才真正理解為什么覆蓋率不能只看數(shù)字。從那以后我們對(duì)核心模塊的測(cè)試要求增加了一條硬性規(guī)定凡涉及共享狀態(tài)的代碼必須要有并發(fā)測(cè)試用例。這個(gè)問(wèn)題讓我對(duì)“完美”這件事有了更深的理解——任何工具都只能檢查規(guī)則定義之內(nèi)的東西超出規(guī)則之外的風(fēng)險(xiǎn)還是需要人來(lái)思考和設(shè)計(jì)。工具可以攔截低級(jí)錯(cuò)誤但設(shè)計(jì)缺陷只能靠人的經(jīng)驗(yàn)來(lái)補(bǔ)。5. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄下面是我這兩天實(shí)操中積累的一些排錯(cuò)經(jīng)驗(yàn)整理成速查表能幫想接入的讀者節(jié)省不少時(shí)間。問(wèn)題現(xiàn)象排查思路解決方案初始化后檢查數(shù)百個(gè)報(bào)錯(cuò)可能歷史遺留代碼過(guò)多先切“僅報(bào)告”模式分組清債覆蓋率明明達(dá)標(biāo)但構(gòu)建失敗行覆蓋與分支覆蓋閾值不同分指標(biāo)查看報(bào)告確認(rèn)分支覆蓋某文件規(guī)則與整體沖突存在不可避免的特定場(chǎng)景用豁免注釋并注明理由與時(shí)限依賴掃描發(fā)現(xiàn)高危漏洞但無(wú)新版上游維護(hù)不活躍評(píng)估可利用性降級(jí)或風(fēng)險(xiǎn)接受團(tuán)隊(duì)抵觸情緒嚴(yán)重閾值設(shè)置過(guò)嚴(yán)調(diào)整閾值使新代碼嚴(yán)格、存量寬松還有一個(gè)我特別想分享的排查技巧當(dāng)某一個(gè)檢查器報(bào)出的問(wèn)題數(shù)量異常膨脹時(shí)往往不是真的引入了海量問(wèn)題而是某個(gè)通用配置被誤改。有一次靜態(tài)檢查突然報(bào)出 1200 多個(gè)錯(cuò)誤嚇我一跳。查了半天發(fā)現(xiàn)是初始化時(shí)誤把“類型檢查”與“語(yǔ)法檢查”搞混了一個(gè)標(biāo)志位寫反檢查器把兩個(gè)規(guī)則疊加了。這種時(shí)候嘗試把配置里的某一層臨時(shí)置為默認(rèn)值二分定位很快就能找到問(wèn)題源頭。另一個(gè)常見(jiàn)問(wèn)題是多模塊項(xiàng)目里配置文件繼承關(guān)系寫錯(cuò)了導(dǎo)致某個(gè)模塊繼承了不應(yīng)該應(yīng)用的規(guī)則。排查方法是加一個(gè)impeccable config:effective命令它會(huì)打印某個(gè)目錄最終生效的完整配置。這個(gè)功能我?guī)缀趺刻於家锰貏e是在調(diào)整公共配置之后確認(rèn)每個(gè)子模塊收到的規(guī)則是否符合預(yù)期。6. 自定義規(guī)則擴(kuò)展一套適合自己業(yè)務(wù)的語(yǔ)言工具自帶規(guī)則雖然夠用但每個(gè)團(tuán)隊(duì)總有那么幾條“血淚教訓(xùn)總結(jié)出來(lái)的規(guī)定”想固化下來(lái)。它也支持自定義規(guī)則插件。我那天正好在梳理團(tuán)隊(duì)過(guò)去一年的線上故障清單發(fā)現(xiàn)有兩條規(guī)律特別突出一是接口入?yún)⑿r?yàn)普遍缺失二是操作日志經(jīng)常沒(méi)打印關(guān)鍵上下文。這兩條靠默認(rèn)規(guī)則是查不出來(lái)的于是我把它們各自寫了一條自定義規(guī)則插件。以“禁止吞異常”為例很多同事寫 catch 時(shí)習(xí)慣性地只打個(gè)日志就完事但有些異常確實(shí)需要往上拋。我用插件語(yǔ)法寫了一條規(guī)則強(qiáng)制 catch 塊內(nèi)必須包含要么拋出、要么標(biāo)記再拋出的邏輯否則直接報(bào)錯(cuò)。這個(gè)規(guī)則上線當(dāng)天就抓到一個(gè)老模塊里三處異常被靜默吞掉的隱患。我建議自定義規(guī)則不要一次寫太多每一條都對(duì)應(yīng)一個(gè)真實(shí)發(fā)生過(guò)的事故這樣團(tuán)隊(duì)才會(huì)認(rèn)真看待它。如果你的團(tuán)隊(duì)剛準(zhǔn)備落地我建議先跑通默認(rèn)規(guī)則穩(wěn)定運(yùn)行一個(gè)月后再沉淀兩到三條自定義規(guī)則逐步形成自己的質(zhì)量文化。7. 性能開(kāi)銷與卡點(diǎn)問(wèn)題處理接入流水線后團(tuán)隊(duì)最關(guān)心的一個(gè)問(wèn)題是CI 會(huì)不會(huì)變慢這個(gè)擔(dān)憂非?,F(xiàn)實(shí)我的實(shí)測(cè)數(shù)據(jù)可以供參考。我用了模擬項(xiàng)目 X 作為樣本規(guī)模大概是 150 個(gè)源文件、2 萬(wàn)行代碼。未接入全新前一次 CI 跑完是 1 分 40 秒左右。接入后前幾次完整檢查跑了大約 4 分 20 秒雖然完全可以接受但我還是想優(yōu)化。優(yōu)化手段主要是并行和緩存。它支持將格式化、靜態(tài)分析、依賴掃描拆成三個(gè)并發(fā)任務(wù)同時(shí)開(kāi)啟緩存策略只有變更過(guò)的文件及其依賴鏈才重新掃描。第一次全量掃描后后續(xù)增量檢查只花大約 30 秒。我把這三條優(yōu)化打開(kāi)之后整體 CI 時(shí)間控制在 2 分半以內(nèi)團(tuán)隊(duì)幾乎無(wú)感知。如果你的項(xiàng)目非常大建議在 nightly 定時(shí)任務(wù)里跑全量掃描CI 里只跑增量。這樣既能保證質(zhì)量門禁的響應(yīng)速度也能通過(guò)每日全量任務(wù)覆蓋到那些“平時(shí)改不到”的死角代碼。注意依賴安全掃描建議保持全量不要做增量跳過(guò)。我試過(guò)依賴樹(shù)只掃描變更模塊導(dǎo)致一個(gè)間接依賴的舊漏洞被漏過(guò)直到上線前的模擬演練才暴露出來(lái)。從那以后我對(duì)依賴掃描一律全量執(zhí)行這個(gè)開(kāi)銷可以通過(guò)鎖定緩存依賴目錄來(lái)大幅降低。8. 結(jié)合實(shí)際使用的進(jìn)階建議最后這部分聊聊我自己的擴(kuò)展玩法特別是怎么讓質(zhì)量門禁從“討厭的關(guān)卡”變成“團(tuán)隊(duì)的習(xí)慣”。8.1 與代碼審查流程的銜接我發(fā)現(xiàn)很多人把工具檢查和人工審查對(duì)立起來(lái)其實(shí)它們是互補(bǔ)的。工具管“死規(guī)則”人類管“活的判斷”。接入檢查后我明確和團(tuán)隊(duì)說(shuō)凡是工具能查出來(lái)的問(wèn)題reviewer 在評(píng)論里一律不要再提只把精力花在架構(gòu)設(shè)計(jì)、業(yè)務(wù)邏輯、可擴(kuò)展性這些真正需要人腦判斷的地方。這個(gè)轉(zhuǎn)變讓 review 效率提升非常明顯。以前一個(gè) PR 可能要來(lái)回 5 輪評(píng)論其中 3 輪在爭(zhēng)論格式和命名?,F(xiàn)在格式和命名都過(guò)不了機(jī)器能到 reviewer 手里的代碼已經(jīng)相對(duì)干凈了。review 的輪數(shù)降到了兩輪以內(nèi)而且討論的內(nèi)容都聚焦在“這個(gè)接口設(shè)計(jì)是否合理”這類高價(jià)值話題上。8.2 質(zhì)量指標(biāo)的可視化為了讓團(tuán)隊(duì)能直觀地看到進(jìn)步我用它導(dǎo)出的質(zhì)量數(shù)據(jù)在內(nèi)部做了一個(gè)簡(jiǎn)單的指標(biāo)趨勢(shì)圖。橫軸是時(shí)間縱軸是“每千行代碼缺陷數(shù)”。這個(gè)數(shù)字從接入前的 8 降到了現(xiàn)在的 3 左右極大的提升了團(tuán)隊(duì)的成就感。這里有個(gè)小經(jīng)驗(yàn)趨勢(shì)圖要展示的是團(tuán)隊(duì)整體指標(biāo)而不是個(gè)人排名。否則容易變成隊(duì)友之間互相內(nèi)卷偏離了提升代碼質(zhì)量的初衷。我們定的目標(biāo)是“比上周的自己更好”而不是“比隔壁組更好”。8.3 從“可用”到“好用”的路徑說(shuō)實(shí)話這個(gè)工具開(kāi)箱即用的體驗(yàn)已經(jīng)不錯(cuò)但你千萬(wàn)不要指望裝完第二天團(tuán)隊(duì)質(zhì)量就突飛猛進(jìn)。我建議按下面的節(jié)奏推進(jìn)第一周只裝不查讓團(tuán)隊(duì)熟悉配置和命令CI 里只輸出報(bào)告。第二周打開(kāi)格式和靜態(tài)檢查的警告模式讓成員看到自己代碼的問(wèn)題分布。第三周開(kāi)始強(qiáng)制增量代碼的格式檢查。第四周把靜態(tài)檢查也切到強(qiáng)制模式存量代碼繼續(xù)用豁免機(jī)制過(guò)渡。這樣一個(gè)月下來(lái)團(tuán)隊(duì)基本就能平穩(wěn)度過(guò)最痛苦的適應(yīng)期。我自己實(shí)際跑下來(lái)最欣慰的不是最后所有指標(biāo)變綠了而是看到一個(gè)剛?cè)肼毑痪玫耐瑢W(xué)在提交代碼之前主動(dòng)跑了一遍檢查工具并說(shuō)以前不知道自己代碼有這么多細(xì)節(jié)問(wèn)題。工具真正的價(jià)值不在攔截多少錯(cuò)誤而是改變了每個(gè)人對(duì)代碼的評(píng)審標(biāo)準(zhǔn)。寫在最后把一小段一段真實(shí)經(jīng)歷總結(jié)一下不算總結(jié)的總結(jié)這個(gè)工具的接入過(guò)程讓我對(duì)自己做事的方式也有了一些反思。我過(guò)去也常覺(jué)得“完美”是個(gè)口號(hào)但實(shí)際操作下來(lái)才發(fā)現(xiàn)完美不是一個(gè)結(jié)果而是一套持續(xù)運(yùn)轉(zhuǎn)的流程。把格式、靜態(tài)問(wèn)題、依賴風(fēng)險(xiǎn)和測(cè)試覆蓋都變成自動(dòng)檢查的一部分之后“無(wú)可挑剔”就不再是一個(gè)模糊的形容詞而是一串具體的、每天在跑的數(shù)字。最后分享一個(gè)我個(gè)人的小習(xí)慣我每次給代碼提交前都會(huì)花 30 秒跑一遍快速檢查確認(rèn)沒(méi)有低級(jí)錯(cuò)誤才發(fā)出去。這個(gè)習(xí)慣堅(jiān)持了兩個(gè)多月后我自己的代碼 review 通過(guò)率幾乎百分之百不等于我的代碼比別人聰明只說(shuō)明我很少因?yàn)轳R虎浪費(fèi)別人的時(shí)間。有時(shí)候“無(wú)可挑剔”給人的感覺(jué)不是壓力而是一種省心的自由。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
在线不欧美| 亚洲熟妇A V黑人| 久久中文字幕一区不卡| 久久av色| 国产黄色影片在线观看| 久久欧洲| 欧美精品成人在线播放| 东北操逼| av资源在线观看少妇| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 男啪女色黄无遮挡免费观看| julia高潮后不停追击中出| 日韩精品人妻中文字幕不卡乱码| 操人91| 亚洲另类色综合网站| 性爱av在线免费观看| 中文字幕人乱码中文字的预防方法| 久久五月天婷婷丁香中文字幕| 蜜臀人妻少妇久久在线观看| 久久久久久久九九九九九九| 欧美曰韩国产精品| 美女尤物人人操| 夜夜爽爽夜夜精品视频| 亚洲成人免费中文字幕| 国产丝袜高跟美女av免费观看| 国产高清免费不卡av| 精品无码一二三四区| 丁香六月激情| 职场同事知名国产国产精品久久欧美日韩 | 久久最新视频免费观看| 岛国网址国产| 亚洲情色 自拍| 91社操逼| 久久蜜桃一区二区| 91精品国产麻豆国产自产在| 国产精品久久久亚洲第一牛牛_在线观看| 国产在线精品偷| 狠久久| 天天爽天天| 色五月AV| 国产日韩人人| 国产精品岛国片在线观看| 18禁久久| 国产视频一区二区三区久久亚洲天堂| 福利视频一区二区微拍| 日韩欧美久久婷婷网站| 97大色网| 午夜丁香| 白丝被操91| 欧美与日韩97| 99久热| 99久久精品国产系列| 97超碰无码网| 成人国产精品三级A片| 91N综合网| 99国产天美| 蜜乳AV一区| 久久久久深夜无码| 天天看片麻豆| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 中精品一区二区三区| 丁香婷婷大香蕉| 亚洲国产精品无码AV久久| 中文字幕一区二区三区四五区| 口爆吞精在线观看| 亚洲日韩天堂| 囯产精品强| 素人播放一区| 91在线无码精品秘 软件| 四虎精品一区二区| 亚洲欧美日韩国产丝袜自拍中文| 99久久久久| 亚洲高清视频在线免费观看| 无卡一区=区| 久久久久性熟视频| 亚洲无码AV九九九| 国产精品成人AV片免费看网站| 加勒比五月天| 国产一区二区三区中文字幕| 免费人成?大片在线播放| 亚洲风情在线观看| 亚洲久久东京热一二三四五区视频| 99色在线视频| 国产97视频免费观看| 欧美日本成人一区二区| 欧美综合色综合| 69视频福利导航| 综合色图区| 亚洲国产欧美一区二区潘金莲| 国产9l 大屁股| 老鸭窝黄色视频网站| 婷婷五月丁香五月| 日本中文字幕在线视频 | 18禁在线视频| 97免费视频在线| 天天日天天操VV| 色综合美国| 唐山老熟妇露脸啪啪叫| 欧美日韩国产中文精品字幕自在自线| 100啪啪视频大全| 精品人妻久久久久一区二区三区| 日本淫穴在线| 大香蕉伊人一区在线观看| 欧美顶级黄片AAAAA在线免费看| 国产一级舔足在线观看| 可乐操在线| 国产精品乱码久久久久久| 国产亚洲欧洲在线观看| 好吊色在线观看| 亚洲一区二区性爱电影| 国产色图乱伦| 亚洲色狠| 欧美日韩资源| 极品白嫩福利在线| 一起草AV| 任你草| 波多野结衣先锋影音| 国产一国产一级毛片古装| 久操电影网| 神马久久网| 久久一二区四| 91丝袜美女| 国产丝袜视频| 91五月天| 婷婷五月天丁香| 国产又色又爽又舒服的三级视频| 亚洲欧洲综合av在线| 操国产逼| 东北少妇高潮zzzz| 超碰日韩人妻| 自拍偷拍 日韩欧美| 国产精品久久久久久久久久久久久久吹| 久久久久深夜无码| 精品美女少妇一区二区| 91热| 久久线上视频免费看| 97欧美色综合| 日韩精品一区,二区 九九...老司机| 色综合久久夜色精品国产天堂| 日韩无码服务区| 中文字幕55555| 一区二区三区网站日日骚| 日韩一级二级| 色五月婷婷麻豆在| 台湾佬激情综合| 午夜情侣自拍网站| 一区二区国产视频在线观看| 日本少妇va7777| 女色视频社区| 伊人青青草久久| 美女毛片999| 日韩 成人 有码| 伊人991| 在线免费试看60秒| 国产精品大屁股999| 麻豆色约约| 欧亚 另类 久| 国产精品96| 青娱乐淫乱1314| 黑人综合网| 国产精品美女| a片 xxxx受爽视频| 国产精品嫩草影院午夜两性 | 91精品丝袜在线观看| 色老久久| 亚洲在线观看| 超碰美国| 欧美图片色五月天| 91性网| 亚洲AV在线资源| 新视频sss国产| 日韩中文9| 99热国产精品| 夜夜性| 免费一二区| 亚洲一区二区三区春色| 午夜福利1区2区3区| 日韩性爱视频在线免费观看| 26uuu国产成人综合| 日本 欧美 国产一区| 丁香九月婷婷| 老师充足的奶水小说| surenchaopeng| 色拍偷亚洲| 97在线观看视频| 天堂男人网| 日韩精品在线放| 日韩成人性日韩成人性爱视频在线免费观看| 精品欧美不卡在线播放| 无码高清专| 国产伦精品一区二区三区视频女| 欧美性爱日韩性爱| 日韩在线观看中文字幕视频| 亚洲、日韩、综合、另类| 九九九九免费高| 无马一区二区| 6080YYY午夜理论片在线观看| 手机在线人成免费视频| 综合色图亚洲欧美| 欧美中字不卡| 777超碰| 成人一级性爱| 77777亚洲蜜臀精品久久综合蜜臀| 亚州人妻| 97亚洲在线| 日本道不卡| 十八禁的黄污污免费网站| 久久婷五月| 韩国女主播青草福利视频| 亚洲情色一区二区三区| 91精品人妻一区二区三区蜜桃| 欧美18 在线观看| 黄片在线免费在线观看| 久久超碰、| 亚洲欧美变态| 在线日韩日本亚洲国产| 干婷婷综合网| 亚洲日韩乱码中文无码蜜桃臀网站 | 欧美男女午夜啪啪| 在线五区| 国产探花日韩援交| 丁香六月婷婷久久综合| 男人把坤坤插入女人的下体| 亚洲综合在线第一页| 免费一级黄色录像影片| 999狠狠综合| 国产av色网| 香伊人在线| 天堂岛av| 国产精品69久久久久久久| 蜜乳视频网站| 密臀在线免费观看| 日本不卡一二区| 欧美人妻精品一区二区| 蜜臀AV成人精品蜜臀AV久久| 日日摸日日碰夜夜爽视频| 欧美日韩亚洲一区二区在线观看| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 一区久久久二区| 人妻色情天天操| 久久久久久一日韩字幕无码| 99国产在线绯色一区| 久久有码视频| 亚洲高清无码AAA久久久精品| 欧美色九九九| 亚州综合色| 日韩国产乱子伦App| 中文字日本乱码| 超碰美国| 婷婷久久久| 99国产精品久久久在线播放| 人人操人人舒服| 97超碰碰碰| 日本Suv精品一区二区| 99久久久无码精品国产人| 欧美精品成人亚洲| 熟妇色99| 爱爱动态120秒| 久久久91| 五月丁香啪| 五月天人妻综合| 成人 日本A片无码8888| 久久精品中文| 精品国模无码| 日本五十路在线| 被窝影院午夜看片无码| 欧美欲色| 男女猛烈无遮掩视频免费软件| AV大香蕉| 女人天堂av在线播放| 日本91白丝| 青青在线视频日韩欧美| 欧美日日网| 91在线观看,天天综合| 999国产精品999| 国产精品动态一区二区三区四四| 夜夜影视四色| 欧美黑人日韩少妇色情| 国产欧美一级在线观看| 亚洲精品国产熟女久久久| 国产亚州精品美女久久久免费| 99re在线视频国产| 五月丁香综合激情| 99久久99久久免费精品蜜臀| 中文字暮97| 一区二区乱码福利| 嗯嗯啊啊好疼| 日韩av在线免费网站| 人人澡人人澡人人| www99热| 欧美色图99| AV无码久久久精品| 欧美+日产+中文| 色香色香欲天天天影视综合网| 综合97| 一牛影视久久久一区二区三区| 国产精品成人AV片免费看网站| 欧美美女在线高潮999| 日本三级A片网站com| 97超碰超欧美。| 综合国产影视三级| 久久久久密臀一区二区| 免費黃色視頻觀看一| 国产美女自拍视频| 亚洲成人一二三区| 亚洲最新中文字幕免费| 亚洲精品 欧美97色色| 五月天精品| AVE乱伦| 在线观看视频91| 一级久久性爱视频| 黑人精品欧美一区二区蜜桃| av婷婷色网| 加勒比在线观看一区二区| 精品一二三区女同 | 国产熟女| 人人插人人搞人人操| 在线欧美亚洲| 天天摸天天碰天天添青青| 中文字幕中文字幕一区二区| 一本色道久久综合精品婷婷| 久久视网78| 在线观看中文av字幕| 四虎影视精品| 欧美91久久久久| 久久色情| 色欲无码人妻日韩欧美精品| 蜜臀久久久99久久久久 | 精品.99999| 狠狠中文字幕| 91狠狠狠| 在线97在线| 久久精品国产96精品亚洲拳交| 少妇色欲综合网2| 97资源超碰| 约操熟妇| 欧美日韩欧美| 亚洲国产剧情少妇激情| 思思热免费视频观看| 亚州综合色| 伦在线97| 午夜大香蕉| 嗯~啊~快点 死我视频免费看网站| 婷婷五月天AV| 久久国产性爱| 欧美人体性爱互联网第一页婷婷日本| 加勒比色综合| 天堂麻豆天美| 国语人妻精彩刺激| 午夜黄色免费在线观看| 老外又粗又长一晚做五次| 97视频在线观看网站| 天天拍天天操| 搡老人老9丨女老熟人| 久久天堂| 久久久78| 国产成人天堂| 夜夜操91744565| 日韩中文字幕视频在线观看| 亚洲国产一区二区入口| 亚洲本色精品一区二区久久| 久久噜| 午夜福利久久久噜久噜久久综合| www色色com| 亚洲一欧洲中文字幕在线| 日本色色色网站免费看不卡| 久久精品无码熟妇一区二区三区视频导航 | 国产精品免费视频人成| 国产又黄又爽| 国产视频第二页| 中文日韩欧美熟| 日日AV加勒比| 蜜臀亚洲中文| 黑操B| 国产亚州高清国产拍精| 色色色色日本| 久久久一区二区三区三州| 久久精品一区二区| 欧日韩一二三f区| 美熟女逼导航AV操逼| 久久视网78| 久久精品欧美一区蜜桃| 性爱综合网| 97在线精品观看视频| 亚洲中字幕日本一区二区三区| 久久久555| 国产成人啪一区二区| 久久九精品| 亚洲综合小视频小说在线观看| 女色视频社区| 91色艳| 丁香五月激情综合| 大香蕉久久| 色99在线| 亚洲操人| 日本综合久久| 激情综合五月| 日韩AV一区二区三区四四| 久99热| 韩国一级婬片A片AAAAA| 日本岛国黄色网址| 无套内射性感少妇视频| 亚洲人妻中文高清| 国产精品免费视频人成| 动漫爆乳3D奶水一区在线观看| 天天视频综合在线观看视频| 多乙久久久久久| 全免费a敌肛交毛片免费| 无码日韩人妻av一| 在线观看精品国产免费| 欧美一级做a爰片免费视频| 97摸视频| 亚洲色综合| 色五月婷婷中文字幕| 色综合色色| 综合熟女| 欧洲综合视频| 天堂国产AV| 国产精品密臀网在线观看| 欧美亚洲高清不卡| 夜色97| www.成人无码| 大干人妻| 日日夜夜骑| 精品人妻一区二区免费蜜桃视频| 翔田千里A片一区二区| 国产多人在线观看视频| 国产精品无码av在线| 肉嘟嘟www视频在线观看高清| 久久AV无码网址| 日本亚洲熟女视频| 色婷婷五月天| 69综合网| 中文一区二区| 久久9精品| 亚洲av噜噜噜噜噜噜| 免费久久一级毛片大黄| 99色热国产视频精品| 国产九九九九九九九九| 欧美久久九九| 天堂伊人久久| 久久久精选| 亚洲美女AV无码| 超碰97人人cao| 亚洲成人一区二区精品| 九月婷婷| 97免费在线视频在线观看| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | AV污污污污| 丁香五月久久| 国产精品色哟哟| 97欧美久久久久久久| 91在线观看,天天综合| 精品蜜乳AV免费观看| 肉嘟嘟www视频在线观看高清| 麻豆国产尤物AV| 久久久不卡区一区二区三区久久久| 婷婷精品久久av影视| 激情婷婷综合久久| 国产一级αv免费看片| 青青草原狼av| 天天热精品| 国语av狠狠色丁香婷婷综合激情| 日本操BAV| 99热精品青草在线| 成人情色综合网| 91在线精品一区二区三区| 亚洲国产高清福利视频| 久久97资源 网| 99少妇内射| 中文字幕乱在线伦视频中文字幕乱码在线 | 一本色道久久综合狠狠操| jazzjazz国产精品麻豆| 色婷婷导航| 婷婷五月天无码 | 男人下部插入女人下部| 亚洲国产福利视频| 青娱乐亚洲自拍| 久久精品视频久久久| 亚洲中文字幕一区| 中文日本免费高清| 亚洲成人一二三区| 欧美激情 一区| 麻花传媒免费网站在线观看| www.99热| 青青青草原| 亚洲国产精品有声| 亚州色站 日韩电影| 天天夜夜rb| blacked精品一区国产| 超碰日本97美女人妻人人玩人人爱| 精品人妻视频一区二区在线播放 | 啊v在线观看视频| 国产欧美亚洲精品a第2页| 人人喜人人妻| 久久超碰网| 日韩人妻资源在线看| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 九九九国产精品| 国产区91柔拿会所技师| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 绑缚麻绳人妻寝取完整版| 玖草在线视频| 九九热在线视频| 黑丝制服中文字幕| 亚洲无码一区二区三区三州| 欧美性综合| 亚洲国产婷婷在线播放| 久久夜夜夜夜| 亚洲欧洲成人在线电影| 精品国产网站| 九九热九九| 97干在线| 日韩日韩日韩-国产乱码精品一区二区| 在线免费观看日韩一区| 麻豆伊人网| 国产一区二区免费福利片| 偷拍 精品另类 凸凹了四区| 97超碰超| 一区二区日韩欧美久久| 性欧美91| 少妇超碰在线| 欧洲综合色图| 日韩精品一区二区三区四虎影视| 97亚洲综合在线| 操逼逼无码| 啊啊啊在线看| 久久精品三级影视| 亚洲交换| 超碰在线国产| 91精品久久久久| 91色久| 97青青操视频| 国产精品美女视频诱惑| 另类天堂| 国产三级片在线观看| 九九这里只有精品| 日韩有码专区| 91久久久久久久久久久| 欲香欲色| 午夜天堂网| 亚洲黄色视频在线观看视频| 久久綜合很很很| 在线αⅴ| 日韩天堂av电影在线观看| 操逼操逼操| 九一亚洲国产免费| 亚洲男人综合| 国产十八禁视频| www.久久最新地址| 日韩中文字幕精品一二三事国产精品| 久久久国产三级黄色片| 久久久亚洲精品中文字幕人妻| 九九碰九九爱97超碰| 日本超碰色精品| 亚洲九月丁香| 97碰久久| 97久久精品亚洲中六字幕| 亚洲无码太久| 色婷婷日韩精品一区二区三区| 秋霞视频一区二区 | 亚洲欧美激情在线视频| 91n处女在线观看| A V少妇特黄三级| 中文字幕国产在线天堂| 久久的网站啊啊啊啊啊| yazhouzaixian| 婷婷九月色| 国产精品白丝| 亚洲性猛交| 欧美性爱1080p| 欧美丝袜亚洲| 一二三啪啪专区| 老熟女乱子伦中文字幕一区二区| 久久青娱乐| 中文字幕一区av| 欧美探花网| 青青草中出视频| 精品超碰中文在线| 国产不卡免费在线视频| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 精品九九国产无码| 日韩天天综合| 97色爱| 久久一级无码精品毛片6| 久久男人的天堂| 亚洲和欧美裸体美女双飞视频| 久久精品国产72国产精品福利| 久久超碰97| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 凌辱美少妇久久aV| 久超超碰| 操人91| 日本国产亚洲一区在线观看| 色综合 加勒比| 欧色综合| 中字乱伦AV| 国产9 9在线 | 亚洲| 少妇色欲综合网2| 中文字幕55555| 中文字幕乱在线伦视频中文字幕乱码在线 | 91亚洲网| 男人的天堂无码| 欧美亚男人的天堂| 日本123区操B视频| 在线观看亚洲专区| 精品无码人妻一区二区免费蜜桃| 日本精品国产视频| 91丨九色丨熟女高潮| 国模无码人体一区二区三| 蜜区区视频79| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 天天操天天射天天日| 久久东京热久久| 久久夜精品一区二区三区| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 亚洲天堂一区| 久久精品国产97欧美精品亚洲| 97视频7| 亚洲第一综合| 中国女人内射6XXXXX| 国产极品粉嫩馒头一线天av| 欧美92| 日韩精品影视| 日日AV加勒比| 射 色综合| 三级网色| 人人操肉肉| 日韩精品-原创伙伴| 97热视频在线观看| 久久久久久九九九九-美女久久久久久久-成人AV | 肏逼视频日本| 夜夜嗨一区二区三区直播内容| 国产偷仑| 久久一二区四| 嗯嗯啊啊视频在线看| 亚欧性爱在线无码| 太久视频| 综合伊人激情| 欧美精品成人一区二区在线观看| 男人的天堂1024| 中文字幕一区二区三区四五区| 欧美久久久| 九久9热| 蜜臀av在线播放一区二区三区| 第一高清av中文字幕| 欧美成人A天堂片在线观看| 黄色操人| 日韩熟女乱伦中出| 国产91av在线播放| yaouchengrenav| 久久性爱视频免费看| 91天美| 91熟女视频| 色婷婷一区二区三区久久| 久久久精品,3| 色噜噜日韩精品| 99日视频在线免费| 神马九九九| 另类专区加勒比| 大香蕉在线SuP| 亚州欧美综合| 精品9999| 人人妻人人爽人人精品| 蜜桃丰满熟妇av无码区不卡| 裸体美女久久久| 婷婷另类小说| 麻豆成人av| 做爱福利视频一区二区| 久久亚洲熟妇在线视频| 精品久久久不卡一区二区| AV99热18这里只有精品| 玖玖超碰熟| 大香交| 综合亚州欧美| 天天肏视频| 好爽视频在线观看视频| 九九碰九九爱97超碰| 国产午夜精品在线观看| 天天日天天干少妇日| 女色综合| 无码不卡亚洲成?人片| 久草精品国产99| 婷婷久久五月综合激情| 亚洲欧美在线观看无码| 国产极品99热在线播放69| 屁屁影院一区二区三区国产| 欧美啪啪女女| 99免费视频| 老熟女熟妇| 天天色怡春院| 久久久久成人网| 香蕉视频欧美一卡二卡| 囯产精品久久久久久久久久梁医生 | 超碰九7| 成人线上超碰| 免费观看国产不卡av| 久久久久国产精品喷潮免费观看臀 | 精品人妻视频一区二区在线播放 | 亚洲中文制服诱惑| www.高清无码诱惑一区.com | 黑人嘿嘿嘿超爽免费视频| 国产情侣自拍在线播放| 一区二区 韩日AV| 精品无码一区二区| 富二代亚洲精品99| 久久香蕉超碰97国产精品| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 性在久久久久久| 伊人影院综合是一个与深夜成人在线| 中文字幕 国产区| 亚洲男人的天堂一区二区| 天美传媒在线一区| 熟女久久| 蜜乳视频网站| 8050无码八戒| 欧美九九爱| 丝袜亚洲91| 久久久久久性爱免费视频| 久艾草在线精品视频在线观看| 国产日逼视频| 久久九九网| 中美日韩毛片| aV中文麻| 人妻干天天| 日韩一级片| 天天综合网在线| 情色大香蕉| 午夜a成v人电影| HEYZO高无码国产精品227| 久久黄黄| 91精品免费| 午夜毛片亚洲精品片国产久久久| 国产精品毛片?v一区二区三区| 欧美综合区| 无码99| 日韩无码服务区| 亚洲高清视频在线免费观看| 精品国产91av一区二区三区| 婷婷色综合| 日日嗨AV一区二区夜夜| 91在线视频国产网站| 探花一区在线| 久久AV无码1区2区3区| 丝袜美腿射精91| 午夜精品久久一区二区| 一级日本牲交大片好爽在线看| 一区二区 韩日AV| 亚洲精品一区二区免费在线观看| 亚洲男人天堂网| 午夜福利视频在线一区| 91中文精品日韩欧美在线| 久久久啊啊啊| 四虎午夜影院| 欧美色图天堂在线| 大香蕉日亚洲日本亚大| 十八禁av无码免费网站APP| 啊啊啊操一区| 激情视频图片| 人人操肉肉| 2001天天操| 日韩射图| 国产一区二区三区导航| 麻豆AV短剧| 97欧美| 色情综合| 在线观看啊啊啊啊啊| 人人摸.人人色| 成人贴图日韩欧美| 伊人超碰97| 欧美在线观看综合国产| 中文字幕女同在线| 国产黄色视频久久| 91精品国产综合久久久蜜臀| 色网亚洲人| 一区二区三区精品久久| 青青草乱入乱欲视频在线观看| 襙一襙| 看日韩美女二区三区免费操逼视频| 99这里只有精品| 色噜噜精品一区二区三| 精品91摸| 黄骗免费网站| 这里只有精品久久| 欧美黑人与女人91| 大伊香蕉在线视频免费| 成人天天爽| 欧美91视频| 操操操操网黑人| 超碰97人妻免费在线| 人妻插插人妻人| 蜜区区视频79| 久久久成人国产精品无码| 美女91在线观看| 国产美女口爆吞精视频| 91大神电影天堂| 97欧美视频| av天天在线观看| 欧美色图20p| 久久精品一区二区三区不卡| 加勒比海色香蕉婷婷| 欧美性爱五月天| www.男人的天堂| h在线看免费版在线看| 日本大香蕉综合网| 一本道综合色图| 怡春院久久| 色色五月婷| 东京热,男人的天堂| 亚洲情色中文字幕一区| 国产97综合| 自拍鲍鱼一区在线高清观看免费| 精品少妇一区二区| 欧美激情综合| 国产美女高潮| av在线浏览| ,成人免费啪啪视频| 99xav| 国产AV无码AV| 日韩欧美中文字亚洲慕| 在线看免费无码AV天堂的| 中文字幕无码不卡啪啪| 99热66| 91伊人| 欧美亚洲丝袜美女电影| 色y情视频免费看| 欧美熟妇亚洲版| 一本久道在线综合视频| 超碰综合97在线| 成人电影一区| 国模不卡| 欧美成人性爱视频大全| 国厂麻豆77q4| 青娱乐亚洲自拍| 91网站18+| 国产九九九九九九九九| 91日韩网站| 污啪啪啪视频| 强奸乱伦 亚洲一区| 北京美女一区二区| 精品国产久热在线观看| 欧美高清91| 亚洲av在线免费观看| 国产激情在线| 丁香六月婷婷综合| 综合97| 久久侵犯人妻爽爽爽| 亚洲中文字幕精品一区| 久久久久久91香蕉国产| 高清成年美女黄网站免费大全| 中文字幕免费看| www.大香| 日韩综合色网| 五月丁香网站| 婷婷超| 天天日天天操VV| aⅴ日韩成人电影av在线免费看av大全| 91热色| 97午夜剧场日韩| 日韩性爱1级片视频| 丝袜美腿丝袜| 亚洲美女30b| 成人网站 免费观看| 亚州性色| 久久爽爽精品| 婷婷五月天av| 激情色图| 男人成人黄色视频在线观看免费下载| 又黑又大又粗| 操逼逼中文字幕| 亚洲欧美洲综合| 日韩电影天堂视频一区二区| 麻豆国产尤物AV| 日小BB小视频| 加勒比色99999| 久久夜嗨| 九九九九九九九精品视频| 九九精品无码专区免费| 99草精| 伊人久久久日韩一区| 激情五月天网站| 人人看人人插| 欧美日韩色| 亚洲天堂日本| 99久久com免费视频′| 久久久亚洲高清不打码| 国产传媒一区二区三区| 青青草玖玖爱| 激情综合网五月婷婷| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 超碰在线国产| 人人 操人人 操人人| 天天狂操夜夜狂日| 天天大干大香蕉| 久久综合18p| 97人人模人人爽人人| 欧美成人A√在线一区二区| 色臀AV| 青青伊人加勒比海| 五月婷婷色色| 国产第25页在线观看| 国产女s强制榨精视频| 麻豆一区二区AV天美| 精品九九九九九九九九九| 精品少妇后入一区二区三区四区人妻巨乳| 人妻系列无码专区中文有码| 午夜男女爽爽爽影院视频| 96久久久久| 欧美偷偷网| 操人妻逼91| 95精品在线| 五月丁香激情综合网| 成人乱码一区二区三少妇| 日日干天天干夜夜爽| 日日夜夜免费| 校园春色 亚洲| 国产精品一区二区后入| 色噜噜国产在线| 素人播放一区| 思思热在线| 亚欧国产无码精品在线| 国产野战露脸在线播放| 黑人精品XXX一区一二区| 亚洲美女AV无码| 亚洲毛片久久| 美女上床网站| 中文字幕精品专区搜索结果91| B049AV在线播放| 九九久久国产精品| 操九九九九九九| 欧美制服另类丝袜| 粉嫩国产精品久久粉嫩| 青青草天天亲夜夜操网| 亚洲色图日韩精品| 岛国艾薇凹凸视频天堂| 91c色| 国产精品麻豆成人av| 国产一级高清免费观看| 啊啊啊好多水| 精品国产乱码久久| 综合夜夜| 94色色电影网| 中欧人妻丝袜中文字幕| 亚洲视频精选| 久久精品熟妇丰满人妻99| 破处bbq| 五十路成人在线视频二区三区| 97资源站久久| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 亚洲综合图片在线| 欧美一级专区免费大片 | 毛片电影一区二区三区| 在免费jIzzjIzz在线视频| 国产精品呦一区二区三区| 亚洲AV秘 精品久久老牛影视| 男人高清无码一区二区| 萌白酱自拍视频| 天天操天天干一区二区| 夜间福利片1000无码| 日韩精品永久在线观看| 黄片在线免费在线观看| 五月天黄色激情视频| 久久东京国产精品视频| 天天爽天天干| 99青草| 91 国产丝袜在线放观看| 大吊色| 国产第二页| 人妻少妇无码| 欧美最大综合网| 蜜桃AV天堂| 91欧美综合| 久久成年片色大黄全免费网站| 强奸乱伦AV一天堂网| 天天懆天天日| 97国产高清视频在线观看| 欧美在线播放aaaa| 久久麻豆一区二区| 老女人爆菊| 动漫区日韩区欧美区| 国产精品久久久久久久久久二区三区| 性欧美| 日本欧美不卡| 91色宗合| 免费精品国偷自产在线在线| 91视频伊人| 在线视频免费观看午夜| 国产不良强奸视频免费看| 韩日色费| 看日韩操逼| 精品一区二区三区蜜桃臀赵总 | 国产精品熟女乱伦| 美女超碰978| 97硬碰| 国产人人干| 国产精品农村妇女| 99久久亚洲精品无码毛片潘甜甜| 精品亚洲国产成人精品| 中文字幕一区二区三区视频播放| 97超碰国产精品| 青青草视频导航官网| 亚州五月| 97视频在线观看免费高清| 大香蕉乱级| 综合久久六月久久婷婷| 久久久蜜桃一区二区三区| 亚洲欧洲无码97久久精品| 九热超碰| 亚洲天堂男人天堂| 啪啪视频亚洲第一| 色播丁香| 欧美A√综合网| 亚欧美无遮挡| 曰韩中文人妻视频| 日韩国产成人自拍视频| 国产欧美伊人| 亚洲永久AV无码精品秋霞| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场| 九九精品网| 成人免费毛片| 九九在线精品| 诱惑人妻欧美一区在线播放| 欧美一级专区免费大片| 欧亚日韩中文在线| 亚洲av影音先锋| 欧美色三级片91| 日本超碰色精品| 人妻丝袜日本| 黑人嘿嘿嘿超爽免费视频| 97中文天堂| 97在线欧| 精品无码一区二区三区色欲| 色综合久久88色综合久久天天| 亚洲精品97在线| 自拍第一页| 亚洲精品九九九| 欧美大香蕉同搞| 九九玖玖精品| 精品国产乱码久久久影院| gogogo免费高清看中国国语| 六月丁香久久| 久久 亚洲 日韩 人妻| 日本色日夜干| 日本亚洲熟女视频| 欲香欲色天天天综合和网| 人人妻人人爽一区二区三区| 26uuu性| 夜夜操夜夜爽夜夜高潮| 综合色区偷拍| 丁香六月东京热| 一区,二区,三区网站| 香蕉国产97| 青椒国产97在线熟女| 爱干爱射网啊啊啊| 色妺妺AⅤ| 国产成人欧美一区二区三区的国产| caorenqi shipin| 日本不卡免费二区| 免费的很黄很污的全部视频| 欧美一区二区在线资源| 亚洲熟久久| 9久在线视频只有精品| 激情婷婷丁香| 91亚洲黄色网| 亚洲色图殴美色图激情乱伦| 亚洲精品国产精品乱码不卡| 老熟女91| 国产av尤物| 欧美情色亚洲| 狠狠激情综合狠狠操中文字幕| 国产精品密臀网在线观看| 国产后入| AV天天在线观看| 97视频免费| 强奸xx国产| 春色综合免费| 亚洲国产婷婷在线播放| 91夜夜蜜桃臀1区2区3区| 女沟厕偷窥piss小便| 色九九久九九| 欧美日韩青操| 操国产逼| 国产欧美伊人| 国产熟女无套内射| 超碰在线人妻| 亚洲污污网站| 亚洲国产精品有声| 国产高清不卡视频| 日韩一级性爱无码| 欧洲中文字幕| 台湾佬大香蕉| 婷婷丁香五月激情啪啪| 亚洲欧美变态| 欧美 亚洲 偷拍自拍| 日韩精品人妻中文字幕不卡乱码| 手机在线观看不卡无码av| 一二三四视频在线社区中文字幕| 日韩性爱1级片视频| 97超碰在线资源网站| 欧美精品成人在线播放| 久久99精品国产| 性暴力欧美猛交在线直播| 伊人精品视频| 天天色,天天干,天天干| 91精品免费| 國產尤物AV尤物在線觀看 | 欧美日韩系列| 亚洲精品日韩国产欧美| 床戏久久久av一区二区麻豆| 色婷婷香蕉| 影音资源男人日韩| 夜夜影视四色| 大香蕉手机在线| 五月丁香成人网| 亚洲激情视频| 内射日韩大臀美女| 国产精品96| AV天堂男人的天堂| 欧美精品99久久久**| 欧美在线综合| 91精品黄在线观看| 美女丝袜激情小说| 国产区性爱在线视频秋霞豆| 97 国产精品| 中文字幕在线播放2中文字幕在线观看2| 神马午夜久久| 青青草伊人久久| 国产精品麻豆免费视频| 亚洲视频二区| 国内精品久久久久影院亚洲| 日韩性色| 精品福利视频| 美国人人操人人操| 精品九九九九九九九| 亚洲第一黄色av网站 | 国产av高清版| 91av一区二区在线观看| 蜜桃精品视频一区| 中国东北熟女老太婆内谢| 老熟乱一区二区三区四区| 蜜桃视频精品一区二区| 国产av激情无码久久天堂| 2026国产精品视频| 午夜偷拍久久熟女| 熟女熟妇一区二区三四区| 久久不卡一区二区| 亚洲成人免费中文字幕| 精品成人久久久人人亚洲| 亚洲操人| 日日骚中文字幕| 日本啊啊啊啊啊视频| 操逼网站视频漫画国产| 啪啪啪亚欧美视频| 91久久18禁| 国产午夜激片Av毛片不卡| 天天日天天干天天摸天天操| 久久99国产综合精品女同| 岛国片国产成人亚洲播放| 三级色影综合网| 啊啊啊啊操死我了|