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

ARTICLE DETAIL

資訊詳情

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

開源代碼評(píng)審工具open-code-review:靜態(tài)分析+語義模型,讓Code Review告別肉眼掃Diff

開源代碼評(píng)審工具open-code-review:靜態(tài)分析+語義模型,讓Code Review告別肉眼掃Diff 干過幾年研發(fā)的人多多少少都被“代碼評(píng)審”這事折磨過。小團(tuán)隊(duì)還好大家坐得近改完代碼喊一聲“幫我看一眼”就行但團(tuán)隊(duì)一超過十個(gè)人或者開始跨時(shí)區(qū)協(xié)作評(píng)審就會(huì)變成一場(chǎng)災(zāi)難大PR幾百上千行diffreviewer點(diǎn)開掃兩眼就點(diǎn)了approve新人提的代碼沒人把關(guān)問題一路流到生產(chǎn)環(huán)境才炸評(píng)審時(shí)的口頭意見散落在聊天記錄里過兩周連當(dāng)事人都不記得當(dāng)時(shí)聊了什么。我后來認(rèn)真想了想這事的本質(zhì)是評(píng)審這件事本身太重、太依賴人的狀態(tài)而且意見永遠(yuǎn)沉淀不下來。open-code-review這個(gè)項(xiàng)目本質(zhì)上就是我對(duì)這個(gè)問題的回答。它是一套開源的代碼評(píng)審增強(qiáng)工作流核心思路是把“人工看diff”這件事拆成幾道自動(dòng)過濾網(wǎng)先用git變更分析把改動(dòng)切干凈再用靜態(tài)規(guī)則把低級(jí)問題攔掉接著讓可插拔的語義模型從邏輯層面找隱患最后把結(jié)果聚合成結(jié)構(gòu)化報(bào)告直接接到MR和CI流程里。它不是要取代人工評(píng)審而是替人把那些重復(fù)、機(jī)械、靠眼睛硬掃的活先干完讓reviewer把有限的注意力留給真正需要判斷力的問題。這篇文章我會(huì)把整個(gè)項(xiàng)目從設(shè)計(jì)、實(shí)現(xiàn)到落地踩坑的過程完整過一遍適合正在搭團(tuán)隊(duì)評(píng)審流程、或者準(zhǔn)備自己寫一套評(píng)審工具的工程師參考。1. 項(xiàng)目概述與設(shè)計(jì)思路1.1 這個(gè)工具解決的三個(gè)真實(shí)痛點(diǎn)先說第一個(gè)痛點(diǎn)大變更的認(rèn)知負(fù)荷。人腦對(duì)一千行以上diff的注意力曲線是斷崖式下跌的實(shí)驗(yàn)數(shù)據(jù)我不多引單說體感——我見過太多reviewer對(duì)著五百行以上的PR點(diǎn)完approve之后連改動(dòng)涉及了哪些文件都說不全。這不是態(tài)度問題是認(rèn)知負(fù)荷超出承載了。open-code-review第一步就是把diff切成可消化的小塊按文件、按函數(shù)、按變更類型切分再算出一個(gè)“本次變更有多復(fù)雜”的量化分分太高的PR會(huì)在報(bào)告里被單獨(dú)標(biāo)紅提醒“這個(gè)PR需要至少兩個(gè)人認(rèn)真看”。第二個(gè)痛點(diǎn)評(píng)審標(biāo)準(zhǔn)不統(tǒng)一。老手關(guān)注并發(fā)和邊界新手盯著格式和命名結(jié)果同一個(gè)錯(cuò)誤在A的PR里被批得體無完膚在B的PR里安然度過。這個(gè)不能用“多培訓(xùn)”來解決標(biāo)準(zhǔn)必須固化下來。我把團(tuán)隊(duì)里散落的評(píng)審經(jīng)驗(yàn)做成了聲明式規(guī)則哪些命名不允許、哪些模式是反模式、哪些改動(dòng)必須寫測(cè)試全部寫成配置。規(guī)則分級(jí)為error、warning、info三級(jí)分別對(duì)應(yīng)“必須修”、“建議修”、“僅供參考”標(biāo)準(zhǔn)一旦進(jìn)配置就不依賴某個(gè)人的臨場(chǎng)狀態(tài)。第三個(gè)痛點(diǎn)評(píng)審意見不沉淀??陬^評(píng)審的保質(zhì)期很短當(dāng)時(shí)聊通了事后連個(gè)記錄都沒有幾個(gè)月后同樣的坑又在另一個(gè)模塊踩一遍。工具把所有評(píng)審結(jié)果輸出成結(jié)構(gòu)化報(bào)告——Markdown給人在網(wǎng)頁上看JSON給下游系統(tǒng)解析HTML帶定位和展開上下文——并且可以和CI綁定每次提交都留痕。你回頭看三個(gè)月前的每次評(píng)審當(dāng)時(shí)發(fā)現(xiàn)了哪些問題、哪些改掉了、哪些被忽略都能查得到。1.2 為什么我選了“本地CLI 多引擎”而不是機(jī)器人評(píng)審最開始我考慮過直接寫一個(gè)機(jī)器人掛在代碼托管平臺(tái)上PR一開就自動(dòng)評(píng)論。這個(gè)方案效果很直接但有個(gè)繞不開的問題機(jī)器人要訪問倉庫要么給很高的Token權(quán)限要么單獨(dú)部署一個(gè)服務(wù)小團(tuán)隊(duì)根本養(yǎng)不起而且機(jī)器人的反饋是異步的從提交PR到拿到意見要等一兩分鐘這個(gè)延遲很消磨耐心。后來我定了一個(gè)原則本地先跑CI兜底。open-code-review做成CLI開發(fā)者在自己電腦上就能對(duì)當(dāng)前分支跑評(píng)審幾秒鐘出結(jié)果改完再推CI里再跑一遍作為合并前的最后一道閘門。兩層作用完全不同本地跑是為了讓開發(fā)者提交前自檢CI跑是為了給團(tuán)隊(duì)的評(píng)審留個(gè)記錄。這個(gè)“開發(fā)者本地先過濾CI做門禁”的模式比單純掛個(gè)機(jī)器人靈活得多機(jī)器人能做的事它都能做機(jī)器人做不了的事它也能做。架構(gòu)上整個(gè)工具拆成四個(gè)相互獨(dú)立的引擎git變更分析引擎負(fù)責(zé)從倉庫里撈diff、算變更度量規(guī)則引擎負(fù)責(zé)跑靜態(tài)規(guī)則支持內(nèi)置規(guī)則和自定義規(guī)則語義評(píng)審引擎是可選模塊通過配置接入模型服務(wù)做邏輯層面的分析報(bào)告引擎把前面的結(jié)果聚合成統(tǒng)一格式。四個(gè)引擎通過標(biāo)準(zhǔn)數(shù)據(jù)接口串起來改其中一個(gè)不影響另外三個(gè)。1.3 整體工作流程從git diff到評(píng)審報(bào)告的完整鏈路工具的運(yùn)行鏈路大概長這樣輸入一個(gè)對(duì)比范圍比如從main分支到當(dāng)前分支git引擎用底層命令拉取變更集然后做三步處理——第一步按文件類型過濾只留代碼相關(guān)的文件第二步按變更類型歸類區(qū)分新增、修改、刪除、移動(dòng)第三步提取變更函數(shù)和類級(jí)別的上下文為后續(xù)規(guī)則和語義分析準(zhǔn)備數(shù)據(jù)。這套準(zhǔn)備做完才輪到規(guī)則引擎做靜態(tài)掃描接著語義引擎做深度分析最后報(bào)告引擎把所有發(fā)現(xiàn)去重、排序、打分輸出報(bào)告。整個(gè)鏈路的執(zhí)行順序是有講究的。規(guī)則引擎必須跑在語義引擎前面因?yàn)橐?guī)則引擎掃出的問題可以直接在本地提示不讓它們進(jìn)入語義分析的上下文能省大量模型請(qǐng)求語義引擎只拿到規(guī)則引擎過濾后的“高價(jià)值片段”分析更聚焦。報(bào)告引擎最后做一次全局去重——有些問題規(guī)則引擎和語義引擎都會(huì)發(fā)現(xiàn)按置信度保留更準(zhǔn)確的不重復(fù)報(bào)警。2. 核心功能拆解與實(shí)現(xiàn)細(xì)節(jié)2.1 配置體系把評(píng)審標(biāo)準(zhǔn)變成團(tuán)隊(duì)共識(shí)配置是整個(gè)工具的靈魂。我用的是YAML格式見名知義注釋友好。初始化命令會(huì)生成一份帶完整注釋的默認(rèn)配置不會(huì)讓用戶面對(duì)空白文件發(fā)呆。配置的核心是規(guī)則集、閾值、路徑過濾三塊。# .open-code-review.yaml project: name: my-service language: python rules: python: no-print: { level: error, message: 禁止使用print調(diào)試請(qǐng)使用logging } no-bare-except: { level: error, message: 禁止裸except必須捕獲具體異常 } func-limit: enabled: false # 默認(rèn)關(guān)閉打開后需要配合max_line參數(shù) thresholds: max_total_changes: 800 # 超過800行變更的PR會(huì)被標(biāo)為“高復(fù)雜度” max_complexity_score: 20 # 單文件復(fù)雜度分上限 max_files_changed: 30 # 單PR文件數(shù)上限 ignore_paths: - **/migrations/** - **/generated/** - docs/** suppress: - pattern: no-print paths: [scripts/**] # 特定路徑下豁免特定規(guī)則配置里每個(gè)規(guī)則不是簡(jiǎn)單的開關(guān)而是帶著級(jí)別、消息、建議修復(fù)方式的結(jié)構(gòu)化對(duì)象。比如一個(gè)error級(jí)別的規(guī)則報(bào)告里會(huì)明確寫“這條不修合并會(huì)被阻斷”而warning級(jí)別的規(guī)則只做提示不會(huì)讓CI變紅。這套分級(jí)很重要如果所有規(guī)則都是error團(tuán)隊(duì)會(huì)產(chǎn)生“狼來了”效應(yīng)見到紅叉也麻木。團(tuán)隊(duì)落地的時(shí)候我建議把配置放在倉庫根目錄并強(qiáng)制同步。也可以單獨(dú)建一個(gè)配置倉庫用include字段引用公共配置再在每個(gè)項(xiàng)目里覆蓋個(gè)性化部分。公共配置可以沉淀新成員加入、團(tuán)隊(duì)復(fù)盤出問題了就把教訓(xùn)轉(zhuǎn)成一條規(guī)則加進(jìn)去這么持續(xù)滾動(dòng)半學(xué)期你會(huì)發(fā)現(xiàn)自己團(tuán)隊(duì)的標(biāo)準(zhǔn)開始近乎自動(dòng)執(zhí)行。2.2 git diff解析評(píng)審的“切片”能力git diff解析這層看著簡(jiǎn)單做細(xì)了非常磨人。工具用的是git log --oneline加git diff --stat拿到范圍再用git diff --unified0拿純變更行。但純diff有個(gè)大問題它只有行號(hào)沒有函數(shù)邊界。不看上下文的話一條變更在哪個(gè)函數(shù)里、影響哪條調(diào)用鏈完全不知道。所以我做了一層“變更上下文注入”拿到diff之后用正則加括號(hào)配平把變更行所在的函數(shù)名識(shí)別出來再往上追溯它屬于哪個(gè)類、哪個(gè)模塊。這樣規(guī)則引擎可以做到“函數(shù)級(jí)”的檢查。比如Java里有一條規(guī)則叫“修改public方法必須同步修改調(diào)用方的測(cè)試”如果沒有函數(shù)邊界信息這種規(guī)則根本寫不出來。變更度量上我不單純看“改了多少行”而是用四圍指標(biāo)算復(fù)雜度新增行數(shù)、刪除行數(shù)、涉及文件數(shù)、涉及函數(shù)數(shù)。參考的是圈復(fù)雜度的思路經(jīng)權(quán)重組合得出一個(gè)值實(shí)踐下來比純行數(shù)有效得多。有一段代碼長得離譜但全是重復(fù)代碼純行數(shù)分?jǐn)?shù)很高但實(shí)際是安全的機(jī)械替換而一段只改了三行的代碼動(dòng)的是核心狀態(tài)機(jī)這種變更反而是最需要重點(diǎn)看的——復(fù)雜度模型會(huì)捕捉這種“小改動(dòng)大風(fēng)險(xiǎn)”。2.3 靜態(tài)規(guī)則引擎先過濾低級(jí)問題規(guī)則引擎我先后實(shí)現(xiàn)了兩套掃描方式。第一套是正則模式簡(jiǎn)單粗暴對(duì)“不要出現(xiàn)print”、“不要用比較浮點(diǎn)數(shù)”這類模式匹配問題夠用性能也好。第二套是AST解析模式它把語法樹完整讀出來能做的事就多很多——比如Python里能查出“except后直接pass”、“函數(shù)參數(shù)名與全局變量沖突”、“資源句柄沒有關(guān)閉”這類模式問題還能順手做基礎(chǔ)的風(fēng)格一致性檢查。內(nèi)置規(guī)則庫目前覆蓋Python、JavaScript/TypeScript、Go三種語言每種語言大概五十到上百條規(guī)則。但內(nèi)置規(guī)則只是起步真正的價(jià)值在自定義規(guī)則。工具提供了Python接口用戶可以自己寫規(guī)則函數(shù)接收變更上下文對(duì)象返回發(fā)現(xiàn)問題列表。因?yàn)榻涌谑呛瘮?shù)級(jí)別的老手可以寫出“檢查Redis Key有沒有加上業(yè)務(wù)前綴”、“檢查新增的接口有沒有加權(quán)限注解”這種業(yè)務(wù)強(qiáng)相關(guān)的規(guī)則——這一下子規(guī)則引擎的價(jià)值就不再被語言自身限制住了。這里必須強(qiáng)調(diào)去噪。評(píng)審工具最大的敵人不是漏報(bào)是誤報(bào)。誤報(bào)多了團(tuán)隊(duì)會(huì)無視一切告警再好的工具也是廢鐵。所以規(guī)則引擎做了三層降噪一是ignore_paths生成文件、遷移腳本、第三方代碼目錄直接跳過二是per-rule閾值比如行數(shù)超限這類規(guī)則可以設(shè)置“只在函數(shù)超過80行時(shí)才提示”避免大量擦邊告警三是suppress注釋在代碼里寫# open-code-review: disableno-print可以針對(duì)單點(diǎn)豁免注意是“單點(diǎn)豁免”而不是“全文件豁免”這是硬性設(shè)計(jì)——全文件豁免會(huì)變成一根大水管任何規(guī)則都能從那里被排走。2.4 語義評(píng)審模塊把大模型用作評(píng)審助手規(guī)則引擎的極限很明顯它能查出“你做了什么不對(duì)勁”但查不出“這件事本身該不該做”。比如一個(gè)支付模塊的函數(shù)改了金額類型從int改成float規(guī)則引擎檢查不出任何問題因?yàn)檎Z法正確、命名規(guī)范、格式標(biāo)準(zhǔn)——但要害在精度上。這種問題需要語義理解所以工具把模型服務(wù)做成可插拔的語義引擎。接入方式不復(fù)雜配置里加一個(gè)engine段即可semantic: enabled: true provider: custom api_base: https://your-model-endpoint.example.com/v1 api_key_env: LLM_API_KEY model: your-model-name timeout_seconds: 30 max_concurrency: 4 diff_batch_size: 1但要想讓模型產(chǎn)出高質(zhì)量的評(píng)審意見直接丟一段diff是沒有用的——這點(diǎn)我反復(fù)踩過坑。模型需要結(jié)構(gòu)化的“評(píng)審上下文”我會(huì)在prompt里組裝成下面這種結(jié)構(gòu)這段代碼的項(xiàng)目類型和背景、它屬于哪個(gè)業(yè)務(wù)模塊從倉庫讀README和目錄結(jié)構(gòu)推斷、完整的函數(shù)上下文而不是只有幾行diff、以及讓它關(guān)注的幾個(gè)評(píng)審維度安全、性能、可維護(hù)性、并發(fā)正確性。而且我會(huì)要求它返回嚴(yán)格JSON{ issues: [ { severity: warning, file: services/order.py, line: 42, title: 金額使用float存在精度風(fēng)險(xiǎn), detail: Decimal替代float, confidence: 0.87 } ], summary: 整體邏輯清晰但建議關(guān)注金額精度處理 }結(jié)構(gòu)化輸出可以直接進(jìn)報(bào)告引擎也可以被CI解析并決定是否阻斷。關(guān)鍵詞是“取舍”四個(gè)維度的評(píng)審不會(huì)一次全開而是用參數(shù)控制比如--focussecurity,performance。默認(rèn)值我設(shè)成security和correctness兩個(gè)維度因?yàn)檫@兩類問題靠人肉review最容易看漏反過來像“可讀性差”這種意見不適合讓模型提——機(jī)器說“這段代碼讀起來不順暢”非常空洞徒增噪聲。2.5 報(bào)告與CI集成讓評(píng)審結(jié)果可追溯報(bào)告引擎做三件事聚合、去重、格式化。聚合是把四個(gè)引擎的結(jié)果合并標(biāo)注每個(gè)問題的來源git分析/規(guī)則引擎/語義引擎這樣用戶能看出哪類問題哪層發(fā)現(xiàn)得多反向指導(dǎo)規(guī)則調(diào)整。去重是跨引擎消重比如語義引擎提到的“金額用float有精度風(fēng)險(xiǎn)”如果規(guī)則引擎也命中了一條float相關(guān)規(guī)則按置信度保留其中一條另一個(gè)降為“關(guān)聯(lián)參考”。格式化則輸出三種格式Markdown人在網(wǎng)頁或本地查看按文件分組按嚴(yán)重級(jí)別排序每個(gè)問題帶定位、說明、建議JSON給CI鏈路和其他工具用字段穩(wěn)定方便二次開發(fā)HTML離線也能看得舒服帶代碼上下文折疊。CI集成上給了兩個(gè)最常用的模板。GitHub Actions的場(chǎng)景是在PR觸發(fā)時(shí)跑一遍把報(bào)告作為artifact上傳同時(shí)用注釋和PR關(guān)聯(lián)GitLab CI類似。關(guān)鍵配置是fail策略--fail-onerror表示只有error級(jí)別問題才讓流水線失敗warning只評(píng)論不阻斷。我強(qiáng)烈建議團(tuán)隊(duì)第一天只讓工具“潛水觀察”——跑但只生成報(bào)告不阻斷任何東西堅(jiān)持兩三周把誤報(bào)閾值調(diào)到穩(wěn)定區(qū)間后再開email阻斷直接上阻斷團(tuán)隊(duì)體感很差會(huì)集體把工具當(dāng)噪音屏蔽掉。3. 實(shí)操過程從零跑通一次完整評(píng)審3.1 安裝、初始化和第一份基線報(bào)告我以Python環(huán)境為例說明安裝流程。建議用pipx而不是直接pip install全局裝因?yàn)楣ぞ咭蕾嚜?dú)立環(huán)境更干凈pipx install open-code-review裝完先跑版本號(hào)確認(rèn)成功open-code-review --version。接著在一個(gè)要接入的項(xiàng)目根目錄執(zhí)行初始化命令它會(huì)生成默認(rèn)配置文件和一個(gè).gitignore條目然后初始化一個(gè)本地緩存目錄cd ~/work/my-service open-code-review init初始化完成后先跑一次基線掃描我習(xí)慣稱之為“把自己家底摸清楚”open-code-review scan --base HEAD~1 --head HEAD這條命令比較的是最近一次提交和它上一次提交的差異范圍。因?yàn)槭堑谝慌芙Y(jié)果大概率很多不要慌。這份基線報(bào)告很有價(jià)值——它告訴你這個(gè)項(xiàng)目現(xiàn)狀的“技術(shù)債水位線”后續(xù)每次改動(dòng)只要不超過這個(gè)基線水位很多都是可接受的反而突然在某個(gè)PR冒出一個(gè)聞所未聞的規(guī)則錯(cuò)誤那才是值得優(yōu)先看清的大坑。3.2 團(tuán)隊(duì)公共配置如何落地如果你有多個(gè)項(xiàng)目想統(tǒng)一評(píng)審標(biāo)準(zhǔn)不要在每個(gè)倉庫里復(fù)制粘貼同一份配置那個(gè)維護(hù)起來就是給自己上刑。建議建一個(gè)單獨(dú)的code-review-config倉庫公共部分寫在一個(gè)base配置里項(xiàng)目側(cè)的做法是# 在項(xiàng)目的 .open-code-review.yaml 里寫 extends: - git::https://github.com/your-org/code-review-config/base.yaml project: name: my-service description: 訂單服務(wù) rules: # 項(xiàng)目特有的規(guī)則覆蓋 java: no-system-out: { level: error }extends字段支持git倉庫和本地路徑兩種方式拉取后做深度合并項(xiàng)目級(jí)配置的rules覆蓋base的同名規(guī)則不重名的保留在base規(guī)則。整個(gè)配置合并邏輯要保證在本地也能跑打開配置調(diào)試開關(guān)可以看到最終生效的完整配置這個(gè)功能建議經(jīng)常開不定時(shí)你會(huì)發(fā)現(xiàn)某些規(guī)則一直沒生效是因?yàn)楸缓髞碚呶⒚畹馗采w了。團(tuán)隊(duì)公共配置建議按“發(fā)現(xiàn)-固定-分享”的節(jié)奏來迭代每次評(píng)審中發(fā)現(xiàn)一種沒有規(guī)則覆蓋的錯(cuò)誤類型先人工討論清楚統(tǒng)一口徑然后給公共配置加一條規(guī)則同時(shí)更新changelog讓所有項(xiàng)目平滑同步。3.3 用真實(shí)案例演示一次完整評(píng)審我構(gòu)造一個(gè)非常典型的小案例在分支上給登錄接口增加了一個(gè)“記住我七天”的選項(xiàng)改動(dòng)涉及Redis存取邏輯。跑一下open-code-review scan --base main --head feature/remember-me --semantic-enable很快會(huì)得到一份報(bào)告抽幾條核心輸出給大家感受一下{ issues: [ { severity: error, source: rules, file: services/auth.py, line: 128, title: Redis key缺少業(yè)務(wù)前綴, detail: key應(yīng)該以auth:或login:開頭避免與其他業(yè)務(wù)模塊沖突, suggestion: 改為 flogin:token:{uid} }, { severity: error, source: rules, file: services/auth.py, line: 141, title: Token過期時(shí)間硬編碼, detail: 配置中心維護(hù)不允許在代碼里出現(xiàn)魔法數(shù)字, suggestion: config.get(auth.token_ttl, 604800) }, { severity: warning, source: semantic, file: services/auth.py, line: 155, title: remember_me參數(shù)影響token有效期建議區(qū)分token類型, detail: 同一套token機(jī)制下短期會(huì)話token與長期token混用會(huì)增加密碼重置后token未失效的風(fēng)險(xiǎn), confidence: 0.82 } ], summary: 本次變更整體風(fēng)險(xiǎn)中等2個(gè)阻塞問題需處理1個(gè)建議確認(rèn)。 }這個(gè)案例很能說明問題前兩條是規(guī)則引擎掃到的低級(jí)錯(cuò)誤改法確定第三條是語義引擎提出的跨字段風(fēng)險(xiǎn)——這不是“代碼不合法”而是“邏輯設(shè)計(jì)上有隱患”它把決策價(jià)值交還給了人。我拿著這個(gè)報(bào)告去問寫這個(gè)需求的同學(xué)他立刻判斷確實(shí)是設(shè)計(jì)時(shí)沒想到的情況。如果當(dāng)時(shí)直接讓reviewer硬讀那段diff這條風(fēng)險(xiǎn)很可能在一堆格式修改里被忽略掉。3.4 把評(píng)審接到PR工作流接入PR工作流的重點(diǎn)不是寫配置文件而是在恰當(dāng)?shù)沫h(huán)節(jié)跑、把結(jié)果送到正確的人眼前。最小可用版建議三步走。第一步在開發(fā)者側(cè)裝一個(gè)pre-push鉤子推送前對(duì)當(dāng)前分支相對(duì)主干跑一次本地掃描發(fā)現(xiàn)問題直接提示但不要阻止推送——阻止推送這里是強(qiáng)制攔截后面會(huì)逐漸變成用戶本能的逆反心理不要做。第二步CI里跑完整評(píng)審生成報(bào)告和comment可以設(shè)置error級(jí)別阻斷。GitHub Actions的例子name: code-review on: pull_request: types: [opened, synchronize] jobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 with: fetch-depth: 0 - uses: actions/setup-pythonv5 with: python-version: 3.12 - run: pipx install open-code-review - run: | open-code-review scan \ --base origin/${{ github.event.pull_request.base.ref }} \ --head HEAD \ --semantic-enable \ --format json \ --output review-report.json \ --fail-onerror - uses: actions/upload-artifactv4 with: name: code-review-report path: review-report.json注意fetch-depth必須設(shè)為0否則工具拿不到完整的git歷史diff范圍會(huì)出錯(cuò)——這是新手接入時(shí)遇到最多的問題之一原因就是默認(rèn)的淺克隆把歷史裁掉了。第三步把報(bào)告里高置信度的有趣問題以評(píng)論方式發(fā)到PR里這里可以用腳本讀取JSON把最棘手的三條挑出來用markdown格式評(píng)論而不是把整個(gè)幾十條評(píng)論全量刷到PR里否則刷屏不但讓人覺得編輯沒完沒了人心散了后面就不看了。4. 常見問題與排查實(shí)錄4.1 大倉庫diff分析慢到懷疑人生我見過最夸張的案例一個(gè)單體倉庫一次評(píng)審跑了將近二十分鐘團(tuán)隊(duì)直接放棄使用。原因有三個(gè)git blame全量跑、AST解析覆蓋了所有目錄、語義引擎對(duì)每個(gè)函數(shù)都發(fā)一次請(qǐng)求。解法也對(duì)應(yīng)三條。第一git blame不開全量只在規(guī)則引擎需要追查“這一行是誰引入的”時(shí)才單文件調(diào)用而且默認(rèn)關(guān)閉需要配置開關(guān)打開。第二AST解析配合ignore_paths過濾生成目錄、第三方源碼目錄必須排除Reporting文件實(shí)際上分析收益極低但開銷很大。第三語義引擎默認(rèn)只分析新增和修改函數(shù)的上下文不分析調(diào)用鏈開銷從O(整個(gè)文件)降到O(變更函數(shù))。另外做一個(gè)增量緩存每個(gè)文件的規(guī)則掃描結(jié)果按文件hash緩存文件沒變直接從緩存拿。實(shí)踐下來一個(gè)兩百個(gè)文件左右的中型項(xiàng)目全量跑從三分鐘降到了二三十秒增量跑只要幾秒。4.2 “AI評(píng)審報(bào)告寫得像廢話”怎么辦語義引擎上線第一階段“這段代碼看起來不錯(cuò)但建議補(bǔ)充單元測(cè)試”這類廢話滿天飛reviewer看兩篇就免疫了。排查下來問題是prompt太寬模型沒說清楚“從哪里看、看到什么程度算問題”。后來我給語義引擎加了三個(gè)約束第一必須給出具體line和severe級(jí)別以及置信度數(shù)字置信度低于0.7的問題不要輸出廢話通常置信度很低第二每個(gè)問題必須同時(shí)給出“為什么是問題”和“怎么改”兩段否則這條直接丟棄第三禁止輸出style和readability類意見——這類意見開源社區(qū)的模板里價(jià)值極低本質(zhì)上是模型在重復(fù)格式化偏好。還有個(gè)大招是把倉庫的README、最近一次commit message、相關(guān)模塊的目錄結(jié)構(gòu)塞進(jìn)prompt做項(xiàng)目背景。模型知道這是“訂單服務(wù)”還是“調(diào)度系統(tǒng)”之后輸出質(zhì)量是天壤之別。這套改造完成后語義引擎產(chǎn)出的意見可采納率從不到兩成提到了大概五成剩下的兩成雖有歧義但也能給人提供線索。4.3 私有化環(huán)境沒有外網(wǎng)模型服務(wù)可以用金融、政企類客戶一般要求代碼不出內(nèi)網(wǎng)這個(gè)訴求很合理。但我的思路是語義引擎本來就是可插拔的沒有外網(wǎng)模型就把語義引擎關(guān)了靜態(tài)規(guī)則和git分析依然能跑已經(jīng)覆蓋了大量基礎(chǔ)問題。如果實(shí)在想要語義分析也可以在內(nèi)網(wǎng)部署自托管的模型服務(wù)一個(gè)中等規(guī)格的推理機(jī)器就能扛住一個(gè)上百人團(tuán)隊(duì)的評(píng)審流量配置上只要把a(bǔ)pi_base從“外部服務(wù)地址”改成“內(nèi)網(wǎng)服務(wù)地址”即可代碼一行不用動(dòng)。需要提一句如果你用的自托管的模型能力不強(qiáng)對(duì)輸出質(zhì)量要降低預(yù)期同時(shí)調(diào)高confidence閾值到0.8寧可少報(bào)也別報(bào)一堆錯(cuò)的東西毀掉團(tuán)隊(duì)對(duì)工具的信任。工具的信任一旦崩塌重建成本遠(yuǎn)高于一開始的保守配置。4.4 自定義規(guī)則誤傷正常寫法自定義規(guī)則是最容易出閘事故的地方。我之前寫過一個(gè)“禁止在for循環(huán)里調(diào)用sleep”的正則模式結(jié)果誤傷了所有含“sleep”字符串的業(yè)務(wù)日志——因?yàn)槿罩疚谋纠镆灿衧leep這個(gè)詞正則沒做詞邊界直接匹配上了。改成AST解析才算真正準(zhǔn)判斷for循環(huán)體內(nèi)有沒有Call節(jié)點(diǎn)指向sleep函數(shù)而不是文本里有沒有sleep四個(gè)字母。這個(gè)教訓(xùn)后來被我固化成指南能用AST實(shí)現(xiàn)的規(guī)則不要用正則正則永遠(yuǎn)只能做初篩涉及語義和結(jié)構(gòu)的規(guī)則必須走AST層。另外一個(gè)建議是新規(guī)則上線先降級(jí)為warning級(jí)別跑一輪歷史數(shù)據(jù)看誤報(bào)率誤報(bào)率低于1%再晉級(jí)為error并且配置灰度只針對(duì)某個(gè)模塊生效。寧可花兩周觀察規(guī)則也不要上一個(gè)三天兩頭誤傷隊(duì)友的規(guī)則。4.5 CI里每次全量掃描太慢且結(jié)果不好合并這個(gè)問題在CI接入兩周后一定會(huì)出現(xiàn)。每次PR全量掃描幾個(gè)并行MR同時(shí)跑構(gòu)建隊(duì)列直接堵死。解法是CI只跑增量--base設(shè)置成目標(biāo)分支的merge-base只分析這個(gè)PR自身引入的變更不重新掃描整條線。工具默認(rèn)就做了行號(hào)偏移和上下文綁定報(bào)告里標(biāo)記的行號(hào)是PR合并后的目標(biāo)行號(hào)方便在diff視圖定位。還有報(bào)告合并的問題如果同一個(gè)PR推了三次每次CI都生成一份報(bào)告結(jié)果就是三份孤立的報(bào)告沒人看。我的建議是把報(bào)告以固定路徑上傳為artifact不按時(shí)間戳生成這樣PR頁面始終只看最新一份--fail-onerror做合并前的最后阻斷但如果團(tuán)隊(duì)還在潛水期就把這個(gè)開關(guān)關(guān)掉。下面是一個(gè)快速排查表現(xiàn)象原因處理掃描到的錯(cuò)誤行號(hào)和代碼對(duì)不上fetch-depth為0導(dǎo)致淺克隆歷史被截?cái)郈I里設(shè)置fetch-depth: 0規(guī)則沒生效項(xiàng)目配置覆蓋了公共配置的同名規(guī)則開啟配置調(diào)試看最終合并后的生效配置語義分析超時(shí)模型請(qǐng)求積壓并發(fā)設(shè)得過高被限流把max_concurrency調(diào)低到2~3加大timeout_seconds報(bào)告里有大量純格式類告警內(nèi)置style規(guī)則默認(rèn)沒關(guān)在配置里關(guān)掉style規(guī)則或降級(jí)為info本地跑得動(dòng)CI跑不動(dòng)本地有緩存CI無緩存CI里配置緩存路徑或者保持全量但不跑語義引擎5. 我踩過的最大一個(gè)坑以及接下來的打算這個(gè)工具走到現(xiàn)在我最深的一點(diǎn)體會(huì)是評(píng)審工具成敗不在于能發(fā)現(xiàn)多少問題而在于能讓人愿意長期跑下去。版本初期我追求“告警多”一個(gè)PR恨不得報(bào)五十條團(tuán)隊(duì)成員直接線上集體抗議——質(zhì)量再高工具被棄用就是零。后來我學(xué)會(huì)做減法默認(rèn)關(guān)閉一切低置信度檢查規(guī)則分級(jí)明確報(bào)告排序永遠(yuǎn)只把最該看的三條放在最前。工具像一位謹(jǐn)慎的資深顧問不是咆哮的鬧鐘這個(gè)定位想清楚了落地就順了。接下來我打算做的事比較具體一是把自定義規(guī)則整理一個(gè)公共市場(chǎng)用戶可以把配置發(fā)布出來共享不同團(tuán)隊(duì)不用重復(fù)造輪子二是把VSCode插件排上日程在編輯時(shí)就能實(shí)時(shí)提示部分規(guī)則問題而不是等到提交后才發(fā)現(xiàn)三是語義引擎里增加一個(gè)“相似問題檢索”能力如果某個(gè)問題歷史上出現(xiàn)過并修過可以把修復(fù)commit關(guān)聯(lián)過來降低閱讀報(bào)告的心智負(fù)擔(dān)。如果你正準(zhǔn)備在團(tuán)隊(duì)里推行類似的評(píng)審工具我的建議就一句話先跑一個(gè)月“只讀不阻斷”把誤報(bào)清干凈再開阻斷。這個(gè)“只讀期”不是浪費(fèi)時(shí)間而是讓工具用真實(shí)表現(xiàn)贏得團(tuán)隊(duì)信任的必經(jīng)之路。沒有信任再優(yōu)秀的規(guī)則集也活不過第一周。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美懂色综合网| 91精品国产麻豆国产自产在| 日本中文字幕在线视频| 992这里有精品| 另类欧美| 蜜桃色色网站视频三区| 精品久久艹| 影音先锋少妇| 少妇内射www在线观看视频| 青娱乐欧美激情一区二区| 久久99精品国产| 欧美日韩性感| 老司机深夜18禁污污网站| 亚洲天天更新| 国产福利精品最新在线| 中文字幕99999| 欧美一二在线| 国产熟妇 码视频户外直播| 久久日本熟妇熟色高清| 日韩免费看黄片| 久久αⅴ| 国桃视频产巨乳精品一区二区在线| 精品久久久久久中文字幕视频免费| 国产强奸超碰AV| 97视频免费播放| 婷婷激情一区二区三区俺也去| 91操熟女视频| JULIA一区二区三区在线播放| 任你干在线视频| 高树玛利亚无码流出| 思思久热在线精品66| 99九九久久| 99无码| 国产狂喷潮在线精品| 青青草原人妻| 高清国产精品福利网站| 国语精品内射在线观看| 婷婷精品国产欧美精品亚洲人人爽| 亚洲综合中文字幕有码 | 狠狠色五月亚洲91| 伊人991| 日日摸日日碰| 磁力99AV| 丰满精品人妻少妇久久字幕| 亚洲激情网一二三四区| 久久精品国产亚洲AV嘿嘿| 人妻久久| 91美女视频直播| 人妻精品4K4K4K4K4| 国产成人精品无码久久| jizz啪啪| 校园春色五月天| 国产97av| 中文字幕一区二区视频在线观看| 97爱欧美| a'v在线资源| 色欧洲| 蜜乳av一区二区三区| 欧美亚洲日韩人妻在线观看| 日本欧美色| daxiangjiao你懂的| 日日黄色三级网站| 激情五月婷婷| 91欧美偷拍| 另类av天堂| 日韩高清一二三| 东京热91| 2019久久久久久久久福利| 亚洲系列欧美| 91欧美在线| 1769国内精品视频| 国产精品久久久久久照片| 日本无码1| 在线 制服丝袜中出 人妻| 亚洲中文字幕三级在线| 日本精品国产视频| 91在线丝袜视频| 欧美第二页午夜| 久午视频| 日日碰狠狠添天天爽超| 好看的91视频| 天天cao在线| 天天躁日日躁AAAAXXXX国产| www.99视频| 99熟女| 91啪啪视频| 久热99| 欧美猛交黑寡妇中文字幕| 又黄又硬又粗又长国产视频| 強姦亂倫a| 日本黄色精品专区网站| 波多野结衣AV无码一区| 艹比视频国产精品| 日本人妻中文字幕精品| 丁香五月婷婷五月| 日韩综合色图| 91AV天美在线视频| 97视频网站| 国产天天看| 黄色大片一区二区密桃丝袜| A一区片| 超碰在线974| 久久国色天香香蕉| 欧美性区| 久久九精品| 日韩免费一级性爱视频| 超碰无码加勒比| 国产精品黑人一区二区三区| 九九九不卡| 在现视频女上位好爽| 国产真实野战在线视频| 无码粉嫩白虎一线天b区| 久夜视频| 91丨九色丨国产打屁股| 欧美精品双插| 欧美 亚洲 制服 精品| 99在线精品观看99| 变态综合色| 久久久精久久久| 蜜桃臀一区二区aV| 丁香激情五月| 福利视频网站| 大香蕉乱级| 综合熟妇一区二区三区| 嫩草黄页| 99re9| 翘臀vidoes| 成人精品电影| 八人操人人摸人人看| 狠狠色一区二区中文字幕| 亚洲精品 欧美精品| 国产sv美女内射| 亚洲揄拍网| 超碰九九| 温婉少妇玩3p| 99re69| 96久久久久| 久草福利在线资源站| 国产a级精品| 精品一区二区三区18| 超碰天天操| 香蕉99秘 一区精品蜜桃臀| 欧美性爱中文字幕无线码| 校园春色综合色| 96麻豆精品一区二区三区| 亚洲中文字母在线播放| 久草成人影片| 亚洲激情在线| 十八禁成人网站在线观看| 91精品成人| 黑人美精品 A片| 国产精品网站www| 午夜小电影在线插入淫高潮| 日韩另类色图| 乱伦熟妇一区二区| 亚洲在线网站| 欧美精品人妻视频| 国产亚洲福利第一页丝袜| 99999精品成人| 九九人妻| 看免费的黄片| 日韩女模中文造逼| 亚洲性猛交| 国产精品久久蜜乳av| 三级日韩一区二区三区| 久久免费看高潮毛片韩国| 激情无码日韩| 亚洲欧美日韩夜夜| 日本国产高清色www视频在线| 亚洲精品第一| 九热大香蕉| 欧美精品23| 日韩欧美日韩| 狠狠躁AV| 偷窥自拍亚洲| 亚洲色鬼| 成人性爱全视频观看| 大干人妻| 9热9热综合网| 精品午夜福利国产一区二区在线观看| 久久精品国产精品一区| 狠狠色丁香| 午夜精品久久一区二区| 亚洲色久| 手机看片日韩人妻| 97超碰美女| 97视频新免费| 伊人影院在线理论播放| 91N综合网| 久久99手机免费视频| 亚洲色啪| 国产成人网| 日韩av不卡在线观看| 操逼操2| 国产免费内射视频| 亚洲情色综合网| av东京热男人的天堂| 精品91摸| 嫩草美女久久| 91夜色| 欧美亚洲自拍另类人妻| 国产97在线 | 亚洲| 这里只有97精品| 成人情色综合网| 操婢日韩| 婷婷五月天影院| 黄色一级视| 精品国产乱码久久久久久口爆网站| 亚洲性综合9| 超碰欧美97资源| 91欧美大片| 精品九九九九| 99操| 好湿好紧好爽 视频| 大香蕉色网| 色婷婷基地| 亚洲黄色| 亚洲不卡av在线| 视频黄色国产一级| 日韩情色AV| 正在播放国产精品一区| 综合网久久| 色99视频| 一线黄色免费性爱片| 日本国产欧美高清在线| 99九九精品| 亚洲自拍天堂| 伊人色综合网电影| 国产黄色小视频网站| 国产乱色国产精品免费视| 免费作爱一级视频| 超碰调教97| 久久久久921| 精品一区二区三区丰满熟女-亚洲欧美一区| 老熟女区| 色狠狠一区二区三区香蕉| 操啊国产| 另类在线| 欧美亚洲色的图| av影片在线观看不卡| 凌辱美少妇久久aV| 大香蕉免费乱伦视频| 精品国产91av一区二区三区 | 一本正道久久熟女| 亚洲熟妇综合久久久久久| 另类专区加勒比| 韩美日操逼| 久久天天性久久伊人| 国产乱码久久久| 中出91视频| 久草国产在线视频| 成功精品影院| 超碰天天去日穴| 夜色AV无码手机在线影院| 中文字幕乱碼在线| 极品欧美一区二区三区| 久操99| 日本操逼视频免费| 99国产在线绯色一区| 国产一国产一级毛片古装| 宗合情欲网| 97干综合网| 91丝袜| 乱伦日本中文自拍| 摸奶性爱视频网站在线免费播放| 中文字幕在线播放2中文字幕在线观看2| 大香伊人在线一区| 韩国久久97| www.av在线视频| 密臀AV在线| 狠狠夜色午夜久久综合在线| 少妇大屁屁| 精品国产网站| 五月婷婷丁香六月丁香| 五月丁香六月激情综合| 亚洲天堂2020| 日韩福利综合一区| 中文字幕55555| 国产AV激情无码久久无码 | 日日A∨| 中文字幕日韩专区精品系列| 伊人色综合欧美| 五月丁香六月婷| 国产久久免费精品视频| 中文字幕av一区二区三区人妻少妇| 四方色播| 国产亚洲日本| 91xingse| 久久XX| 国产又色又粗又黄又爽| 亚洲熟妇乱女区二区三区| 91亚洲综合在线| 日本999精品| 天堂九九九九九九九九九| 盗摄女人妻在线| 男人女人18禁片免费看网站| 国产av青草| 久久久 国产精品| 欧美成熟性爱精品| 26uuu最新| 97色综合中文网| 亚洲文学偷乱拍啪啪啪啪| 欧美中字二区| 91天美传媒精品| 久极品在线观看| 91久热这里只有精品| 久久香蕉国产线看观看猫咪av| 中文字幕丰满人妻日本| 精品无码一区二区| 国产野战露脸在线播放| 欧美成人性活片| 欧美97网| 人妻激情另类| 天堂精品在线| 精品人妻夜夜草| 青青五月天| 国产精品成久久久久午夜午夜| 亚洲国产精品无码AV在线| 少妇久久久免费| 在线观看AV不卡| 91欧美丨精品丨入口| 色一区二区三区综合| 中国黄色特级精品一区二区三区片| 任你草| 岛国黄色大片网站| 激情丁香五月婷婷| 大香蕉av在线| 精品妇女一区二区三区| 成人资源中文字幕在线观看天天| 一区二区三区一亚洲中文字幕、综合区灬| 凹凸视频特色日本特黄| 亚洲天堂男人天堂| 午夜精品99久久久久传媒| 巨爆乳一区二区爆乳区| 91人妻尻屄视频| 色五月综合网| 一区二区视频你懂的| 久久天天摸| 亚洲日韩东京热一区| 啊啊啊啊,啊啊好多水| 日韩欧美性爱电影在线观看| 鸥美极品| 青娱乐国产剧情av一区| 日韩欧美加勒比| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 99久在线精品99re8热| 91熟女熟妇视频网站| 男人天堂久久日韩| 中文字幕一区二区三区50路| 亚洲成?V人片在线观看福利| 天天干2区3区| 亚洲一区二区av| 嫩草影院性色| 日欧毛片久久| 在线v中文字幕一区二区三区 | 五月婷婷综合在线| 玖玖久久久| 男人天堂2017| 久久久精品国产亚洲AV无码| 日韩天天本| 五月丁香激情综合网| 免费少妇一区二区| а√天堂资源官网在线资源| 综合网 欧美| 十八禁电影伊人网| 成人三一级一片aaa| 91色伦| 91chinese在线| 强奸乱伦动态污图免费 | 少妇毛片久久| 性爱精品一区| 亚洲综合99999| 日本熟妇自慰性高潮一区二区三区| 欧美曰韩国产精品| 亚洲第一页第二页激情| 东京热,男人的天堂| 国产精品爆乳懂色蜜乳| 97干在线看| 精品久久久av无码免费| 黄色小说亚洲| 日韩美女操b| 抽插一区二区视频| 亭亭丁香激情| 997色在线| 婷婷久热| 亚洲影院无码在线| 天天干人妻视频| 野狼激情网| AV和黑人在线播放| 中文字幕成人| 国产在线综合网| 日韩天天本| 婷婷色一区| 大香网站| 免费αV在线视频| 精品少妇一区二区| 今日头条成人一区二区三区四虎精品| 欧美成人贴图| 泰国AV在线观看| av网页一区二区三区| 激情露脸爱| 日韩免费性爱视频在线观看| 日本性一区| 99自拍B亚洲| 婷婷五月花| 福利色色| 郑州宾馆老熟女露脸啪啪| 九九九九免费高| 波多野结衣一级视频| 久插不卡| 强奸乱伦日韩AV| 97色碰| 蜜桃精品视频一区二区三区| 日韩九区| www.久久最新地址| 欧美片第一页| 久久久国产三级黄色片| 91黑丝在线播放| 欧美暴力猛交| 99re黄| 久久黄片国产一区二区| HEYZO高无码国产精品227| 国产麻豆福利av在线播放| 性感美女91影视| 日韩三级伊人| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 天天操天天射天天日| 日韩综合97P| 日韩乱伦视频| 久久久九九网站| 柠檬AV导航| 人人妻人人操人人乐| 青青草自拍视频在线播放| 亚洲 图片 欧美 色图| 亚洲一本大道中文字幕无码在线| 久操免费在线| 91东京热男人的天堂| 温婉少妇玩3p| 美女诱惑爱爱| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 四虎影视 亚洲无码| 97国产精品久久久久| 少妇的嫩逼图片| 亚洲精品乱码线路中文字幕| 激情五月天视频| 色女综合| 97在线免费看视频| 97在线播放| 色吧5亚洲| 蜜臀一区二区三区在线| 96麻豆精品一区二区三区| 国产精品美女久久久久久网站| 狠狠久久亚洲欧美专区| 久久草在线综合视频| 青草香蕉网| 久久大| 久久99网站| 人妻美腿丝袜日韩| 亚洲色图日韩精品| 中文字幕久久精视频久久大全| 日韩二级| 香蕉视频精品亚洲一区二区三区在线播| 一级性爱视频免费观看| aV中亚| 伊人骚琪琪亚洲天堂网站| 极品色综合| 丁香五月综合| 久久久精品网站| 偷拍色图| 国产夫妻一区二区| 久久人人爽爽人人爽人人片αV| 亚洲精品天堂久久A∨51成人漫| 国产一级αv免费看片| 精品国产乱码久久久影院| 人妻中文字幕精品无码| 九九热免费视频| 天天做天天爱夜夜爽毛片试看| 大香蕉欧美国产日韩高潮| 台湾一区国产高清在线| 东北女人av| 大香蕉一级黄色片久久| 污到发麻的视频 国产| 日本欧美中文字幕| 精品v1区| 日人妻视频91| 3P丝袜熟女 色综合| 狠狠欧美| 高清无码 国产精品| 91美女高潮| 99热亚洲天堂| 一区二区三区免费岛国片| 黑人性欧美| av强奸乱轮| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 久久久精品中文字幕麻豆| 艹比视频国产精品| 国产精品白领在线观看| 狠狠爱综合| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 东京热男人的天堂网| 天天狠操| 亚洲天堂2020| 青青草九九九九九| 高清无码 国产精品| 欧美熟妇色| 国产亚洲日本| 青青草视频爽一爽| 99热免费| 成年人一级黄色毛片大全在线观看| 99久久综合| 日韩无码专区| 操逼片中文| 老外又粗又长一晚做五次| 欧美日韩精品久久久久东北老熟妇| 成人性爱av| 欧美色女人| 无马一区二区| 久久久亚洲熟妇资源| 天天天天天天天天综合| 精品人妻1237| 91五十路| 久久久九九| 五月婷婷性爱| 美国黄片aaa| 中文久久96| 啊啊啊啊嗯嗯嗯用力好爽| 欧美人妻另类在线| 日韩国产成人自拍视频| 蜜区区视频79 | 日韩欧美视频青青| 日韩黄片视频试看| 一级岛国大片| 夜草欧美| 欧美精品成人一区二区在线观看| 亚洲天堂2020| 性欧美另类高清| 国产高清无码一区三区二区| 黄色免费网页无码| 爱射综合| 99热99在线| 国产欧美伊人| 国产黄色在线播放观看| 极品综合| 国产区91柔拿会所技师| 亚洲超碰在线| 91中文精品日韩欧美在线| 一区二区蜜臀| 91精品人妻| 精品久久无码午夜福利| 熟女精品va中文字幕| 91丨九色丨国产打屁股| 嗯~啊~快点 死我视频| 九九九九欧美| 日韩欧美性吧婷婷乱伦大香蕉| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 秋霞欧美性爰视频| 男人的天堂2019AV| 另类欧美| 乱伦熟女专区| 2011国产精品| 天天日天天干天天摸天天操| 亚洲无码国产探花在线观看| 在线99热| 九九九成人| 色伊人91| 欧美人妻中出| 18禁免费视频| 亚洲人在线成线成人| 插插综合网天天影视网| 日人妻视频91| 色网1| 三级日韩一区二区三区| 欧美18禁91| 亚洲国产成人综合碰碰三级经典| 国产97亚洲| 色情五月综合婷婷| 国产精品97视频| 超碰AV在线| 色欲久久99国产精品久久久久久| 九热中文字幕| 久久久精品国产亚洲伊人| 国产精品一区二区三区四区五区| 日本高清电影欧美色图| 日韩精品黄片免费观看| 一区二区久久天天干狠狠| 艾草av| 国产极品久久久| 日韩,欧美,中文在线| 黄色大香焦1级‘′‘| 欧美综合综合| 亚洲的天堂网| 69AV女优男人的天堂| 99热自拍| 龙兴卡官方查询| 91国产美女丝袜足交精品视频| 久草这里只有精品| 99热线麻豆| 台湾佬中文娱乐自偷自拍| 综合97| 国产自啪精品视频网站黑丝| 久操av在线| 天堂射| 思思热在线| 国产高清吃奶免费视频网站| 久久欲| 精品视频一区二区| 日本欧美韩国国产在线| 国产一级137片内射麻豆| 老熟女91| 色yeye成人免费视频| 久草福利在线资源站| 萌白酱自拍视频| 久久老熟女| 日夜干射色啊| 久九九九九九九热| 九九这里只有精品| 国产综合网站在线播放| 蜜臀AV秘一区翔田千里| 亚洲色欲一区二区三区| 综合自拍| 久久肏大逼| 无码精品一区二区三区潘金莲| www.男人天堂| 人人操人人叉人人插人人| 2017亚洲天堂| 午夜爽爽爽| 人人妻人人澡人人爽人人精品浪潮| 综合色播| 高清有码一区二区| 女沟厕偷窥piss小便| 操淫穴亚洲五月丁香| 色综合潮| 大香蕉欧美国产日韩高潮| 国产乱弄免费在线视频。| 日韩AV中文字幕电影| 骚乳在线| 另类av综合久久| 麻豆一区在线| 欧美色图小说综合| 国产精品另类| 啪啪性爱免费视频| 先锋激情∨在线视频播放| 天天摸天天操视频| 亚洲有码视频二区| 伦激情人妻另类人妻| 校园激情狠狠四射| 欧美男人天堂| 日韩在线一区二区| 色色婷| 激情文学 国产一二三aV| 裸体1区| 日韩精品熟妇| 欧美色图人妻| 欧美激情久操网| 天天摸夜夜摸| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 欧美日韩免费性爱| 亚洲精品天堂久久A∨51成人漫| 中文字幕日产av人| 一级@啪啪视频| 大香蕉操久久| 色爱三区| 无码乱人伦中文视频| 超碰97色| 啊v在线观看视频| www老逼91| 国产无码精品高清| 99精品丰满人妻无码| 999精品国产高清一区二区| 欧美日韩性感| 欧美呦呦性爱| 色亚州人久干视频在线观看免费版| 蜜臀av在线播放一区二区三区| 亚州性9| 一二三区操逼国产91| 亚洲aV性爱| 一级黄碟| 欧美日韩人人早| 天天懆天天日| 蜜臀在线视频| 久久熟女人| 亚洲性天堂| 国产AV激情无码久久无码 | 国产AV线| 国内精品999| 五月综合激情| 婷婷五月天丁香| 国产精品不卡一区二区三区| 日韩欧洲操屄视频| 伊人天天久久动态图| 大香蕉色十月| 国产福利精品98视频| 欧美日韩淫加| 国产日韩欧美亚洲精品95| 国产精品午夜成人福利| 午夜福利1区2区3区| 天综合网欧美| 婷婷深爱五月| 中文字幕一二三| 欧美熟妇操操视频| 日日碰狠狠添天天爽超| 国产精品久久发布| 精品人妻一区二区三区四区石在线| 18禁超污无遮挡无码免费网| 精品二区三四区五电影 | 精品久久在线区一区| 欧美第一页| 91操人| 神马久久久久眼| 99国产在线 精品 视频| 亚洲视频精选| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | av一区二区三区 中文| 久草成人| 久久中文字幕人妻熟av女蜜柚| 精品久久久久久中文字幕三区| 亚洲国产精品久久久久婷婷青年| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 亚洲天堂资源网| 亚洲精品1区| 欧美 亚洲 制服 精品| 日本网色| 久久高清欧美国产| 精品久久无码午夜福利| 午夜毛片亚洲精品片国产久久久| 看一级黄色视频| 亚洲欧洲无码bt精品合集| 伊人精品久久网站| 日本人妻中文字幕精品| 99青草| 国产亚洲国产超碰| 一区二区三区四区久久视1| 日本成a人v网站在线观看| 9丨久久九九九| 久久超碰日韩精品| 色图综合网| 一级做a爰片性色毛片久久| 欧美一级A一级a爱片久久| 乱伦强奸区日韩| 欧美性爱日韩性爱| 综合色色网| 久久久9视频| 亚洲男人天堂2| 久操免费观看| 精品久久久久av影院| 欧美天天综合网| 久久人妻熟女一区二区| 国产一线二线三线av| 中文字幕片| 熟妇人妻精品一区二区| 国产精品白丝在线播放| 五十路熟女工口| 99亚洲国产精品色一区二区三区| 操逼天美3区| 国产精品久久久久久久久久梁医生| 亚洲伊人久久精品影院| 精品少妇一区二区| 日韩少妇无码| 秋霞无码av鲁丝片一区| 欧美激情久操网| 欧美不卡在线一区二区| 亚洲AV无码黄色强奸| 五月天婷婷小说| 97高清啪啪| 97se亚洲| 在线综合 亚洲 欧美中文字幕| 啊啊啊免费| 一区操逼日比视频| 国产亚洲精品久久久久小| 凸凹视频在线观看| 九九九久千久久激情蜜桃在线看| 一区二区激情国产熟女| 国产精品视频播放| 日韩无限资源| 九九色综合| 国产精品久久久久久久免牛肉蒲团 | 91色色网站| 色欲天天综合网| 亚洲大胆人体av| 日本黄色精品专区网站| 五月天激情网站| 色爱亚洲| 免费观看啪视频| 日韩一999精品| 97 视频在线| 久久人妻| 99热这里只有精| 97在线观看| 97免费在线视频在线观看| 天天综合官网| 亚洲欧洲偷拍一区| 亚洲欧美碰碰| 欧美性猛交美女自慰91| 97超碰碰| 国产成自自拍在线观看| 欧美体内射精| 国产吞精a级片激情电影| 亚洲AV在线资源| 韩国一级做A片免费的| 国产在线激情| 7777奇米影视久久| 国产乱人妻精品入口| 人人插人人摸人人| 午夜啊啊| 爱欲AV| 亚洲色图欧美一区二区不卡| 婷婷情色综合网| 97人人操人人摸| 亚洲中文字幕久久无码精品| 91亚洲人电影| 久久久亚洲高清不打码| 噜噜噜噜天天狠狠| 欧美 亚洲 大香| 精品人妻av区天天看片| 日韩ab网 | 日本成人在线不卡一区二区三区| 国产偷仑| 色综九九九一区| 亚洲av成人精品一区| 操逼操网| 男人兔费天堂| 91蜜臀在线久久久久| 极品尤物自安慰| 久久久久亚洲三级电影| 97天天日| 伊人久久AV诱惑悠悠| 视频在线97| 嗯嗯啊啊好大好爽| 亚洲自拍另类丝袜综合| 亚洲情色一区三区| 伊人97色天使| 澳门黄片一香蕉视频| 欧美激情在线观看视频| 天天天天天天天天天天干美女| 涩五月婷婷| 9久9久9久9久视频网站| 人妻乱仑一区二区三区| 物业黑人 AV一区| 十八岁啪啪视频免费看| 99www.bibizy香蕉资源国产一区二区三区高清 | 97在线免费看视频| 色五月激情网| 亚洲深夜福利| 五月丁香色综合| 欧美天天搞| 精品久久久久,69国产成人精| 欧美国产操逼| 黄色大香焦1级‘′‘| 亚洲。日韩。欧美| 中文字幕久久婷婷丁香五月天| 亚洲欧美日韩精品久久久一区二区| 天天色悠悠激情| 超碰78| 九九九九九九亚洲| A级片日韩欧美国产欧美视频精选观看| 牛黄色久午久| 深喉吞精| 亚洲免费精品一区| 强奸乱伦AV网址| 天天日美女的B| www.色婷婷色综合| 久久人妻| 欧美性爱网97| 久久精品国产免费观看99| 九九九不卡| 天天综合精品| 国产精品亚洲天堂网址| 91久久久久| av天天在线观看| 五十路六十路七十路熟婆| 91艹| 亚洲一区深夜| 国内精品a| 欧美亚洲韩国视频十五区| 操操操日本的逼| 欧美—性—交—色| 麻豆久久久久久久久丝袜| 人人操人人插人人摸人人干| 97爱啪| 校园春色制服丝袜中文字亚洲| 国产在线激情| 日本日日色视频| 国产一区二区av综合| 高清无码人妻久久久一区二区三区aⅴ| 久久久夜夜嗨免费视频| 亚洲色人| 澳门成人网站久国产日韩| 人妻 丝袜美腿 中文字幕| 96超碰网| 91熟女熟妇视频网站| 亚洲国产91精品一区二区久久| 97 国产一区| 色噜噜综合网| 韩国一级婬片A片无码天美| 9精品久久久久| 二级久久网| 国产乱码久久| 色欲天天综合久久久无码网中文| 99自拍B亚洲 | 亚洲中文字幕av| 岛国福利在线精品播放| 96国产污污污丝袜| 一本一道人妻久久一区二区三区 | 操我无码| 欧美日韩亚洲高清不卡一区二区三区| 久久只有精品| 狠狠干妹子| av午夜玫瑰| 伊人AAA| 免费在线黄片视频| 成人国产视频在线观看| 男人的天堂VA| 久久久久久裸体| 97久久免费| 欧美日韩国第一区| 婷婷五月花| 亚洲成A∨人影院在线欢看| 精品丰满熟妇人妻一区| 欧美少妇性乱| 超硑97精品| 日韩成人色图| 亚洲天堂男人在线| 大香蕉av在线| 综合一区中亚洲国产成人综合精品 | 久久久性爱| 极品一区二区三区免费| 91久久久老司机| 超碰人妻中文在线| 亚洲日韩青青草色月| 成人免费在线网站| 精品无码久久久久久久杏吧| 色综合大香蕉| 男同专区一区二区三区在线| 色婷婷蜜臀av| 夫妻四区五区六区| 精品99999久久久久久| 夜夜一区二区| 六月婷激情福利天堂69| 综合色图亚洲欧美| 欧美嫩性色| 国产熟女少妇一区| 婷婷情色综合网| 97蜜桃综合| 亚洲激情 欧美色图| 高树玛利亚无码流出| 91视频成人福利网站在线一区 | 欧美亚洲在线| 九七超碰人人乐| 久久国产精品m码| 精品视频一二三中文| 丁香九月婷婷| 后入式五六区| 老鸭窝在线视频播放| 性感美女91影视| 91综合站| 12一15性XXXX粉嫩国产| 一级@啪啪视频| 日本人妻最新在线中| 色色色日本| 国产成人久久精品蜜臀| 日本爽爽爽爽爽爽免费视频| 欧美自拍偷拍综合图片| 亚洲一欧洲中文字幕在线| 黄aaaaaaaaaaaaaaaaaa色网站| 中日亚韩免费视频| 俺去俺来也在线www| 天天色粽合合合合合合合| 青青草在线视频人人想人人上| 亚洲激情网| 97操97色| 青青草久久| 国产免费内射视频| 日本一区二区亚洲综合| 综合欧美激情网| 欧美在线视频99| 午夜天堂精品久久| 日本熟妇自慰性高潮一区二区三区| 情色五月天网| 99热精品在线观看| 久久国产AⅤ| 一区二区三区免费岛国片| 日本大片日本一区二区免费高清| 天天插天天操| 美腿色图| 日本一卡二区在线| 久久久999国产精品| 老司机福利青青草| 国产成人bd在线观看| 夜夜一区二区| 91在线免费观看处女| 天海翼久久| 麻豆天美传媒毛片| 色一色综合网| 欧美综合加勒比在线| 男人的天堂三级| 精品亚洲一区在线观看| 色婷网| 热热热热日日漂亮永久永久国产日| 91少妇香蕉久久精品| 欧美色性情| 亚洲成人久久一区二区| 欧美成人精品一区二区三区| 亚洲少妇综合| 五月婷婷六月丁香网址| 日韩国语字幕| 久久中出在线| 青青青青青手机视频| 精品人妻一区| 久久伊人网视频一区二区三区 | 欧美18 在线观看| 九九色综合| 嫩草 我啊~嗯~在线| 强奸乱伦 亚洲一区| 天天色,天天干,天天干| 国产精品一区二区在钱播放| 色噜噜人妻av中文字幕| 大香蕉专区| 99操| 台湾一区国产高清在线| 日韩另类色图| 日韩三级av片| 日韩AC| 99蜜月精品久久| 黄色在线网站| 久久999久| 99久久亚洲精品无码毛片潘甜甜| 97人人操人人摸人人爱| 色欲人妻一区二区在线| 国产强奸乱伦欧美| 俺去久久| 亚洲丝袜诱惑| 久99久视频精选| 97超碰欧美中文字幕| 天天综合精品| 国产久久男人天堂| av绯色| 呦女网站| 九九探花视频在线观看| 97天天在线| ?亚洲伊人伊成久久人综合网| 超碰在线974| 人人操人人干xxx| 久久一区,青青青青草视频在线播放| 蜜臀在线看片| 黄色高清无码无码破解免费暗网 | 少妇久久久久久久久| 920日本午夜免费| 校园春色五月天| 丝袜熟女一区二区三区| 高清不卡 中文 人妻| 亚洲强奸乱伦影视网| 国产精品午夜精品| 大香蕉视频一二三区| 久久久久久9999| 福利视频一区二区微拍| 嫩草 我啊~嗯~在线| 日本福利二区视频| 春色91| 五月久久HDAV| 亚洲精品成人动漫在线| 新精精品久久精品| 亚洲图片偷拍视频区| 亚洲欧美97| 久久综合日韩亚洲欧美| 久热在线精品免费观看| 亚洲天堂日本| 日本中文字幕在线视频| 九9热伊人| 97啪啪| 人妻天天爽天天爽三区| 97久久久精品| 亚洲av强奸乱伦| 亚洲av青草久久一区二区| 四虎AV影视国产精品亚洲精品| 一区二区三区不卡视频| 三级片大波波| 黑人嘿嘿嘿超爽免费视频| 超碰久超碰久| 日韩少妇丰满亚洲| 色爱三区| 久久久久深夜无码| 午夜激情床戏激情| 亚洲精美粉嫩嫩泬在线观看 | 蜜桃香蕉久草精品在线| 国产又粗又又黄又猛| 影音先锋新男人| 久久成人东京热人妻| 亚洲中文人妻色| 99久久久久久久久| 亚洲天堂精品日韩电影| 精品人妻一区二区三区视频| 国产成人网址| 欧美色视频在线| 亚洲丝袜诱惑| 97爱啪| 97国伦国色| 婷婷亚洲综合| se01国产在线视频| 亚洲色人阁| 婷婷九月国产| 狠狠操综合| gogogo免费高清看中国国语| 自拍六区| 亚洲高清在线se| 日韩一区二区熟女| 91丨九色丨国产打屁股| 在线岛| 四虎免费在线观看| 天天天做天天天爱天天天爽| 67914在线精品观看| 在线国产探花| 99在线免费公开视频| 亚洲欧美色图片| 久热精品色情| 欧美日韩性感| 五月丁香六月婷综合成人综合| 亚洲色图欧美激情| 97操97干| 天天色踪合| 欧美97在线观看| 久久婷婷国产一区二区色| 果冻国产精品麻豆成人av| 三级AV入口| 欧美三四五区| 久久久久久久9最新免费视频观看| 爱我干综合| 午夜影美女日鸡鸡天天视频国产| 香蕉精品二区二区| 风月影院男女十八禁| 精品乱码久久久久| 天天综合香 ld视频| 国产天天骚| 青青草在线成人视频| av天堂影视中文在字幕在线中文| 国产在线视频二区| 另类图片欧美激情综合| 日本亚欧爱爱| 果冻传媒一区二区三区| 天天射夜夜| 欧美成人一区二区| 六月婷婷一区二区三区| 亚洲中文电影| 诱惑人妻欧美一区在线播放| 亚洲 欧美 另类 综合 偷拍| 九九玖玖精品| 1024亚洲中文字幕久在线看片你懂的| 黄色人人| 99这里只有精品国产| 天天躁日日躁AAAAXXXX国产| 九九精品无码专区免费| 涩综合导航| 久久受www免费人成| 国产精品 久久久精品一牛| 国产av激情无码久久天堂| 伊人网青青| 国产在线强奸视频| 亚洲伊人a线观看视频| 日本日逼高清|