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

ARTICLE DETAIL

資訊詳情

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

impeccable實戰(zhàn):用規(guī)則引擎構建本地代碼質量門禁

impeccable實戰(zhàn):用規(guī)則引擎構建本地代碼質量門禁 1. 從一句完美說起為什么我會寫一個叫 impeccable 的代碼質量工具去年下半年我被一個前后端聯(lián)調的項目折騰到失眠。接口文檔寫得很漂亮實際跑起來總是差那么一兩個字段前端說后端改了返回值沒通知后端說前端根本沒看更新日志。最后排查了一圈問題根源不是溝通態(tài)度而是規(guī)范的執(zhí)行完全依賴人的記憶。代碼提交前沒人檢查字段命名是否統(tǒng)一、接口返回結構有沒有變動、測試覆蓋夠不夠全靠每個人在 IDE 里肉眼找茬。這種場景想必你也不陌生——團隊里只要超過三個人代碼和交付物的完美就成了一種玄學。后來我在自己的公共倉庫里看到一個工具項目名字非常直接就叫impeccable英文意思是無可挑剔的、完美無瑕的。第一反應是這名字起得真夠自信緊接著看了代碼才發(fā)現(xiàn)它其實是一套完全基于本地規(guī)則引擎的代碼質量檢查工具——把靜態(tài)分析、文件規(guī)范校驗、TODO 遺留追蹤、測試覆蓋率閾值檢查綁定到一起統(tǒng)一輸出人類可讀的報告。它沒有依賴任何云端服務不需要賬號不采集數(shù)據(jù)跑起來就是一條命令。這個工具解決的核心問題非常樸素把代碼質量從口頭標準變成可自動執(zhí)行的硬性門檻。你 commit 之前跑一遍它告訴你哪些文件有語法隱患、哪些函數(shù)命名不合規(guī)、哪些 TODO 得清掉、覆蓋率差了 1.2% 不能合入主干。適合誰用個人項目想要提升代碼整潔度的人、小團隊希望低成本引入質量門禁的工程師、以及所有被代碼 review 像吵架現(xiàn)場折磨過的開發(fā)者。我給這篇文章起的標題也是 impeccable就是想把它的設計思路完整拆開講講內部規(guī)則是怎么寫的、參數(shù)是怎么算的、為什么要這樣設計。這個工具現(xiàn)在是我個人提交流程里的一個必選項如果你想復刻一套屬于自己團隊的無可挑剔這篇文章可以直接當模板抄作業(yè)。2. 規(guī)則引擎背后的設計邏輯為什么沒有做成插件全家桶2.1 從需求反推質量檢查工具的痛點寫工具之前我盤了一下市面已有的方案ESLint 管 JS、Pylint 管 Python、RuboCop 管 Ruby各語言的 lint 工具確實成熟但問題在于它們只管語法和風格不管交付物完整性。比如 Python 的 lint 不會檢查你有沒有殘留print調試輸出、不會檢查文檔文件是不是空殼、不會檢查版本號有沒有升級。一個完整的提交流程通常是語法檢查 → 單元測試 → 覆蓋率統(tǒng)計 → 文檔/配置文件校驗 → 變更記錄核對這五個環(huán)節(jié)分散在不同工具里每次提交要手動一條條跑步驟多而割裂。impeccable 的設計決策是從使用場景倒推出來的——我是給本地 git 倉庫當前置檢查用的不是給大型 CI 集群做流水線編排的。這意味著工具不需要分布式執(zhí)行不需要 HTTP 服務端不需要復雜的 Worker 調度它只需要做一件事在本地把質量檢查的規(guī)則統(tǒng)一收斂跑完給一個明確結果。這種單機專注型定位在技術選型上省掉了 80% 的復雜度。你說它為什么不用現(xiàn)成的 lint 插件全家桶在這個項目最初的探討里也提過直接集成多個 lint 工具的配置再做個聚合展示的方案。但做了原型測試后我發(fā)現(xiàn)兩個致命問題一是版本同步成本高每個語言工具的更新節(jié)奏不一致環(huán)境里有舊版本會直接導致檢查結果不穩(wěn)定二是插件越多規(guī)則沖突越難調到可解釋的狀態(tài)最后大概率變成一個只報警不改錯的擺設。所以 impeccable 最后走的是自研最小內核 外部工具按需接入的路線。用 Python 寫是因為跨平臺好分發(fā)沒有強依賴臨時目錄里放個腳本就能跑對使用者來說心理負擔也小。2.2 三層結構掃描層、規(guī)則層、報告層整體結構非常清晰看源碼的時候很容易梳理出三層邏輯。最底下是掃描層它的任務是在給定目錄下遞歸遍歷文件按后綴名分類歸檔同時記錄文件的大小、修改時間和行數(shù)。中間是一組規(guī)則檢查器每條規(guī)則對應一個 Python 類類里只有一個check()方法接收掃描上下文返回問題列表。最上層是報告格式化器把問題按文件聚合輸出帶顏色標記的終端表格并給出總評分。這三層我實際跑下來最大的感受是分離得越干凈擴展越簡單。你要是想新增一條禁止文件名帶空格的規(guī)則只需要在規(guī)則目錄下新建一個文件寫清楚檢查方法然后在規(guī)則注冊表里登記一下掃描層和報告層完全不用動。這種類似算法題里獨立函數(shù)的結構是質量工具的合理形態(tài)——因為質量的維度太多你必然要持續(xù)往里加規(guī)則如果規(guī)則和遍歷邏輯耦合在一起加到最后就是一團亂麻。對比那些巨型的一體化質量平臺impeccable 更像是一個瑞士軍刀式的單兵配置。它的核心價值不靠功能數(shù)量靠的是每條規(guī)則都可審查、可解釋、可單獨開關這件事。我們團隊用了一段時間之后把一條業(yè)務定制規(guī)則的實現(xiàn)時間從原來的 40 分鐘縮短到了 10 分鐘主要就是因為它不需要理解整套框架的調度邏輯只需要處理輸入一個文件對象輸出一個問題列表。2.3 為什么 Python 是個合理的選擇做技術選型的時候我評估過三個方案Go 寫成的獨立二進制、Node.js 的全局命令行工具、Python 腳本。Go 編譯后的單文件分發(fā)確實香但遇到團隊里有人要改規(guī)則時編譯鏈路反而成了阻礙。Node.js 在國內環(huán)境里依賴安裝有時候會出幺蛾子不太適合零摩擦使用的目標。Python 的取舍在于分發(fā)要裝解釋器但考慮到我們團隊本來就用 Python 做數(shù)據(jù)分析這個成本可以直接忽略。還有一個關鍵原因是 Python 的文件遍歷和文本處理的表達能力確實強。質量檢查工具的絕大多數(shù)規(guī)則本質上是字符串模式匹配、AST 節(jié)點遍歷、正則表達式片段提取這三種操作在 Python 里都有一行式寫法。語法分析的部分雖然做不到 Pylint 那種深度的 AST 全量檢查但應付函數(shù)名必須是 snake_case禁止 import 順序混亂TODO 標簽必須在當天清掉這類需求綽綽有余。這里我要強調一下工具的技術棧從來不是越酷越好而是越貼合團隊認知越好。一個沒人能改的檢查工具最終一定會變成擺設因為質量規(guī)則需要跟著業(yè)務一起演化。Python 的易改性就是 impeccable 能長期活下來的關鍵。3. 核心規(guī)則解析讓完美有尺可量、有據(jù)可依3.1 代碼規(guī)范檢查不放過的三類基礎問題代碼規(guī)范在 impeccable 的規(guī)則庫里占了大頭原因是它是性價比最高的檢查項。我把它拆成三類命名規(guī)范、文件組織規(guī)范、廢棄代碼掃描。命名規(guī)范用的是多維判定不只是簡單地看下劃線。規(guī)則類里內置了一個小型的縮寫詞典比如getUserData這類駝峰命名會被標記為疑似非 snake_case但ID、URL、HTTP這類全大寫縮寫不會誤報。函數(shù)名如果超過五個單詞會額外提示語義過重建議拆分因為一行代碼如果命名都長到需要猜可讀性基本已經出問題了。文件命名檢查會掃到目錄下存在的.DS_Store、Thumbs.db這類系統(tǒng)殘留文件以及.pyc這樣的編譯產物直接給警告。廢棄代碼掃描是那種平時不注意、清理后發(fā)現(xiàn)項目輕了非常多的類型。它檢查的不僅僅是注釋掉的代碼還包括了三類目標一是超過 30 天未修改且被標注為# deprecated的廢棄接口二是沒有任何引用調用的工具函數(shù)三是 TODO/FIXME 標記的年齡。TODO 年齡的計算方式是用git log定位標記所在文件最后一次提交時間超過 7 天還沒處理的 TODO 會被單獨列為紅色項。這一點在實操中很有威力——很多團隊的 TODO 寫完之后基本等于石沉大海在 impeccable 之前的項目里我見過 200 多個 TODO 沉淀了兩年的這種標記比注釋本身更沒有價值。3.2 交付物完整性校驗構建可交付的文檔體驗代碼寫得再漂亮交付物一團糟用戶的體驗就是這個團隊不專業(yè)。impeccable 里專門設計了一個交付物完整性校驗模塊這也是我個人最喜歡的部分。這個模塊會檢查這幾個維度README 是否存在、是否有 100 字以上的項目簡介、是否有安裝命令和運行命令CHANGELOG 是否按日期倒序排列、最新版本號與 git tag 是否一致LICENSE 這個文件要求更嚴格不只是存在而是內容要匹配已聲明的許可證模板配置文件的 schema 要能解析比如pyproject.toml里的[tool.black]配置段如果語法錯誤直接給致命錯誤。這套設計的核心邏輯是用戶拿到項目的第一眼影響信任度的是文檔完整性對它邏輯合理的校驗辦法是對照清單逐一驗證而不是用模糊的感覺文檔寫得好不好來判斷。檢查規(guī)則都是可執(zhí)行的硬條件不存在主觀評分所以即使團隊里最不擅長寫文檔的人也可以用它作為提醒。比如有一次我提交前運行檢查報出README 缺少使用示例——當時的真實情況是我確實寫了文檔但忘了把實際調用參數(shù)的示例代碼加進去這種漏網之魚靠人自己 review 很難察覺。3.3 測試覆蓋率閾值計算1.2% 差值背后的邏輯覆蓋率是 impeccable 里唯一一個涉及數(shù)值計算的檢查項。它的實現(xiàn)沒有去重復造輪子而是解析coverage.py生成的 XML 報告再乘以一個加權系數(shù)得到最終覆蓋率分。這里我給自己定的質量門檻是新建項目的覆蓋率必須 ≥ 80%維護中的項目下限 70%緊急修復時允許一次性降級到 60% 但會在報告里打上臨時豁免標記。為什么不直接一刀切 80%因為實際情況里有些模塊是簡單的數(shù)據(jù)結構定義比如常量映射、DTO 類寫單元測試屬于形式主義但是核心業(yè)務函數(shù)覆蓋率低于 60% 就說明測試完全沒跟上。所以覆蓋率不是單純的數(shù)字要結合代碼的性質去給閾值:模塊類型建議覆蓋率說明核心業(yè)務邏輯≥ 90%涉及金額、權限、狀態(tài)流轉的代碼必須覆蓋工具函數(shù)庫≥ 70%純函數(shù)容易測試低于這個值說明偷懶數(shù)據(jù)模型/配置類≥ 40%主要是保證序列化/反序列化路徑可跑通UI 渲染層≥ 50%需要配合組件測試不用追求純函數(shù)覆蓋率它的計算方式是拿到每個模塊的覆蓋率后自動生成一個加權總分規(guī)則里記錄的閾值判斷會對比這個分數(shù)給出 PASS/FAIL。這里有個實操心得不要只盯著全局覆蓋率要按模塊拆開看。全局 90% 可能是把所有沒測的代碼堆在一個深層模塊里這種結構性問題靠沒門檻的全局指標發(fā)現(xiàn)不了。impeccable 的閾值粒度為模塊級的一個衍生設計團隊用下來之后至少把那種丟人但沒人管的底層核心模塊暴露出來了。4. 實戰(zhàn)從零構建一套自己的 impeccable 檢查配置4.1 初始化與規(guī)則選型模板怎么選impeccable 的項目體系建好之后你會發(fā)現(xiàn)關鍵其實不在它的內置規(guī)則有多少而是怎么把合適的規(guī)則開放給團隊。它安裝完成后會生成一個impeccable.config.yml配置文件第一次初始化會問你要用哪個規(guī)則的基準模板。我經常推薦的是這三個預設default模式適合新項目起步只開最基本的命名、文件、文檔檢查strict模式適合開源項目或多人協(xié)作把覆蓋率、提交記錄檢查全部打開legacy模式適合改造老項目它會默認把規(guī)則降級為僅警告不阻斷跑一個星期之后你根據(jù)警告量再逐步收緊為錯誤阻斷。配置文件的格式非常直白我貼一段自己實際用過的配置作參考project: name: crm-service language: python version: 0.3.2 scan: include: - src/ - tests/ exclude: - src/generated/ - tests/fixtures/ max_file_size_kb: 500 rules: naming: enabled: true style: snake_case function_word_limit: 5 coverage: enabled: true report_path: coverage.xml module_threshold: 70 todo_age_days: 7 forbidden_files: - .DS_Store - Thumbs.db - *.pyc注意exclude的列表很關鍵——項目里往往有自動生成的代碼比如 ORM 模型、protobuf 生成文件這些文件本來就不需要人工規(guī)范如果不對它們設置豁免每次檢查報錯一大片久而久之團隊會對這個工具脫敏。所以我在所有項目里都約定生成代碼必須顯式排除不參與質量分計算同時定期檢查排除列表防止時間長了有人把寫死的代碼也偷偷塞進排除目錄。配置文件的加載邏輯也做了一個很實際的取舍它支持按目錄層級合并配置。意思是根目錄放一個基礎配置子目錄可以放自己的覆蓋配置。比如tests/目錄下的覆蓋率閾值可以比src/低 20 個百分點因為測試代碼本身的分數(shù)不代表交付質量。這個設計是我在別的項目里經常遇到全項目一刀切的痛點后專門驗證過的實測對減少誤報非常有效。4.2 規(guī)則擴展實操手寫一個禁止 TODO檢查器其實 impeccable 的擴展機制比我想象中簡單得多。它定義了一個BaseRule基類你只需要繼承它實現(xiàn)check(context)方法。context是掃描層傳下來的上下文對象里面有當前文件路徑、語言類型、文件內容、行號列表。舉個例子我寫過一個提交前清空 TODO的規(guī)則。核心邏輯并不復雜遍歷文件內容找到所有TODO開頭的行提取出對應的行號去 git 歷史里查詢該文件最后一次提交的時間超過 7 天就返回一個RuleViolation對象。from impeccable.rules import BaseRule from impeccable.violation import RuleViolation import re from datetime import datetime, timedelta class TodoAgeRule(BaseRule): name todo_age description TODO 標記必須在 7 天內處理 def check(self, context): violations [] for file_ctx in context.files: if file_ctx.language not in (python, go, javascript, typescript): continue for line_no, line in enumerate(file_ctx.lines, start1): if re.search(r#\s*TODO|//\s*TODO, line): last_commit context.git.last_commit_time(file_ctx.path) age_days (datetime.now() - last_commit).days if age_days 7: violations.append( RuleViolation( filefile_ctx.path, lineline_no, messagefTODO 已存在 {age_days} 天請盡快處理, severitywarning, ) ) return violations這段代碼在真實跑的時候有一個地方需要注意中文語境里TODO經常被寫成待辦或者是To Do正則里如果不加\s*很容易漏掉縮進變體。我第一次寫的規(guī)則就是沒考慮這一點導致大量帶縮進的 TODO 根本沒被匹配到后來統(tǒng)一改成r#\s*(TODO|待辦|To\s?Do)才覆蓋完整。擴展規(guī)則后在配置文件custom_rules段里注冊一下路徑impeccable重啟后會自動加載。4.3 接入 Git 提交鉤子質量檢查怎么成為肌肉記憶工具好寫的部分在核心引擎難的部分在讓人養(yǎng)成習慣。因為如果你每次都要手動跑命令它大概率會慢慢變成想起來才跑一次的擺設。我的做法是把 impeccable 接入到 Git 的pre-commit鉤子里。pre-commit鉤子本身不是一個高深的東西它是 Git 在創(chuàng)建提交之前自動執(zhí)行的 shell 腳本。impeccable在初始化時給了一段安裝命令會在.git/hooks/pre-commit中寫入一行調用。我實際跑下來覺得最合理的鉤子策略是提交到本地分支時只跑快速檢查命名、文檔、TODO 年齡、文件規(guī)范不跑全量測試。全量檢查留到推送主干或者發(fā)版本之前再手動跑因為覆蓋率那一項跑起來慢一次提交跑兩三分鐘會讓人瞬間不想提交代碼。養(yǎng)成肌肉記憶的核心體驗是提交動作本身要足夠流暢流暢不等于完全放開而是讓最常見的問題被無聲攔截。另一個關鍵設計是檢查結果分段輸出。終端報告會顯示三部分致命錯誤阻斷提交、警告提示要改但允許提交、建議供 review 參考。團隊合作時我從來不會把警告也一起變成硬阻斷因為實際業(yè)務里確實存在技術債需要臨時借的場景把它變成硬門檻會導致有人寫--no-verify繞過鉤子那規(guī)則本身也就名存實亡了。核心原則是檢查工具的威嚴在于致命錯誤攔得住而不是所有規(guī)則都堵死。4.4 多語言支持同一套邏輯怎么覆蓋不同項目我個人的項目里語言很雜既有 Python 做數(shù)據(jù)處理又有 Go 寫 API 服務還有前端項目里的 TypeScript。impeccable 在語言支持上的思路是語言無關的規(guī)則引擎它根據(jù)文件后綴決定走哪套解析器。比如命名規(guī)范檢查Python 用snake_caseGo 用MixedCapsTypeScript 用camelCase規(guī)則本身卻是同一套檢查標識符分割是否符合目標風格的邏輯。不同之處在于解析器寫法——Python 直接讀行內容加縮進判斷Go 需要跳過 struct 定義段里的某些字段TypeScript 則要忽略接口定義里的屬性名。前端的文件組織檢查還有一條獨特規(guī)則組件文件不能超過 400 行超過則提示拆分為多個可復用組件。這條規(guī)則最初是用正則匹配行數(shù)實現(xiàn)的后來發(fā)現(xiàn) JSX 多行展開會讓單行代碼很長但行數(shù)不多于是改成字符數(shù)超過 15000 個字符或行數(shù)超過 400 行任一滿足就警告的雙指標。語言差異導致的具體規(guī)則本地化是這個工具做得好的一點——它不是拿同一套死板規(guī)則強行套所有語言而是允許每個類型按實際痛點單獨開規(guī)則。5. 運行報告怎么看從綠色 PASS 到紅字 FAIL 的分析思路5.1 評分計算與權重分配impeccable 的輸出不只是一堆 PASS/FAIL每個項目運行結束會給出一個 0~100 的總評分。評分計算有一套內部的權重分配邏輯理解這個邏輯有助于判斷自己項目哪些方面要優(yōu)先補。默認權重是代碼規(guī)范 35 分、交付物完整性 25 分、測試覆蓋 20 分、提交歷史規(guī)范 10 分、廢棄代碼清理 10 分。其中提交歷史規(guī)范的意思是用 git 提交信息里的前綴檢查比如fix:、feat:、docs:不符合 Conventional Commits 協(xié)議的提交記錄會被扣分。這個權重是可以改的但我的建議是不要頻繁調整因為權重一旦變動團隊對什么重要的認知會變得模糊——重點是讓所有人在同一套標準下對齊而不是讓負責人天天調標尺。運行結束后的終端輸出長這樣────────────────────────────────────────────── impeccable 質量檢查報告 項目: crm-service v0.3.2 ────────────────────────────────────────────── [PASS] 命名規(guī)范檢查 通過 (檢查 342 個標識符) [PASS] 文件組織檢查 通過 (排除 3 個生成目錄) [FAIL] 測試覆蓋率檢查 失敗 ├─ api/ 93.2% (通過, 閾值 90%) ├─ core/ 68.4% (未通過, 閾值 70%) └─ models/ 55.1% (未通過, 閾值 60%) [WARN] TODO 標記檢查 共發(fā)現(xiàn) 2 處超過 7 天 ├─ src/auth.py:82 TODO: 需要補充刷新token邏輯 └─ src/export.py:211 TODO: 等待設計稿定稿 ────────────────────────────────────────────── 總評分: 76/100 (需要 ≥ 85 才能通過提交)從這份報告可以明顯看出來問題聚焦在core/模塊的覆蓋率不達標和兩處陳年 TODO。對于團隊負責人來說它的價值在于把模糊的質量好像最近不太好具象成了可定位的這兩個文件的具體指標在拖后腿。5.2 修復優(yōu)先級怎么排拿到報告之后優(yōu)先級判斷也是技術活。根據(jù)我的經驗處理順序應該是先處理致命錯誤FAIL 項因為它們阻斷交付。數(shù)據(jù)庫遷移腳本、CI 配置、文檔關鍵路徑如果掛了后面的所有步驟都會卡住。但不要盲改分析 FAIL 的原因往往是腳本未更新或者測試數(shù)據(jù)沒造全而不是代碼本身有問題。其次是處理覆蓋率未達標的模塊因為這是一個漸變過程晚修一天問題會放大而core/如果只有 68% 的覆蓋率大概率意味著核心的異常分支和邊界條件沒測到。最后再處理 TODO 和警告。很多人看到警告就手癢想立刻全改我的建議是克制——如果警告不是致命錯誤列進維護項里定一個周五下午統(tǒng)一清理的時間窗。實際這樣做下來我發(fā)現(xiàn)團隊對檢查報告的信任度反而提升了因為大家知道報告不是挑刺狂魔而是分優(yōu)先級幫忙找問題的助手。這種體驗跟別的高壓監(jiān)控工具完全不同。6. 常見問題與排查技巧實錄工具跑不起來或者誤報怎么辦6.1 常見問題速查表根據(jù)我在不同機器、不同項目里跑 impeccable 的實測記錄最容易踩中的坑其實非常集中我整理了一個速查表癥狀可能原因解決方式運行報ModuleNotFoundError本機 Python 環(huán)境缺少依賴用虛擬環(huán)境安裝pip install -r requirements.txt覆蓋率統(tǒng)計為 0%coverage.xml路徑沒配對在配置里把report_path指向正確位置規(guī)則全部被跳過配置文件縮進寫錯 YAML 解析失敗用impeccable --debug看配置加載日志中文路徑下匹配異常正則未加re.UNICODE或路徑編碼問題在規(guī)則里顯式統(tǒng)一用pathlib不直接拼字符串鉤子太慢導致提交卡頓全量檢查在每次 commit 都跑把鉤子里改成只跑快速檢查全量放推送前手動跑子目錄配置不生效配置文件命名不是impeccable.config.yml確認文件名和大小寫加載規(guī)則嚴格按此匹配第六個問題我實際踩過因為 macOS 下默認文件系統(tǒng)大小寫不敏感Impeccable.config.yml和impeccable.config.yml都能讀但到了 Linux CI 上就只有小寫的才會被加載。這類開發(fā)環(huán)境正常、CI 上消失的問題排查思路里第一件事就是檢查配置文件命名。6.2 誤報處理與規(guī)則豁免的正確姿勢沒有一套規(guī)則能覆蓋所有真實場景所以誤報是必然存在的問題。對誤報的處理方式直接決定這個工具的命運如果處理太重會打擊積極性如果太輕會積累噪音。impeccable 給了一個--ignore參數(shù)可以臨時豁免某個文件的某條規(guī)則。但我的建議是臨時豁免必須留痕。在報告的警告區(qū)里豁免操作會自動追加一條記錄寫明誰在什么時間對哪個文件豁免了哪條規(guī)則。這不是為了追責而是為了后續(xù)復盤——如果同一個文件的同一條規(guī)則被反復豁免這份記錄會提醒你這條規(guī)則對這個目錄可能不太適用需要調整規(guī)則而不是繼續(xù)豁免。真正的豁免姿勢是在配置文件里加ignore_patterns。比如前端項目里 axios 封裝文件的innerHTML使用經常會觸發(fā) XSS 嫌疑警告但這個文件做的是 html 轉義工具本身是安全的。這種場景就屬于規(guī)則的語境不適合當前代碼正確的做法是針對該文件單獨關閉這條規(guī)則并注明原因而不是全項目關掉 XSS 檢查。另一個常見問題是測試框架生成的臨時文件被當成源碼。給tests/下創(chuàng)建的數(shù)據(jù) JSON 文件文件規(guī)范檢查器會對它們做命名規(guī)范檢查但實際上它們是測試夾具不該納入質量評分。在配置文件里把它們加進scan.exclude就行。第一次遇到的時候我覺得這是設計缺陷后來想通了——工具永遠不知道哪些文件對你來說是生產代碼哪些是測試消耗品把這個判斷交給配置文件反而是更透明、更可控的設計思路。6.3 性能優(yōu)化大項目上怎么把檢查時間壓進 30 秒在一個萬人規(guī)模的 monorepo 里全量掃描是行不通的——我曾經在一個有 8000 文件的倉庫里跑過掃描耗時超過 6 分鐘。雖然 ORM 生成的模型文件已經被排除但真正剩余的真實代碼仍然很多性能問題在團隊引入后很快就會出現(xiàn)。性能優(yōu)化的第一招是增量檢查。impeccable 支持傳入一個--diff參數(shù)它只檢查 git diff 中變更過的文件。這個參數(shù)的意思是提交前置檢查只盯著你這次改了什么不是每次全量跑。第二招是并行掃描。掃描層用concurrent.futures.ThreadPoolExecutor把文件分發(fā)到多個 worker 上I/O 密集的類型可以考慮開 8 個線程實測下來檢查時間能從 6 分鐘降到 40 秒級別。第三招是文件內容緩存。同一個文件如果在上次掃描后沒有修改會把它的分析結果緩存到.impeccable_cache目錄里。這個緩存的失效策略直接比較文件的mtime和size,雖然不是最強的校驗理論上存在 mtime 被修改但內容不變的場景但實測在大多數(shù)版本控制工作流里已經足夠了。我見過一些人一不做緩存二不做增量是因為他們的項目小、無所謂但在大倉庫里沒有這三招中的至少兩招工具會因為太慢被團隊直接棄用。7. 不得不說的幾個坑和心得為什么我做成了偏執(zhí)但好用的工具寫 impeccable 至今我最大的認知變化是質量檢查工具的核心不是技術難點而是規(guī)則的選擇和標準的一慣性。技術上實現(xiàn)一個掃描引擎并不難鍵盤敲起來也就是幾千行代碼的事情難的是判斷哪些規(guī)則值得阻止提交、哪些規(guī)則應該變成警告、哪些規(guī)則根本不該寫進來。舉一個印象很深的例子。最開始我給 impeccable 寫了一條規(guī)則禁止使用console.log調試輸出。在 Python 里對應的是print。上線之后團隊里立刻炸了鍋因為有些業(yè)務腳本的最佳實踐就是通過標準輸出給 CI 日志做記錄不加print反而不符合預期。我當時的第一反應是我規(guī)則寫的沒錯啊是你們使用不規(guī)范。但這種態(tài)度放到工程協(xié)作里是最不可取的。后來我把規(guī)則改成檢測print是否帶有調試型標記即同一函數(shù)內超過 3 個print且無日志庫調用時才報警并且加上了可配置的閾值。再有一點是關于報告的措辭。最初版本的問題提示寫得特別直接你寫了個垃圾文件名 這個函數(shù)命名是錯的你在想什么。這本質上雖然是玩笑式的夸張但在正式團隊協(xié)作里立刻變成了沖突來源。后來我把所有問題描述改成了中性化、帶修改建議的表述建議使用user_profile替代userProfile以保持 snake_case 風格一致性。這不僅是措辭問題也是在傳達一個態(tài)度——工具是幫助定位問題、給出方向的不是來嘲諷代碼的。我做的另一個取舍是完全沒有加入遠程服務和賬號系統(tǒng)。在隱私安全越來越被重視的當下一個只在本地跑、不上傳任何代碼、不建立云端賬號的質量工具會讓團隊引入它的阻力小很多。很多企業(yè)團隊對工具網絡權限這件事非常敏感一個干凈、離線的工具反而成為它被采納的優(yōu)勢。最后再分享一個小技巧我設置了每周一封郵件一樣的習慣性動作——每周五下午把所有項目的 impeccable 報告日志匯總掃一遍只關注警告是否在變多、新增的問題集中在哪些模塊。這個習慣讓質量趨勢變化非常直觀。如果你今天要開始用這類工具我建議也從給自己一份看的懂的周報開始。每周只看一次報告比每次提交都盯死細節(jié)更能幫你看到真正的質量演進方向。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产中文字幕在线| 激情小说日韩无码| 精品人妻一区| 啪啪视频mP4| 97国产伦理| 欧美91精品国产自产| 美女自卫慰黄网站免费| 无码男人天堂| 最新三级网址| 欧美成人色| 三上悠亚在线毛片91| 无码又爽又硬又激情免费视频| 久久一二三四不卡 | 国产亚洲精品久久久久小| 国产精品亚洲免费| 亚洲高清男人天堂| 不卡啪啪视频| 老鸭窝日丰县女人| 美女黄频a美女大全免费皮| 日本久久999| 国内精品久久人妻性色av| 青青操在线亚洲视频观看欧美在线 | 久久性爱视频99| 超碰狠狠操| 97操97干| 日本精品一区二区中文字幕| 韩国免费播放一级毛片| 香一区二区三区| 久久人人爽爽人人爽人人片αV| 97九色| 成人精品在线观看| 国产熟女一区二区| 97高清啪啪| 在线免费观看高清无码视频| 亚洲不卡AV在线| 亚洲av青草久久一区二区| 天天综合色电影| 一区二区乱码福利| 岛国在线一区二区三区| 精品欧美老熟女一二区| 五十路熟女工口 | 婷婷五月色| 97操97干| 日本少妇va7777| 尤物av网站免费在线播放| 懂色AV一区二区三区| 性色A∨91| 艾草av| 无码丰满熟妇一区二区浪潮AV| 丁香色婷婷| 欧美熟女丝袜| 91狠狠综合久久久| 国产视频第二页| 这里有精品| 欧美色图 色综合图| 国产精品天美传媒| 嗯啊抽插大香蕉网页| 亚洲精品九九九九九九| 女人天堂AV五区在线| 中国操逼无码| 一本大道青青| 人人手机欧洲亚洲国产人妻| 日韩人妻一区二区精品| 99久久久无码国产精品性啊聊| www.高清无码诱惑一区.com| 九九综合久久| 久久久国产av美女私房| 九久9精品| 少妇同性| 综合天天网| 国产小视频91| 亚洲国产欧美中文永久| 久久性爱视频免费看| 婷婷精品国产一区二区三区日韩| 综合色图,成人综合网| 欧美探花网| 国产sv美女内射| 亚州色图欧美| 玖玖爱综合| 久久精品国产72国产精品福利| 激情欧美97| 无码人妻系列少妇| 亚洲色图伊人网| 亚洲精品色| 国人欧美精品一区二区| 天天操人人操狠狠插| 日本ZZ高免费A级视频| 日本不卡卡一区| 蜜臀少妇一区二区| 国产精品自拍欧美在线| 黄色AAAAA欧美| 97视频免费| 人人九九精| 国产福利夜| 丁香啪啪| 97最新在线播放视频| 精品国产91内射久久| 天天澡天天爽日日AV| 操熟女91| 国产精品日韩在线一区| 天美91| 亚欧操逼片在线观看| 四虎av在线| 91久久免费视频互動交流| 日韩成人人妻网站| 91麻豆天美国产| 欧美在线l亚洲| 欧美第五页| 国产亚洲深夜激情| 男人的天堂无码| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 澳门黄片一香蕉视频| 五月天人妻综合| 色爱综合网欧美| 国产亚洲福利第一页丝袜| 不卡一区二区日本视频| 日韩有码一区三区| 夜夜久久| 国产精品分类在线观看| 久久婷婷国产一区二区色| 天天影视综合色| 精品久久久久av影院| 自拍偷拍2025在线观看| 91精品国产乱码| 精精品人妻一区二区三区| 国产精品白丝在线播放| 玖色AV| 精品人妻高清麻豆av| 蜜乳Av成人片网站| 超碰久久精品| 日本www操操操| 日产成人久久| 久久亚洲av成人无码国产| 九九av| 国产精品高清2021在线| 高凊专区人人操| 九色黄站| 爱射综合| 国产性爱欧美性爱在线| a片久久久久久久久久久久 | 日韩钢筋无码高清啾啾啾| 老熟女阿 国产91| 日韩视频啪啪| 亚洲丝袜少妇在线| 欧美日本中字另类在线| 啪啪视频免费在线观看| 天天摸夜夜摸| 欧美性生活免费网| 欲射影视| 国产午夜激片Av毛片不卡| 99久在线精品99re8热视频在线| 免费av高清无码| 天天影视网色欲色香| 久久久久久国产无码精品| 亚洲色图片区| 亚洲另类色图片| 艳美熟妇先锋一二三区| 天天综合网在线| 乱伦av麻豆| 天天操福利视频综合网站| 色婷婷影视| 久久直播国产| 国产精品免费久久久久久久久久| 青青三级视频| 精品久久久久瑟瑟| 五月激情综合网| 999久久久免费精品国产牛牛| 亚州色国| 亚洲日韩成人性爱视频| 伦理第一页| 精品九九淫乱男| 欧美成人性爱视频大全| 色狠狠 - 百度| 亚洲区 欧美区| 久久国99999| 亚洲色综合| 精品一级毛片在线观看| 口爆吞精在线观看| 国产精品不卡av免费在线观看| 日韩av电影成人在线| 日韩三级在线观看mp4| 玖色av| 人妻在线臀日韩| 九九香蕉网| 免费亚洲黄色视频在线观看| 日韩精品色呦呦| 日韩三级在线观看网站| 亚洲精品一区二区精华| 超碰碰97资源站| 婷婷丁香人妻| 国产乱子伦一区二区三区免看| 久久一二区四| 中文字暮97| 美女露胸露尿口| 五月丁香久久| 大香蕉久久| 成人国产精品三级A片| 在免费jIzzjIzz在线视频| 福利社区午夜一区二区| 网页导航五月天免费一二三区| 日韩无码精品综合久久| 国产精品久久久久久久AV大片| 三级AV入口| 四虎国产精品永久在线囯在线 | 欧美黄色大香蕉一区二区| 欧美人妻一区| 久久人妻精品| 欧美日韩大陆黑人少妇99| 91国产丝袜足交精品视频| 精品少妇后入一区二区三区四区人妻巨乳| 99精品久久| 精品久久久久黄少妇| 淫色网综合| 精品一二三区女同| 综合情欲网| 本道综合精品| 男人的天堂2018.| 久久国99999| 美性中文综合网| 青青草字幕AV| 久久超碰亚洲人| 99最新日韩偷拍视频| 天天插网| 久久毛卡| 丝袜性亚洲| 亚洲AV人人澡人人爱| 操屄日韩| 亚洲欧洲综合视频在线| 爱爱久久| 精品成人无码| 久久女人视频| 射久久| 囯产操逼片| 久久人人爽爽爽人久久久| 亚洲午夜精品久久久中文影院| 1769一区| 女人爽到高潮潮喷18禁网站| 欧美性爱一内片一区二区三区| 亚洲天堂电影网| 国产毛片片精品天天看视频| 日韩乱插| 超碰综合97在线| 沈阳熟女高潮对白视频| 日本三级人妻a人妻一在线| 好爽要喷了| 亚洲97久久精品亚洲| 老师充足的奶水小说| 日韩中文字墓| 中文字幕88av在线| 久久久久亚洲?V片无码V| 精品少妇一区二区三区免费观看| 久久美国毛片| 亚洲黄色视频在线观看视频| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 色盈盈影院| 第一高清av中文字幕| 91久久精品国产| 国产第25页在线观看| 色综合超碰超| 精品日韩| 六六久久日韩不卡| 中文字幕丰满人妻日本| 后X久久| 欧美色图第一页| 久插不卡| 留下AⅤ黄色片| av草草在线电影| 99色在线观看| 91爱网| 国产亚洲欧美每日在线| av天堂精品久久| 三级网站超变态精品| 亚洲第一精品在线视频| 做爱福利视频一区二区| 亚洲1区2区三区高清中文字幕| 男人成人黄色视频在线观看免费下载| 日韩性爱电影一区| 大香蕉日韩| 少妇被玩视频二三区| 亚洲色系另类精品国产| 97欧美资源| 亚洲精品色| 亚洲色诱惑| 夜夜天天噜狠狠爱2021| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 亚洲色图欧美一区二区不卡| 欧美成人色| 污啪啪啪视频| 免费看一级a性色生活片久久无| 东京热男人天堂| 婬女免费一二三区A片| 激情露脸爱| 天天爱天天韩国日本牛牛牛牛| 99热在线播放| 国产高清26uuu| 麻豆成人AV| 超碰这里有精品| 97超碰热线| 欧美亚洲第1页| 久久婷色| 五月丁香六月激情| 操逼网站视频漫画国产| 久操网址| 亚洲蜜乳av| 蜜乳中文字幕a在线| 正宗无毛一线天嫩逼| 成熟熟女国产精品一区二区| 久久夜嗨| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 欧美黄页| 人妻 丝袜美腿 中文字幕| 国内三级自拍小视频在线观看| 色一情一乱一乱一区91Av| 啊啊啊轻点在线观看| 国产综合网站在线播放 | 日韩99神马视频片| 男女性感激情网站| 亚洲诱惑天堂| 九九热精品| 99少妇| 96精品在线| 欧美黄页| 熟女欧美日韩综合婷婷| 懂色AV蜜臀无码精品APP| 亚洲一本色码中文字幕| 乳欲人妻办公室奶水| 99re这里| 无码精品久久久天天影视| 欧美丝袜美女电影一二三四区| 免费视频在线一区二区不卡| 大肉棒导航| 人人摸人人添人人操| 999国产精品999久久久久久| 天天操av懂色| 亚洲暴力强奸AV| 亚洲狠狠入| 色综合天天| 激情婷婷综合久久| 久久99精品国产| 人妻中文字幕日韩电影| 国产精品国产| 日本三级小说中文字幕| 水多多映视AV| 亚欧美色图| 五月天婷婷欧美三区| 日产操逼| 91综合天天| 中文字幕亚洲欧美在线不卡| 人妻日日干| 久九九九| 走光一区92下载| 超碰人人色| 亚洲AV无码乱码| 加勒比综合| 激激五月| 日本精品不卡一二三区| 免费A片三p视频| 日韩成人人妻网站| 手机不卡视频不卡在线一二三区| 搡老熟女老女人老熟妇免费视频| 欧美性爱第一页久久| 久久精品六区| 欧美综合在线91| 无遮挡h肉动漫在线观看| 自拍偷拍第26| 日本久久超碰| 色婷婷日韩精品一区二区三区| 久久久噜噜噜久久久| 亚州AV无码国产精品| 野狼福利社区| 久久久性少妇| 日本超碰色精品| 欧美日韩夜夜| 午夜丁香| 色综合色欲色综合色综合色综合| 操高情无码| 美女裸体无遮挡永久免费观看网站| 日日日日做夜夜夜夜做无码97| 操香逼| 少妇二级| 久久9久9久99久9久9| 91精品久久久久久综合五月天| 激情抓乳插进去啪啪啪日韩| 中国人高清www色视频免费| 乱操9999| 久久人妻一区二区三区高清| 欧美夜色| 330dv亚洲成年视频网| 欧洲中文字幕| 超碰色中文| 午夜天堂精品久久久久91| 日韩av影片在线观看| 国产精品区在线12p| 91AV入口| 日韩无码精品综合久久| 99久久久久久亚洲精品不卡| 乱伦一二三| 成人五月天丁香激情综合| 97干在线| a'v在线资源| 中文字幕在线第二页| 99九九久久| 日日夜夜天天| 亚洲偷拍自拍在线视频| 小少妇| 免费视频无码| 黄色大片一区二区密桃丝袜| 亚洲少妇喷视频看| AV高清一区| 久久久久久久久久久久黄色| 884t在线| 日产成人久久| av橘色网站| 日天天九九天堂666| 欧美日韩亚洲天堂| 亚洲熟妇一,二,三期| 精品九九| 国产高清免费不卡av| 国产精品极品美女视频| 999精品国产高清一区二区| 国产精品香蕉| 欧美区亚洲区偷拍区 | 2018色综合天天操| 性色一线| 熟女精品一区二区在线观看| 青青草影视蜜久久| 丝袜美腿亚洲| 草莓精品视频在线免费观看| 天堂中文资源在线bt| 午夜精品视频777| 久久一二三四五六七八九区区区| 欧美久久婷| 呦女网站| 99re免费| 久久久久久AV无码免费网站| 在线观看AV不卡| 久操在97| 欧美第一页| 国产操操日韩三级黄| 97福利视频| 精产国品一区二三产品| 国产精品午夜福利| 无码精品久久| 亚洲va综合va国产va中文| 精品大久久| 婷婷九月国产| 国产极品粉嫩馒头一线天av| 欧美一区二区三区日韩| 97欧美精品综合| 久久天堂网| 国产家庭乱伦表演| www.狠狠| 久久精品操| 成人AV超碰免费在线| 日韩av不卡在线观看| 一区二区三区视频在线观看免费| 日韩精品一区二区三区四虎影视| 偷拍片久久| 久久97超碰| 美女被艹尤物视频| 免费看污网址| 天天躁日日躁AAAAXXXX国产 | 人人看黄色视频| 337p大胆噜噜噜噜噜91Av| 日韩99神马视频片| 青娱乐淫乱1314| 激情五月天婷婷| 果冻传媒一区二区三区| 91老熟妇| 日韩成人精品中文字幕| 久久久免费高清中文视频| 人人看人人爰人人操| 九九热免费在线国产视频伊人五月| 97操碰| 国产精品极品美女视频| 天天综合网~91综合网| 日韩综合无码一区久久92| 国产精品久久伊人| 色网亚洲人| 国产一区二区在线电影| 亚洲精品久久久久久| 亚洲97久久精品亚洲| 操人妻逼91| 亚洲啪AⅤ永久无码| 久久免费看高潮毛片韩国| 久久69| 性爱动态120秒| 久久粉色| 国产精品乱码久久久久久久久久久久| 激情综合网亚洲| 久久国产精品91| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 麻豆亚洲AV成人无码久久精品| 国产男女无套视频免费观看| 四虎在线视频| 爱爱60秒免费视频| 91在线欧美| 动漫片子网站3黄| 日韩av免费一级电影| 伊人丝袜美腿高跟在线观看高清| 大香蕉视频一二三区| 2025亚洲男人天堂| 日本精品无码三级网站| 激情内射| 日韩丝袜人妻AV| 日韩一级二级三级免费看完整版| 超碰97资源中文字幕| 久久久久久亚洲中文| 国产精品久久久久久久免牛肉蒲团| 91社操逼| 国产搭汕a级片| 欧美性爱97超碰| 亚洲无码 国产无码| 日本A级视频| 国产精品自在自拍视频| 啊啊啊好舒服视频| 九九热精彩视频| 日韩免费性爱视频在线观看| 少妇综合网| 亚洲Av噜噜一区二区三区妖精| 一区二区影院| 四虎免费在线观看| 亚洲自拍欧美色综合| 精品少妇一区二区三区在线视频| 九九综合九九综合| 日本三级韩国三级美三级91| 五月天婷婷欧美三区| 亚洲色天| 午夜精品人妻二区三区| 欧美激情视频一区二区三区不卡| av天堂5| 天天影视色香欲综合网小说| 97免费视频在线观看视频| 色九九九九久| 国内毛片国产专区二| 色吧91| 操淫穴亚洲五月丁香| 婷婷日韩一区二区三区中文字幕在线| 大香网站| 伊人久久综合影院精品久久久| 欧美一区二区三熟女剧情| 91是天天| 99色热| 日韩国产乱子伦App| 亚洲美女AV无码| 丁香7月婷婷| 精品十三区| 男人的天堂2019AV| 久久一区二区三区入口| 中文字幕乱在线伦视频中文字幕乱码在线 | 久久久97| 日本免费专区| 久久久精品91八戒| 91色交| 久夜操| 蜜桃狠狠色伊人亚洲综合 | 5252色欧美在线男人的天堂| 久久久噜噜噜久久人妻| 天天日天天操VV| www狠狠| 视频在线观看免费一区二区三区| 中文AV制服乱伦| 国产精品乱码久久久久| 91热色| 亚洲色棕合| 东北操逼| 九九九精品色乱九九九| 超碰在线97国产| 色诱中文字幕| 久久偷拍人| 国产精品久久久久久夜夜夜| 亚洲青青青视频在线| 天天综合精品| 日韩精品区二区三区不卡| 99操逼| 丝袜剧情| 簧片免费看视频| 九九久久一区二区伦理| 五月丁香拍拍激情综合三级| 黄色AAAAA欧美| 国产熟女完整版中字| 男人天堂黄片| 金莲网址| 久久人人爽人人爽人人片Ⅴ| 亚洲四虎熟女精品| 激情五月婷婷综合| 翘臀vidoes| 日本三级小说中文字幕| 亚洲欧美setu| 久久是精品| 男人的天堂久久| 九九久久久| 久久97超碰| 你懂的在线观看区国产| 国产一区在线观看无码AV| 久久精品中文字幕无码l| 免费av大片| 色色色色电影网| 亚洲 日韩 欧美 国产综合体| 亚洲中文字幕噜噜噜久久久| 九九九九日本 | 91一区二区三区蜜桃| 日本操色导航| 熟女六十路| 中文字幕在线播放2中文字幕在线观看2| 亚州情色j区| 日本999精品| 91精品操美女| 国产无码成人无码| 十八岁啪啪视频免费看| 欧美视频在线视频免费va| 白嫩嫩一区| 东京热熟女亚洲视频网站| 国产丝袜一区二区三区| 日日骚AV| 爱av免费| 国产熟女一区二区丰满| 99精品综合久久久久五月天| 91中文字幕在线观看| 9Ⅰ超碰| 伊人精品久久网站| 精品一区二区啪啪啪| 99RE在线视频精品,这里只有精品| 91精品操美女| www.久久制服糖| 在线另类| 学生妹天天看| 老熟女乱伦片| 婷婷综合激情| 天操老女人| 九九九九热| 欧美很很操视频| 天美麻豆精品视频99| 色 亚洲 91| 天天射天天色成人| 国产又黄又爽又刺激久久久久久| 日日爽夜夜爽| 中文字幕丰满人妻日本| 99久久这里只有精品| 天堂资源站| 一起草高清无码| 婷婷久久网| 91天天c| 国产乱伦搜索结果91P| 伊人黄色视频免费观看| 精品999日本| 国产精品点击进入在线影院高清 | 在线 制服丝袜中出 人妻| 欧美 亚洲 综合 制服 另类| 91色人妻| 色女综合| 测评在线观看AV| 亚欧操逼片在线观看| 三上悠亚在线毛片91| 日韩精品中文字幕二区| 成人一级二级| 日韩亚洲中文字幕在线| 最新精品久久蜜桃 | 情色大香蕉| 欧洲精品欧洲精品| 国产成年女人免费视频播放a| 欧美午夜精品久久久久久3D| 欧美日韩国产精品久久色婷婷| 久久五十路熟女人妻| 欧美操逼视频二区| 欧美一区二区一级岛国大片| 台湾大香蕉99热| 欧美18老人禁| 日韩熟女精品无码专区一区二区| 国产又粗又大硬免费色网视频| 国产熟女少妇一区| 人妻另类 专区 欧美 制服| 精品无码一区二区| 国产极品粉嫩馒头一线天av| 久久神马影院| 国产精品视频麻豆入口| 美女黄码视频午夜| 亚洲蜜桃V妇女| 国模限制级电影| 亚洲网站一区二区在线| 亚洲高清视频在线观看| 精品人妻一区二区视频| 97超碰总站| 久久人人爽人人爽人人片Ⅴ| 正宗无毛一线天嫩逼| 91美女丝袜诱惑视频| 熟女探花啪啪| 人妻无码久久一区二区三区免费| 亚洲无吗在线视频| 久久宗合97| 青青国产精品在线| 久久久九九九| 啊嗯好大视频在线观看| 亚洲激情综合另类男同| 欧美精品不卡一二三四在线91| 五月天婷婷成人网| 欧美18 在线观看| 九九九九免费视频| 少妇超碰在线| 人人操我人人干| 少妇久久久免费| 日本国产成人亚洲精品无码| 熟妇人妻精品一区二区| 亚洲少妇色| 免费人成毛片乱码| 丰满少妇精品一区二区| 美女啊啊啊啊啊啊啊| 欧美亚洲色图另类国产| 懂色Av一区二区三区| 口爆综合网| 亚洲日韩在线a不卡99精品| 青青草伊人久久| 97人妻免费中文字幕| 日韩情色一区二区| 秋霞福利网| 欧美熟爽综合| 国产成人www免费人成看片| 亚洲情色欧美| 97爱啪| 欧美色997| 色噜噜综合网| 日韩人妻一二三区视频 | 成人久久精品| 三级日本一区二区三区| 欧美激色| 日本丝袜美腿人妻九九| 留下AⅤ黄色片| 久久久99免费| 精品传媒在线一区| 色哟哟av网址| 天天综合影院91| 中文字幕一区av| 亚洲 国产 精品一区| 青娱乐淫乱1314| 欧美亚洲丝袜美女电影| 俺也射| 日本不卡三级网在线播放| 国产自偷自拍一区| 亚洲色 国产 欧美 日韩| 漂亮人妻被强中文字幕hd| 色www精品视频在线观看| 日韩久久超碰色| 五月综合色| 日韩欧美亚洲一区二区三区影院| 天天射天天操天天干天天吃2018| 青青草在线视频播放器| 亚洲精品97中文字幕| 狠插 制服 自拍| 九九热精品视频在线观看| 亚洲毛片久久| 亚洲综合在线高清| 激情色播| 久草免费在线一区二区| 操逼操2| 97免费在线视频| 超碰97人妻| 精品少妇999| 国产后入| 日韩成人性日韩成人性爱视频在线免费观看| 久久九九97| 欧洲亚洲人妻无码高清久久三区四区| 操老熟女AV| 色哟哟精品1精品2| 国产夫妻性生活视频| 职场同事知名国产国产精品久久欧美日韩| 91在线丝袜视频| 大肉棒导航| 色妇91| 一区二区三区在线日韩影院观看| 青青草字幕AV| 十八禁电影伊人网| 蜜桃网熟妇| 欧美日韩欧美| 亚洲天堂久久久久久粉红视频| 五月亭亭六月丁香| 国产丝袜欧美在线视频| 无码精品久久久天天影视| 国产一级不卡在线观看| 玖玖资源综合在线视频| 欧美黄色片AAAAA| 五月天婷婷综合网| 亚洲男人的天堂V| 粉嫩少妇自慰在线| 欧美日韩人妻少妇 一区二区三区| 熟女露脸激情自拍视频| 在线二区不卡| 久久久久久网址| 亚洲成人激情小说视频| 百度百度日本操逼| 欧美韩日精品99综合| 蜜臀无码一区二区| 丰满人妻-区二区三区免费看 | 国产精品激情久久久久久久| 5278欧美一区二区三区| 成人午夜小视频手机在线看| 久久天天艹| 日韩不卡av一二三| 国产SV一线| 男人的天堂三级| 啊啊啊好多水| 国产综合操逼高清| 久久伊人网视频一区二区三区| 精品人妻伦一区二区三区久久| 熟妇人妻丰满久久久久久久无码| 久久久久久久九九九九九九| 5月婷婷6月六月丁香| 大香蕉伊人一区在线观看| 美女天天干| 欧美性生活男人的天堂| 99热9| 97国产天堂岛| 亚洲精品97| 人人摸人人添人人操 | 在线观看啊啊啊啊啊| 国产一区二区免费福利片| 久99久视频| 伊人991| 国产一区二区成人av在线播放| 色牛牛AV| 亚洲熟女乱色一区二区三区久久久| 天天爱天天操| 亚洲第一在线视频| 男人的天堂在线| 久久久96| 激情综合97| 久久久久成人蜜桃精品| 欧美另类自拍 | 久久香蕉综合一本到3atv| 国产99热| 九九九九97| 日本欧美韩国国产在线| 91在线欧色| 啊啊啊啊嗯嗯在线久久久| 亚洲一区二区三区中文字幕| 久久啊哟| 欧美色视| 亚洲丝袜二区| 超碰欧美97资源| 美女午夜福利免费视频| 97色色色综合网站| av网站在线看| 国产欧美日韩女同性恋ww喷水精品 | 26uuu国产免费观看| 中文字幕在线播放2中文字幕在线观看2| 欧美亚洲厕所精品偷拍91| 牛牛操视频逼| 成人网欧美风情| 免费观看网黄| 亚洲中文人妻色| 午夜操一操| 天堂av2019| 啊啊啊啊操死我| 97中文天堂| 天美传媒精品一区二区三区| 日韩懂色网| 三男一女不戴套的A片| 青青操97| 国产日韩精品suv| 少妇天堂网络| 国产精品盗摄 偷窥盗摄| 日本精品人妻少妇一区二区| 自拍内地三级在线观看| 色综合潮| 欧美经典一区二区三区| 精品一二三区女同| 极品尤物在线观看| 91网站18禁| 日韩高潮一区| 精品一区二区三区国产| 日韩天堂av电影在线观看| 天堂а√在线最新版在线| 香蕉免费一区二区三区不读| 国产黄色av大片网站| 午夜操操操| 嗯嗯嗯啊啊啊在线免费观看| 色综合av综合久久| 日本不卡高清免v欧美日韩在线观看| 国产黄色剧情影片麻豆免费播放| 97超碰色屌| 一区二区三区精品久久| 亚洲成人ab| 啊啊啊97视频| 日韩精品在线观看网站| 亚洲国产成人综合碰碰三级经典| 97超碰色屌| 国产亚洲国产超碰| 亚洲欧美色图| 中文字幕视频在线观看一区二区| 99re公开精品免费视频| 久久久久久99999国产精品| 欧美在线官网| 性在久久久久久| 婷婷激情四射| 精品国产72| 九九性视频| 自拍偷拍第26| 麻豆尤物视频网| 丝袜喷水在线| 欧美aaaaaaa| 免费成人自拍视频在线| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 操久久久久| 欧美综合色站| 骚逼高潮久久精品| 97精品熟女少妇一区| 中国人高清www色视频免费| 91爱欧美| 久久精品店| 四虎午夜影院| 玖玖爱视频网站| 香蕉免费一区二区三区不读 | 狠狠2050在线观看| 亚洲色偷偷色噜噜狠狠99网| 69视频入口| 91欧美www| ai欧美亚洲小说| 婷婷综合在线观看| 这里都是精品在线观看| 九九热久久99精品re| 日韩无码第3页| 涩涩久久精品| juliaann精品熟女一区| 九九伊人网| 亚洲人妻中文高清| 欧美日韩午夜精品一区二区三区| 狠狠狠狠狠| 欧洲站一级二级三级h| 久久久久ab| 国产成人资源| 99热综合| 伊人色综合网电影| 久久6热视频免费观看| 永久免费av无码网站国产app| 亚洲国产综合图区中文字幕| 国产自偷| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 日韩av性爱在线播放| 伊人骚琪琪亚洲天堂网站| 欧美淫乱视频| 久肏视频字幕| 亚洲图片视频小说| 欧洲亚洲人妻无码久久三区四区| 久久久久久久六六| 特级大荫道BBwBBwBBW| julia在线观看久久| 亚洲天堂综合AV| baisiav| 日韩啪啪啪啪啪| 操穴国产| 77777亚洲蜜臀精品久久综合蜜臀| 国产乱码久久| 日韩三四五区| 熟妇一区二区三区| 97超碰色屌| 校园春色中文字幕AV| 一区二区三区 丝袜高跟| 国产乱码精品久久久久久| 99国产精品免费| 日日噜噜夜夜久久亚洲一区二区| 天天天天天天天天综合| 黄色一区三区| 成人资源中文字幕在线观看| 中韩中文字幕在线观看| 农村少妇久久久久久久| 超碰久热| 日韩三级天堂在线观看| 乱伦日本色图AⅤ| 三级三久久线久久99久目本WW| 国产AV超爽| 蜜臀久久一区二区| 中文字幕日产av人| 亚洲日韩久久精品一区| 国产女人9999| 夜夜躁狠狠躁日日躁av| 98久久| 熟妇的味道HD中文字幕| 日韩人成网站在线播放| 狠狠色婷婷| 91在线美女| 久久偷偷色综合蜜桃| 亚洲开心网| 人人澡人人干| 91亚洲欧洲| 夜夜操美女| 欧美成人一级免费电影| 婷婷五月天成人| 性色乱AV一区二区| 欧洲亚洲综合| 天啪| 一级片在线观看高清无码| 免费综合亚洲中文| 嗯嗯嗯啊啊啊操的我好爽| 中文字幕78| 啪啪自拍九九综合| A级国产欧美激情在线| 久青草影院| 蜜桃视频精品一区二区三区| 久9综合在线| 天天射夜夜操| 日韩一级片在线看| 天天摸天天插天天日| 98福利在线视频| 五月情色天| 国产熟女免费观看久久| 久久久九97| 破处bbq| 日韩亚洲欧美中文字幕| 曰韩av中文字幕专区| 91狠狠综合久久久久久| 九九久久国产精品怡红院| 在线日韩日本亚洲国产| 97综合在线| 97久久久精品| 日本成人在线不卡一区二区三区| 婷婷丁香五月天亚洲天堂网| 天美一二三在线观看Av| 日韩日韩日韩-国产乱码精品一区二区| 国产又黄又爽又刺激久久久久久| 91久久久久久久| 亚洲熟妇综合久久久久久| 日韩av无码网站| 一区二区你上我| 午夜精品久久久久久久99| 黄色电影在线播放综合网站| 九九这里只有精品| 久久人妻一区二区三区高清| 美女天天干| 女人的久久久| 久久精品无码不卡| 人妻中文字幕日韩电影| 精品乱子一区二区三区99| 夜色91| 婷婷伊人綜合中文字幕| 久久女女| 久久一级无码精品毛片6| 情色五月天网| 性无码专区2020| 久久国色天香香蕉| 久久啊啊| 天天爽爽爽爽| 中国熟女91| 嫩草影院在线观看精品| 欧美日韩高潮喷水91| 欧美色图亚洲色| 电家庭影院午夜69久久夜色精品国产69乱| 五月婷婷六月丁香| 精品国产一区二区三区久久久蜜臀| 最近二区三区视频大全| 一类av片在线看| 裸体美女久久久| 亚洲成a人片在线观看中文!!!| 女同性恋一区二区三区精品视频| 蜜乳中文字幕a在线| 欧美久久婷| 美女操逼A A| 麻豆区99999| 亚洲啪AⅤ永久无码| 青青草视频久久久久| 国产亚洲精品激情| 欧美成人色| 欧美日韩国产中文精品字幕自在自线 | 日韩av乱伦| 伊色久人大在线| 色色色网站| 张柏芝国产一区在线观看| 成人无码专区精品视频| 91av一区二区在线观看| 欧美色图成人网一区二区| 精品中文字幕一区二区| 天堂涩涩| 久热九九| 亚洲三级。日韩三级| 亚洲不卡不卡中文字幕不卡 | 性色av大全| 中文一区在线日| 亚欧国产无码精品在线| 中文字幕在线免费观看 | 国产精品自拍xxxx| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 啊啊啊久久久视频| 欧美成va视频网站| 老司机福利青青草| 久久婷婷欧美| 可以免费观看的av| 日韩av无码网站| 2019亚洲男人天堂| 超碰av人人人| 欧美精品99久久久**| 久久精品电影在线| 欧美日韩免费专区在线| 被体育老师抱着c到高潮| 91色插| 夜夜操一区二区| 婷婷性爱| 亚洲最大成人a毛毛片| 九九九成人| 欧天美中出| 91天堂色男人的天堂| 超碰在线一区| 天天搞欧美| 操香逼| 亚洲夜夜欢无码一区二区| 日本精品一区二区三| 公司1区2区3区精产精| 97色色色| 日本操逼视频导航| 久久精品电影在线| 天海翼久久| 久久最新免费视频23| 国内自拍 日韩激情 99| 98久久超碰| 91熟女少妇| 人妻 欧美 中文| 六六久久日韩不卡| 国产做?爰片久久毛片?片美国| 精品无码久久久久久久久果冻糖心| 99最新日韩偷拍视频| 超硑97精品| 精品国产乱码久久久久久久久1| 岛国色情视频在线观看| 91黑人狂躁丰满熟妇| 99热日| 欧美精品双插| 婷婷AV一区二区三区| 一级@啪啪视频| 综合网亚洲| 欧美图片校园春色| 秋霞福利网| 欧美性暴力猛交XXXX | 搡老女人老91妇女熟女| 91丝袜美女| 久久XX| 国产一区二区三区久久久精品| 久久αⅴ| 91视频女生| 精品性爱久久视频| 青青草操逼逼视频| 人人色人人操在线| 少妇xx精品| 精品人妻1区| 蜜臀中文无码午夜| 北京美女一区二区| 怡红院怡春院| 免费作爱一级视频| 亚洲综合另类小说色区亚洲成av人片在www| 精品国产乱码久久久久久蜜臀| 国产精品高朝久久久久久久| 久久色一区二区| 青女在线| 天美精品一区二区三区四区在线观看| 久久不卡一区二区| 熟女一区二区| 精品无码一区二区| 热久久91婷婷| 日韩素人无码一区二区三区三州| 蜜臀久久一区二区| 国产 热久久久久国产精品| 亚洲乱码国产乱码精网站| 97视频观看| 欧美久久草熟女|