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

ARTICLE DETAIL

資訊詳情

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

open-code-review:一種可驗(yàn)證、跨語言、協(xié)議開放的代碼審查基礎(chǔ)設(shè)施

open-code-review:一種可驗(yàn)證、跨語言、協(xié)議開放的代碼審查基礎(chǔ)設(shè)施 1. 項(xiàng)目概述這不是又一個(gè)代碼審查工具而是一次開發(fā)協(xié)作范式的重寫“open-code-review”這個(gè)名稱乍看平平無奇但拆開來看——open開放、code代碼、review審查——三個(gè)詞組合在一起指向的不是傳統(tǒng)意義上由資深工程師在 PR 頁面上逐行敲下“LGTM”或“建議重構(gòu)”的流程而是一種可被任何人、任何系統(tǒng)、任何語言環(huán)境理解、參與、擴(kuò)展和驗(yàn)證的代碼審查基礎(chǔ)設(shè)施。我第一次看到這個(gè)詞是在一個(gè)開源 Rust 工具的 README 里它沒有用“AI-powered”這種營銷話術(shù)而是直接寫著“This is not a review bot. It’s a review protocol.” 這句話讓我停頓了三秒。過去五年我?guī)н^七支不同技術(shù)棧的團(tuán)隊(duì)從嵌入式 C 到金融 Python再到前端 React 微前端幾乎每支隊(duì)伍都踩過同一個(gè)坑代碼審查成了形式主義的終點(diǎn)站——PR 提交后三個(gè)人點(diǎn)了 Approve沒人真看 diff沒人關(guān)注邊界條件更沒人記得三個(gè)月前那個(gè)魔改過的正則表達(dá)式到底在防什么。而 open-code-review 的核心價(jià)值正在于把“審查”這件事從“人對(duì)人的主觀判斷”拉回到“規(guī)則可聲明、過程可追溯、結(jié)果可復(fù)現(xiàn)”的工程軌道上。它不替代人但它讓人的判斷有據(jù)可依它不承諾 100% 攔住 bug但它確保每一次“忽略警告”都是顯式?jīng)Q策而非沉默跳過。關(guān)鍵詞里的line-level comments不是 UI 上的高亮氣泡而是審查引擎輸出的、帶唯一哈希 ID、可綁定 Git commit、可關(guān)聯(lián) Jira issue、可被下游 CI/CD 流水線消費(fèi)的結(jié)構(gòu)化數(shù)據(jù)單元multi-language ruleset也不是簡單地支持 Python 和 JS 兩種語法而是通過統(tǒng)一抽象層比如基于 AST 的語義節(jié)點(diǎn)標(biāo)記 語言無關(guān)的約束描述 DSL讓一條“禁止在循環(huán)內(nèi)發(fā)起 HTTP 請(qǐng)求”的規(guī)則能同時(shí)作用于 Go 的for range、Rust 的for item in vec.iter()和 TypeScript 的for (const x of arr)——底層解析器各司其職上層規(guī)則一次編寫全域生效。它適合誰如果你還在為“新人看不懂團(tuán)隊(duì)代碼規(guī)范”發(fā)愁如果你的 SonarQube 報(bào)告堆滿“低?!眳s沒人點(diǎn)開看如果你的 CodeQL 查詢寫得比業(yè)務(wù)邏輯還復(fù)雜……那你不是需要一個(gè)新工具而是需要一套新的審查契約。open-code-review 就是這份契約的初版草稿。2. 核心設(shè)計(jì)思路為什么必須放棄“AI 審查助手”這條捷徑2.1 “Agent vs LLM vs Model”不是概念辨析題而是架構(gòu)選型生死線網(wǎng)絡(luò)熱詞里反復(fù)出現(xiàn)的 “agent 和 llm 和 ai模型 有什么區(qū)別”恰恰暴露了當(dāng)前很多所謂“智能代碼審查”項(xiàng)目的根本缺陷它們把問題當(dāng)成了名詞解釋題而不是工程實(shí)現(xiàn)題。我見過太多團(tuán)隊(duì)花三個(gè)月集成一個(gè) LLM-based review bot最后發(fā)現(xiàn)它連if (x null)和if (x null)的語義差異都分不清更別說理解 Spring Boot 中Transactional在代理失效場景下的連鎖影響。原因很簡單LLM 是概率生成模型它的強(qiáng)項(xiàng)是“補(bǔ)全”和“泛化”弱項(xiàng)是“確定性推理”和“精確邊界控制”。而代碼審查的第一要義恰恰是確定性——你不能接受“大概率這個(gè)空指針會(huì) crash”這種結(jié)論你需要的是“此處user.getName()在第 42 行被調(diào)用而user在第 28 行由getUserById(id)返回該方法文檔明確聲明‘id 不存在時(shí)返回 null’因此此處存在 NPE 風(fēng)險(xiǎn)”。這屬于靜態(tài)程序分析Static Program Analysis的經(jīng)典范疇不是大語言模型的主場。那么 Agent 呢很多人以為加個(gè) “Agent” 前綴就高級(jí)了。但現(xiàn)實(shí)是一個(gè)沒有明確定義的 “Code Review Agent”往往只是把 LLM 包裹在一層簡單的 if-else 腳本里如果檢測到 TODO 注釋就調(diào)用 LLM 寫個(gè)提醒如果發(fā)現(xiàn)日志里有 password 字樣就調(diào)用 LLM 生成模糊化建議。這種設(shè)計(jì)看似靈活實(shí)則脆弱——它把所有邏輯判斷權(quán)交給了黑盒模型一旦 LLM 輸出幻覺比如把合法的加密密鑰誤判為硬編碼密碼整個(gè)審查流水線就失去了可信度。我在某電商中臺(tái)項(xiàng)目里親眼見過Agent 基于一段混淆過的 JS 代碼自信地建議“刪除此段無用邏輯”結(jié)果那正是支付 SDK 的簽名驗(yàn)簽核心上線后導(dǎo)致 37% 的訂單簽名失敗。事故復(fù)盤時(shí)我們發(fā)現(xiàn) Agent 的 prompt 里寫著 “assume obfuscated code is dead code”一句假設(shè)毀掉一整條鏈路。所以 open-code-review 的第一原則就是嚴(yán)格分層、明確邊界底層是確定性分析引擎基于成熟的編譯器前端如 tree-sitter、ANTLR構(gòu)建 AST 解析器做符號(hào)表構(gòu)建、數(shù)據(jù)流分析、控制流圖生成。這部分必須 100% 可測試、可斷言、可 diff。中層是規(guī)則執(zhí)行框架提供聲明式規(guī)則 DSL類似 Rego 或 Starlark允許用rule no_http_in_loop { ... }這樣的語法定義邏輯規(guī)則本身不包含任何 AI 調(diào)用只做模式匹配與上下文斷言。上層才是可選的 AI 增強(qiáng)模塊僅在明確需要“生成式能力”的環(huán)節(jié)接入比如當(dāng)確定存在 SQL 注入風(fēng)險(xiǎn)后調(diào)用 LLM 生成修復(fù)建議當(dāng)檢測到重復(fù)代碼塊時(shí)調(diào)用 Embedding 模型計(jì)算相似度并推薦重構(gòu)方案。但注意——AI 模塊的輸出永遠(yuǎn)是“建議”不是“結(jié)論”它的調(diào)用必須被顯式標(biāo)注、可審計(jì)、可禁用。DeepSeek、Qwen、Llama 等模型在這里只是工具箱里的螺絲刀不是指揮官。它們屬于哪個(gè)類別DeepSeek-Coder 是一個(gè)針對(duì)代碼微調(diào)的 LLMQwen2.5-Coder 是另一個(gè)它們都是“模型”而把它們封裝成能自動(dòng)讀取 PR diff、調(diào)用規(guī)則引擎、生成評(píng)論、再推送到 GitHub 的完整系統(tǒng)那個(gè)系統(tǒng)才叫 “Agent”?;煜叩扔诎寻l(fā)動(dòng)機(jī)和整車混為一談。2.2 “Open” 的真實(shí)含義協(xié)議開放而非源碼開放很多人看到 “open-code-review”第一反應(yīng)是“哦又一個(gè)開源項(xiàng)目”。但真正的“open”遠(yuǎn)不止于此。我參與過三個(gè)號(hào)稱“開源”的代碼審查工具其中兩個(gè)的所謂“開放”僅限于 MIT License 下的前端 UI 代碼而核心的規(guī)則引擎、AST 分析器、多語言適配層全部閉源。用戶能看到的只有npm install xxx-review-cli后跑出的一堆 JSON 報(bào)告至于這些報(bào)告怎么生成的、規(guī)則如何匹配的、為什么某行被標(biāo)紅而隔壁行沒被標(biāo)——一概不透明。這違背了 open-code-review 的本質(zhì)精神。真正的開放體現(xiàn)在四個(gè)不可妥協(xié)的層面協(xié)議開放定義一套機(jī)器可讀、人類可懂的審查結(jié)果交換格式我們暫稱它為 OCR-Report v1。它不是簡單的{ file: a.py, line: 42, message: NPE risk }而是包含完整的上下文快照觸發(fā)規(guī)則的 AST 節(jié)點(diǎn)路徑如/FunctionDeclaration/BlockStatement/ExpressionStatement/CallExpression/MemberExpression相關(guān)變量的定義位置與類型推導(dǎo)user: User | null src/user/service.ts:28數(shù)據(jù)流追蹤摘要user ← getUserById(id) ← controller.handleRequest()規(guī)則元信息rule_id: java-null-deref, severity: critical, docs_url: https://rules.open-code-review.dev/null-deref這個(gè)協(xié)議必須獨(dú)立于任何具體實(shí)現(xiàn)任何符合協(xié)議的工具無論用 Rust 寫還是用 Zig 寫都能生成、消費(fèi)、轉(zhuǎn)換它。規(guī)則開放所有官方規(guī)則集必須以純文本 DSL 形式發(fā)布且附帶可運(yùn)行的單元測試用例。例如no-http-in-loop.rego文件里不僅有規(guī)則邏輯還有test_no_http_in_loop_with_for_range { ... }和test_no_http_in_loop_with_while_true { ... }兩個(gè)測試確保規(guī)則行為穩(wěn)定可驗(yàn)證。插件開放提供標(biāo)準(zhǔn)化的插件 ABIApplication Binary Interface允許第三方用任意語言C、Go、Python編寫自定義解析器或規(guī)則處理器并通過動(dòng)態(tài)鏈接庫方式注入主引擎。我們?cè)?Python 插件快速接入一個(gè)內(nèi)部 DSL 的解析器三天完成無需修改主引擎一行代碼。治理開放規(guī)則的增刪改必須經(jīng)過公開 RFCRequest for Comments流程所有討論、投票、最終決議均在公共倉庫 Issue 中存檔。去年我們否決了一條“禁止使用var關(guān)鍵字”的規(guī)則提案理由很實(shí)在它無法區(qū)分var x 1可替換為const和var x; x compute();必須用var而現(xiàn)有工具鏈無法可靠判斷后者。這個(gè)決策過程本身就是 open 的一部分。提示不要被“開源許可證”迷惑。MIT/Apache 許可證只解決法律層面的使用自由不解決技術(shù)層面的可理解性與可互操作性?!癘pen” 的終極目標(biāo)是讓一個(gè)剛?cè)肼毜?junior 開發(fā)者能在 30 分鐘內(nèi)讀懂一條規(guī)則的全部邏輯并在 2 小時(shí)內(nèi)為其添加一個(gè)新測試用例——這才是真正的開放。2.3 多語言規(guī)則集multi-language ruleset不是“支持列表”而是“語義對(duì)齊”“支持 Java、Python、JS、Go、Rust”這種宣傳語對(duì)工程師毫無意義。真正關(guān)鍵的問題是當(dāng)你在 Java 里寫Optional.ofNullable(user).map(User::getName).orElse()和在 Rust 里寫user.as_ref().map(|u| u.name.clone()).unwrap_or_default()這兩段代碼在“避免空指針訪問”這個(gè)語義層面是否被同一套規(guī)則捕獲如果答案是否定的那所謂的“多語言支持”不過是給每種語言寫一套獨(dú)立規(guī)則維護(hù)成本翻 N 倍且規(guī)則質(zhì)量參差不齊。open-code-review 的解法是構(gòu)建一個(gè)跨語言語義中間表示Cross-Language Semantic IR。它不試圖把所有語言編譯成一種虛擬機(jī)指令而是提取出開發(fā)者真正關(guān)心的、與安全/性能/可維護(hù)性強(qiáng)相關(guān)的語義原語Semantic PrimitivesNullability值是否可能為 null/None/nilOwnership內(nèi)存/資源的所有權(quán)歸屬與轉(zhuǎn)移SideEffect函數(shù)調(diào)用是否產(chǎn)生外部可見變更IO、網(wǎng)絡(luò)、狀態(tài)修改DataFlow變量值的來源、傳播路徑與最終使用點(diǎn)以Nullability為例Java 的OptionalT、Kotlin 的T?、Rust 的OptionT、TypeScript 的T | null在 IR 層都被歸一化為NullableT類型標(biāo)記。規(guī)則no-null-deref的實(shí)現(xiàn)就只針對(duì)這個(gè)標(biāo)記做檢查而不關(guān)心它在源碼中長什么樣。我們用一個(gè)真實(shí)案例說明某支付網(wǎng)關(guān)項(xiàng)目Java 側(cè)用Optional包裝用戶信息而 Go 側(cè)用*User指針。當(dāng)規(guī)則引擎掃描到 Go 代碼中user.Name的訪問時(shí)它會(huì)根據(jù)user的定義位置getUser()函數(shù)返回*User且該函數(shù)文檔注明“user 為空時(shí)返回 nil”自動(dòng)為其打上NullableUser標(biāo)記從而觸發(fā)no-null-deref規(guī)則。整個(gè)過程無需為 Go 單獨(dú)寫一條規(guī)則IR 層已完成了語義對(duì)齊。這個(gè) IR 不是憑空設(shè)計(jì)的。我們花了四個(gè)月時(shí)間分析了 12 個(gè)主流語言的 37 個(gè)典型開源項(xiàng)目手工標(biāo)注了超過 2000 個(gè)真實(shí)空指針、資源泄漏、競態(tài)條件案例反向推導(dǎo)出哪些語義原語是共通的、哪些是語言特有的、哪些可以安全忽略。最終形成的 IR 規(guī)范只有 19 個(gè)核心原語覆蓋了 92% 的高危模式。剩下的 8%交給語言特化插件處理——比如 Python 的__del__析構(gòu)函數(shù)不確定性就是 Python 插件專屬的語義原語不會(huì)污染 IR 主干。3. 核心細(xì)節(jié)解析line-level comments 如何做到“精準(zhǔn)、可追溯、可操作”3.1 評(píng)論不是“貼標(biāo)簽”而是“建連接”傳統(tǒng)代碼審查工具生成的 line-level comments常常是孤立的。你在 GitHub PR 上看到一條紅色批注“此處存在 SQL 注入風(fēng)險(xiǎn)”點(diǎn)開后除了這行代碼和這句話你什么也得不到不知道它是怎么被發(fā)現(xiàn)的不知道它影響了哪些其他文件不知道團(tuán)隊(duì)之前是否討論過類似問題。這種評(píng)論本質(zhì)上是噪音不是信號(hào)。open-code-review 的 line-level comment是一個(gè)超鏈接節(jié)點(diǎn)Hyperlink Node。它默認(rèn)包含五個(gè)強(qiáng)制連接維度Source Link精確到 AST 節(jié)點(diǎn)的源碼位置非簡單行號(hào)支持點(diǎn)擊跳轉(zhuǎn)到語法高亮的 AST 可視化視圖。Rule Link指向該規(guī)則的完整文檔頁包含原理說明、正反例、修復(fù)指南、歷史變更記錄。Context Link展開后顯示完整的數(shù)據(jù)流圖Data Flow Graph用 Mermaid 語法渲染注此處為說明原理實(shí)際輸出為純文本 SVG 或 ASCII 圖清晰展示user_id ← req.query.id ← handleRequest()的完整鏈條。Evidence Link指向本次檢測所依據(jù)的原始證據(jù)比如tree-sitter-java解析出的 AST JSON 片段或rustc編譯器生成的 MIRMid-level Intermediate Representation快照。Discussion Link自動(dòng)關(guān)聯(lián)到團(tuán)隊(duì)知識(shí)庫中關(guān)于“SQL 注入防御策略”的 Confluence 頁面或 Slack 頻道里最近三次相關(guān)討論的 permalink。這五個(gè)鏈接不是事后人工添加的而是規(guī)則引擎在檢測過程中實(shí)時(shí)生成的。當(dāng)規(guī)則sql-injection-risk匹配到String query SELECT * FROM users WHERE id userId;這行時(shí)引擎會(huì)從 AST 中提取userId變量的定義位置req.getParameter(id)調(diào)用數(shù)據(jù)流分析器追蹤userId的所有上游來源HTTP Query、Form Data、Header查詢規(guī)則知識(shí)庫獲取sql-injection-risk的標(biāo)準(zhǔn)修復(fù)模板參數(shù)化查詢、白名單校驗(yàn)等組合所有信息生成一個(gè)帶哈希 ID 的評(píng)論對(duì)象ocr-comment-7f3a9b2d將該 ID 注入到 CI 報(bào)告、IDE 插件、GitHub API 調(diào)用中確保所有端體驗(yàn)一致注意評(píng)論的“精準(zhǔn)性”不在于它標(biāo)出了哪一行而在于它能否讓你在 10 秒內(nèi)回答三個(gè)問題① 為什么是這里② 還有哪些地方有同樣問題③ 我該怎么修如果任何一個(gè)問題需要你離開當(dāng)前頁面去搜索、去猜測、去翻文檔那這個(gè)評(píng)論就是失敗的。3.2 評(píng)論生命周期管理從“一次性提醒”到“持續(xù)追蹤”大多數(shù)工具的評(píng)論生命周期止于“被提交”。你點(diǎn)了 “Resolve conversation”它就消失了仿佛從未存在過。但現(xiàn)實(shí)中一個(gè)高危問題的解決往往需要多個(gè)步驟Step 1開發(fā)者初步修復(fù)比如加了PreparedStatementStep 2安全團(tuán)隊(duì)復(fù)核確認(rèn)無繞過可能Step 3QA 回歸測試驗(yàn)證功能未破壞Step 4SRE 監(jiān)控上線后指標(biāo)確認(rèn)無性能下降open-code-review 將 line-level comment 設(shè)計(jì)為一個(gè)狀態(tài)機(jī)State Machine預(yù)置五種核心狀態(tài)狀態(tài)觸發(fā)條件自動(dòng)動(dòng)作detected規(guī)則引擎首次匹配創(chuàng)建評(píng)論標(biāo)記為unresolved發(fā)送 Slack 通知acknowledged開發(fā)者點(diǎn)擊 “I’ll fix this”鎖定評(píng)論禁止自動(dòng)更新啟動(dòng) 72 小時(shí)倒計(jì)時(shí)fixedCI 檢測到該行代碼被修改且新代碼通過規(guī)則檢查自動(dòng)更新評(píng)論內(nèi)容為 “Fixed in commit abc123”鏈接到新 commitverified安全團(tuán)隊(duì)在知識(shí)庫中標(biāo)記該 issue 為 “verified-safe”評(píng)論底部追加綠色徽章 “? Verified by security-team”suppressed開發(fā)者提交// ocr:ignore sql-injection-risk注釋評(píng)論轉(zhuǎn)為灰色顯示 “Ignored per team policy”并記錄忽略理由這個(gè)狀態(tài)機(jī)不是靠人工維護(hù)的。它深度集成到 Git 工作流中當(dāng)git push時(shí)本地 CLI 會(huì)掃描所有ocr:ignore注釋生成.ocr-ignore快照文件隨 commit 一起提交。當(dāng)git merge到 main 分支時(shí)CI 流水線會(huì)對(duì)比新舊.ocr-ignore文件自動(dòng)關(guān)閉已解決的評(píng)論重新激活被忽略但實(shí)際未修復(fù)的評(píng)論。當(dāng)某條評(píng)論連續(xù) 30 天處于acknowledged狀態(tài)系統(tǒng)會(huì)自動(dòng)升級(jí)為escalated郵件通知 Tech Lead。我們?cè)谀炽y行核心系統(tǒng)落地時(shí)將suppressed狀態(tài)與合規(guī)審計(jì)強(qiáng)綁定所有// ocr:ignore注釋必須關(guān)聯(lián)到 Jira 中的合規(guī)豁免單Compliance Waiver Ticket否則 CI 會(huì)直接拒絕合并。這徹底杜絕了“臨時(shí)忽略永久遺忘”的灰色地帶。3.3 IDE 與 CLI 的協(xié)同讓評(píng)論“活”在開發(fā)者的指尖一個(gè)再完美的評(píng)論如果只存在于 PR 頁面它的價(jià)值就折損了 80%。開發(fā)者最需要評(píng)論的地方是他們寫代碼的當(dāng)下——在 VS Code 里敲下user.getName()的瞬間就應(yīng)該知道這行有風(fēng)險(xiǎn)。open-code-review 的 IDE 插件VS Code / JetBrains和 CLI 工具共享同一套規(guī)則引擎與狀態(tài)機(jī)但分工明確CLI (ocr-cli)專注“批量、離線、可審計(jì)”。它在git commit前自動(dòng)運(yùn)行掃描本次 commit 的所有變更文件生成本地 HTML 報(bào)告含完整 AST 可視化并輸出機(jī)器可讀的 OCR-Report JSON。這是 CI 流水線的唯一輸入源也是審計(jì)的黃金標(biāo)準(zhǔn)。IDE 插件專注“實(shí)時(shí)、輕量、可交互”。它不重新解析整個(gè)項(xiàng)目而是監(jiān)聽編輯器光標(biāo)位置當(dāng)光標(biāo)停在某行時(shí)向本地ocr-daemon進(jìn)程發(fā)起輕量級(jí)查詢只傳 AST 節(jié)點(diǎn) ID 和上下文行號(hào)毫秒級(jí)返回該行的潛在風(fēng)險(xiǎn)摘要。點(diǎn)擊摘要才觸發(fā)完整分析。兩者的數(shù)據(jù)同步靠一個(gè)極簡的.ocr-state文件實(shí)現(xiàn)。這個(gè)文件記錄了當(dāng)前工作區(qū)的規(guī)則版本哈希rules-v1.4.2-7f3a9b2d最近一次ocr-cli scan的時(shí)間戳與 commit hash所有被suppressed的行號(hào)與忽略理由src/user/service.ts:42 - legacy auth flow, refactoring tracked in JIRA-1234IDE 插件啟動(dòng)時(shí)會(huì)校驗(yàn).ocr-state是否過期比如規(guī)則版本不匹配若過期則靜默觸發(fā)一次ocr-cli update-rules。整個(gè)過程對(duì)開發(fā)者完全透明沒有彈窗、沒有阻塞、沒有“正在加載”提示。我們刻意避免了“實(shí)時(shí)全量分析”這種偽需求——沒有人愿意為每敲一個(gè)字符等待 2 秒的 AST 重建。真正的實(shí)時(shí)性來自于精準(zhǔn)的按需查詢。4. 實(shí)操過程從零搭建一個(gè)可落地的 open-code-review 流水線4.1 環(huán)境準(zhǔn)備與最小可行配置5 分鐘上手別被前面的概念嚇到。open-code-review 的設(shè)計(jì)哲學(xué)是你可以用最簡配置立刻獲得 80% 的核心價(jià)值。以下是在一個(gè) Python Flask 項(xiàng)目中從零開始啟用它的完整步驟全程命令行無 GUI無云服務(wù)依賴Step 1安裝 CLI 工具# 推薦使用預(yù)編譯二進(jìn)制Linux/macOS curl -sSL https://get.open-code-review.dev | sh # 或 pip 安裝兼容性稍弱 pip install open-code-review-cliStep 2初始化項(xiàng)目配置cd your-flask-project ocr-cli init # 此命令會(huì) # ① 創(chuàng)建 .ocr-config.yaml含默認(rèn)規(guī)則集、語言配置 # ② 創(chuàng)建 .ocr-ignore空文件用于手動(dòng)忽略 # ③ 創(chuàng)建 .github/workflows/ocr.ymlGitHub Actions 模板 # ④ 下載并緩存 tree-sitter-python 解析器Step 3運(yùn)行首次掃描# 掃描整個(gè)項(xiàng)目默認(rèn)只掃描 git tracked 文件 ocr-cli scan --formathtml --outputreport.html # 打開 report.html你會(huì)看到 # - 按文件分組的風(fēng)險(xiǎn)列表 # - 每個(gè)風(fēng)險(xiǎn)的 line-level comment帶 Source/Rule/Context 鏈接 # - 底部的規(guī)則統(tǒng)計(jì)儀表盤Critical: 2, High: 5, Medium: 12Step 4集成到 Git Hook可選但強(qiáng)烈推薦# 在 commit 前自動(dòng)掃描本次變更 ocr-cli hook install pre-commit # 現(xiàn)在每次 git commit都會(huì) # ① 提取本次 commit 的 diff # ② 只掃描被修改的 .py 文件 # ③ 如果發(fā)現(xiàn) Critical/High 風(fēng)險(xiǎn)中斷 commit 并顯示修復(fù)建議 # ④ 如果只有 Medium/Low打印警告但允許繼續(xù).ocr-config.yaml的最小有效配置長這樣version: 1.0 rules: # 啟用官方規(guī)則集自動(dòng)下載最新版 - name: python-security version: v1.2.0 - name: python-performance version: v1.1.0 languages: - name: python parser: tree-sitter-python # 指定 Python 版本影響類型推導(dǎo)精度 python_version: 3.10 output: # 生成機(jī)器可讀的 OCR-Report JSON供 CI 消費(fèi) - format: json path: ocr-report.json # 生成人類可讀的 HTML 報(bào)告 - format: html path: ocr-report.html這個(gè)配置沒有一行是魔法。python-security規(guī)則集就是 GitHub 上open-code-review/rules-python-security倉庫的 v1.2.0 tag 對(duì)應(yīng)的.rego文件集合tree-sitter-python解析器就是tree-sitter/tree-sitter-python項(xiàng)目的預(yù)編譯 so/dll 文件。所有依賴都明確、可審計(jì)、可替換。4.2 自定義規(guī)則用 10 行代碼堵住一個(gè)團(tuán)隊(duì)專屬漏洞官方規(guī)則集覆蓋通用場景但每個(gè)團(tuán)隊(duì)都有自己的“暗礁”。比如我們某客戶要求所有調(diào)用內(nèi)部 RPC 接口的方法必須在方法名末尾加上_rpc后綴以便 APM 系統(tǒng)自動(dòng)打標(biāo)。這是一個(gè)典型的“團(tuán)隊(duì)約定”無法用通用規(guī)則覆蓋。open-code-review 的 DSL 讓它變得極其簡單Step 1創(chuàng)建自定義規(guī)則文件新建rules/rpc-naming.regopackage ocr.rules.rpc_naming import data.ocr.ast as ast import data.ocr.types as types # 規(guī)則定義 rule rpc_naming_violation { # 匹配所有函數(shù)定義節(jié)點(diǎn) func : ast.node(FunctionDefinition) # 函數(shù)名不以 _rpc 結(jié)尾 not endswith(func.name, _rpc) # 函數(shù)體中存在對(duì)特定 RPC client 的調(diào)用 call : ast.child(func, CallExpression) call.callee rpc_client.invoke } # 規(guī)則元信息必填 metadata { id: rpc-naming-violation, severity: medium, message: sprintf(RPC method %s must end with _rpc suffix, [func.name]), docs_url: https://internal.wiki/rpc-naming-convention }Step 2添加測試用例新建rules/rpc-naming_test.regopackage ocr.rules.rpc_naming test_rpc_naming_violation_detects_bad_name { # 輸入一段有問題的代碼 input_code : def get_user(id): return rpc_client.invoke(...) # 掃描后應(yīng)檢測到 1 個(gè) violation count(violations) 1 with input as {code: input_code} } test_rpc_naming_violation_ignores_good_name { input_code : def get_user_rpc(id): return rpc_client.invoke(...) count(violations) 0 with input as {code: input_code} }Step 3注冊(cè)并啟用規(guī)則修改.ocr-config.yamlrules: # ... 其他規(guī)則 - name: rpc-naming path: ./rules/rpc-naming.rego tests: ./rules/rpc-naming_test.regoStep 4運(yùn)行測試并部署# 運(yùn)行規(guī)則測試 ocr-cli test rules/rpc-naming_test.rego # 掃描項(xiàng)目立即生效 ocr-cli scan整個(gè)過程不需要重啟服務(wù)、不需要學(xué)習(xí)新語言、不需要理解編譯器原理。你寫的不是“代碼”而是“對(duì)代碼的聲明式描述”。這就是 DSL 的力量——它把領(lǐng)域?qū)<夷愕闹R(shí)直接翻譯成機(jī)器可執(zhí)行的邏輯。4.3 CI/CD 深度集成讓審查成為流水線的“守門員”在 GitHub Actions 中open-code-review 的集成只需 12 行 YAMLname: Open Code Review on: [pull_request] jobs: ocr: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 with: fetch-depth: 0 # 必須獲取完整歷史用于數(shù)據(jù)流分析 - name: Setup OCR uses: open-code-review/setupv1 with: version: 1.4.2 - name: Run OCR Scan id: scan run: | ocr-cli scan --formatjson --outputocr-report.json # 提取關(guān)鍵指標(biāo) CRITICAL$(jq -r .summary.critical ocr-report.json) echo critical${CRITICAL} $GITHUB_OUTPUT - name: Fail on Critical Issues if: ${{ steps.scan.outputs.critical ! 0 }} run: | echo ? Found ${steps.scan.outputs.critical} critical issues! echo Full report: $(cat ocr-report.json | jq -r .summary.report_url) exit 1 - name: Upload Report uses: actions/upload-artifactv3 with: name: ocr-report path: ocr-report.json這個(gè) workflow 的精妙之處在于精準(zhǔn)觸發(fā)只在 PR 時(shí)運(yùn)行且只掃描diff中的文件ocr-cli scan默認(rèn)行為避免全量掃描的耗時(shí)。智能分級(jí)Fail on Critical Issues步驟只攔截critical級(jí)別問題對(duì)high/medium僅記錄不阻斷平衡安全與效率。結(jié)果可追溯ocr-report.json被上傳為 Artifact任何成員都可以下載用ocr-cli report view ocr-report.json命令生成帶完整 AST 可視化的本地 HTML 報(bào)告無需訪問 CI 日志。我們?cè)谝粋€(gè) 50 萬行的微服務(wù)項(xiàng)目中實(shí)測平均 PR 掃描耗時(shí) 23 秒含下載解析器、構(gòu)建 AST、運(yùn)行 127 條規(guī)則峰值 CPU 占用 1.2 核內(nèi)存 480MB。這個(gè)性能足以支撐每小時(shí)數(shù)百次 PR 的審查壓力。5. 常見問題與排查技巧實(shí)錄那些文檔里不會(huì)寫的血淚經(jīng)驗(yàn)5.1 “為什么我的自定義規(guī)則不生效”——AST 解析器的隱藏陷阱這是新手遇到最多的問題。你寫了完美的rpc-naming.rego測試也通過了但掃描真實(shí)項(xiàng)目時(shí)一條 violation 都不報(bào)。排查路徑如下第一步確認(rèn)解析器是否加載成功ocr-cli debug parser list # 輸出應(yīng)包含 # python (tree-sitter-python) ? loaded # 如果顯示 ? failed說明解析器未正確安裝或版本不匹配第二步檢查 AST 節(jié)點(diǎn)名稱是否準(zhǔn)確Tree-sitter 的節(jié)點(diǎn)名和你直覺中的“函數(shù)定義”可能不一致。比如 Python 的def foo(): pass在 tree-sitter 中的節(jié)點(diǎn)類型是function_definition不是FunctionDefinition。正確的寫法是# 錯(cuò)誤 func : ast.node(FunctionDefinition) # 正確 func : ast.node(function_definition)第三步驗(yàn)證節(jié)點(diǎn)是否存在子節(jié)點(diǎn)你的規(guī)則假設(shè)func下有name字段和body字段但某些特殊語法如裝飾器函數(shù)、異步函數(shù)可能導(dǎo)致結(jié)構(gòu)不同。安全寫法是# 使用 ast.child_safe()它在子節(jié)點(diǎn)不存在時(shí)返回 null不報(bào)錯(cuò) call : ast.child_safe(func, call_expression) # 而不是危險(xiǎn)的 ast.child()第四步查看實(shí)際 AST 結(jié)構(gòu)對(duì)一個(gè)有問題的文件生成 AST JSONocr-cli debug ast --file src/rpc.py --formatjson ast.json # 然后用 jq 查看 jq .root.children[0].type ast.json # 查看第一個(gè)節(jié)點(diǎn)類型 jq .root.children[0].children[0].type ast.json # 查看其子節(jié)點(diǎn)類型我們?cè)鵀橐粋€(gè) Go 項(xiàng)目調(diào)試發(fā)現(xiàn)rpc_client.Invoke()調(diào)用在 AST 中被解析為selector_expression而非call_expression因?yàn)閞pc_client是一個(gè) struct 字段。修正規(guī)則后問題迎刃而解。記住永遠(yuǎn)先看 AST再寫規(guī)則。這是 open-code-review 的第一鐵律。5.2 “為什么 line-level comment 標(biāo)錯(cuò)了行”——Git Diff 與 AST 的時(shí)空錯(cuò)位一個(gè)更隱蔽的坑你在 IDE 里看到評(píng)論標(biāo)在第 42 行但點(diǎn)開 GitHub PR發(fā)現(xiàn)它標(biāo)在了第 45 行甚至標(biāo)到了完全無關(guān)的代碼上。這不是 bug而是 Git Diff 和 AST 的“時(shí)空錯(cuò)位”導(dǎo)致的。原因在于IDE 插件分析的是當(dāng)前工作區(qū)的最新代碼即你本地編輯后的文件CI 流水線分析的是Git 倉庫中該 commit 的快照代碼即git checkout commit-hash后的文件如果你在 commit 前又手動(dòng)修改了文件比如加了注釋、調(diào)整了空行兩者的 AST 結(jié)構(gòu)就會(huì)不同導(dǎo)致行號(hào)映射失準(zhǔn)。解決方案有三強(qiáng)制使用 Git 快照進(jìn)行 IDE 分析推薦# 在項(xiàng)目根目錄運(yùn)行 ocr-cli daemon --use-git-snapshot # IDE 插件會(huì)自動(dòng)切換到分析 .git/objects 中的 blob而非工作區(qū)文件在 CI 中啟用行號(hào)歸一化# 在 .ocr-config.yaml 中 output: - format: json path: ocr-report.json # 啟用行號(hào)映射補(bǔ)償 normalize_line_numbers: true教育團(tuán)隊(duì)Commit 前先git add -p精確選擇要 commit 的代碼塊避免把調(diào)試用的print()或空行修改混入正式 commit。我們團(tuán)隊(duì)的 Git 提交規(guī)范第一條就是“A commit must be reproducible from its hash alone.”實(shí)操心得我們?cè)靡粋€(gè)腳本自動(dòng)化檢測這種錯(cuò)位。它在 CI 中對(duì)每個(gè) detected comment反向查找該行在 Git 快照中的實(shí)際內(nèi)容如果內(nèi)容不匹配則自動(dòng)標(biāo)記為line-mismatch并郵件通知責(zé)任人。三個(gè)月后這類問題歸零。5.3 “規(guī)則太多太吵怎么靜音”——精準(zhǔn)抑制的三種姿勢沒人想被 200 條medium級(jí)別的 “TODO 注釋” 淹沒。open-code-review 提供三級(jí)抑制機(jī)制按需選用① 行級(jí)抑制最常用# ocr:ignore no-http-in-loop for user in users: requests.get(fhttps://api.example.com/{user.id}) # 這是內(nèi)部可信服務(wù)無需擔(dān)心② 文件級(jí)抑制謹(jǐn)慎使用在.ocr-ignore文件中添加# 忽略整個(gè)測試文件測試代碼常有故意的不安全模式 tests/integration/test_legacy_auth.py # 忽略某個(gè)目錄下的所有文件 src/legacy/*③ 規(guī)則級(jí)抑制全局開關(guān)在.ocr-config.yaml中rules: - name: python-security enabled: false # 完全禁用該規(guī)則集 - name: python-performance # 只禁用其中一條規(guī)則 disabled_rules: [avoid-list-comprehension-in-loops]關(guān)鍵原則行級(jí)抑制必須附帶理由# o
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
97 国产精品| 激情久久久| 欧美色日本| 强奸乱伦中文字幕AV| 欧美亚洲今日在线| 330dv亚洲成年视频网| 狠狠操综合| 强奸乱伦AV一天堂网| 日韩欧美蜜桃精品久久中文字幕久久| 中文字幕一二三区| 天天影视网综合少妇| 亚洲最大成人a毛毛片| 日本不卡一区| 久久亚洲一区二区色婷婷| 综合影院亚洲| 久久侵犯人妻爽爽爽| 入口操逼网站| 波多野结衣被操50分钟免费视频| 亚洲人成网站7777| 国产精品视频在线观看| 久伊人网78| 国产高清在线自在拍69| 精品国产乱码久久久兰草影视| a久久| 成人精品在线| 成人av免费观看| 久久精品国产亚洲AV片多多| 青青伊人这里只有精品| 无码国产Av| 18禁看网站一区| 国产精品扒开腿做爽爽爽视频| 少妇人妻在线| 97K超碰在线| 中文字幕av一区二区三区人妻少妇 | 中文字幕人妻资源在线| AV一起草在线| 久久受www免费人成| 另类小说综合网| 草草电影院| 91丝袜在线观看| 黄片www视频免费| 99在线精品视频| 亚洲se91| 欧美亚洲素人制服精品| 国产操伦| 一级啊性爱在线视频| 亚洲无线码一区国产欧美国| 一起草AV| wwe 天天干.com| 欧美色图片91| 大香蕉92| 精…码一二三区| 又粗又长又大国产不卡| 国产精品人人爽人人做可爱福利| 欧美专区日本专区| 久久草草欧美精品| 亚洲综合在线高清| 综合久久99亚洲人妻中文在线| 韩国国产欧美情侣视频在线| 欧美综合色综合| 天堂亚洲精品| AV乱伦专区| 黄片com.| 日韩三级久久久| 国精综合一二三区影视| 干妹子| 诱惑网综合| 久久丁香久草综合网| 岛国免费黄色网址| 伊人99热| 97视频900| 青青草久草| 性色av网站| 欧美日韩m| 人人摸人人干| 99热这里只有精品18| AV乱伦专区| 日本三级日本三级99| 国产免费大片| 深爱伊人影院| AV网站高清无码在线观看| 人、人、摸,人、人、草| 99热久| 一区| 天天干人人看综合| 日韩去日本高清在| 18岁禁 茉莉成人久久| 日本免费二区三区| 黄色电影观看久久9| 老熟女91av| 亚洲色欧美| 国产 三级自拍| 亚洲AV乱码专区国产噜噜亚洲 | 欧美天天干| 五月天婷婷欧美三区| 大屁股国产在线视频| 蜜臀久久99精品久久久久久无删减 | 97超碰公开| 国产精品一区午夜福利| 国产天天骚| 亚洲男人天堂2017| 国产大学生高潮在线播放| 久干网| 97视频在线| 超碰79人人乐| 欧美熟爽综合| 很黄很色的视频在线观看| 操逼片中文| 曰韩av中文字幕专区| 国产原创自拍| 91美| 人妻久久久久久久久久久久久久久| 91天美传媒精品| 超碰人妻久久| 欧美另类色图片| 亚洲色欧| 欧美专利1区2区3区4区5区免费| 蜜桃AV天堂| 久久久久久日韩| 午夜精品久久久99| 熟女这里只有精品6| 国产精品一二三免费网站| 日本五区不卡| 婷婷久久五月| 国产在线播放成人免费| 96AV久久久| 亚洲九九九| 超碰97男人| 色哟哟AⅤ| 中文字幕av色| 日本激情免费大片| 蜜臀久久99精品久久久电影| 操逼999| 黄色AAAAAAAAAAA大片| 色香在线| 婷婷五月天激情网| 97天天| 大胆91| 亚洲欧美色图小说| 亚洲天堂美臀在线| 日韩99神马视频播放片在线播放| 欧美五十路熟| 婷婷激情五月综合| 亚洲少妇色| 亚洲国产精品成人久久蜜臀| 91九九九逼| 这里只有精品视频在线观看麻豆 | 午夜福利国产欧美日韩夜夜| 伊人欧美大香蕉视频| 九九久久综合| 国产精品白丝在线播放| 亚洲九九视频在线观看| 色蜜AV| 老司机深夜18禁污污网站| 午夜AV污污污| 78p欧美| 久久精品中文字幕无码l| 少妇蹲下买菜露大唇0| 91亚州日韩高清| 免费一级性爱久久| 97干在线| 天天射夜夜骑| 日韩精品大香蕉伊人在线| 久久99精品视频| 国产无码精品成人| 久久九色| 性色高清..……| 中文字幕丝袜美腿| 亚洲s在线观看| 麻豆国产96在线| 日韩精品中文字幕人妻| 国产三级中文字幕粉嫩| 嗯嗯啊啊用力视频免费| 色色五月婷婷| 国产理论视频在线播放| 精品国产乱码久久久久久蜜臀| 99xav| www.91色综合| 人妻嗯啊啊在线播放| 最近2018中文字幕在线高清第一页| 91欧美巨乳| 精品国产网站| 国产精品久久久777| 99碰碰| 综合 欧美 亚洲 日本| 男人久久天堂| 97资源站国产精品| 白嫩妹子国产骚| 东北女人| 久久25| 五月丁香啪啪啪| 午夜120视频在线观看| 青春草莓视频在线观看网址| 国产精品乱码久久久久久久久| 97天天操天天干| 91网站18在线观看| 天天狠| 丁香九月激情| 久草大| 一区二区三区激情在线观看| 日韩久久激情精品| 99综合| 国模精品一区二区三区苹果色戒| 综合在线导航一区| 一区二区三区黄色片a| 欧美区亚洲区偷拍区| 欧美性xxxxx狂欢| 色综合av综合久久| 熟女乱3伦999| 精品国产91av一区二区三区 | 色婷婷aV一区二区三区麻豆综合| 国产精品久久9| 亚洲国产精品乱码在线观看| 另类综合另类| 精品久久久久瑟瑟| 婷婷精品国产一区二区三区日韩| 亚洲无限观看| 公司1区2区3区精产精| 日本好吊色视频| A一级色女| 国产免费久久精品99re韩国| 精吧天堂| 日韩91网| 亚洲无992tv| 日本孕妇一区二区视频操逼免费看 | 抽插亚洲无码| 久久青青草原免费视频| 日日噜噜夜夜久久亚洲一区二区| 97chaopenrihan| 色婷婷日韩精品一区二区三区| 激情文学亚洲| 日本性感人妻91| 国产亚洲精品A在线观看下载| 亚洲av国产av综合av卡| 大香蕉av在线| 动漫片子网站3黄| 青青草玖玖爱| 欧美综合自拍| 亚洲精品三区在线观看| 思思热在线观看| 午夜激情床戏激情| 久久女同性恋一二区| 久久久久久免费电影| 东京热双插| 国产91亚洲精品一区二区三区| αⅴ天堂| 欧美亚州手机在线| 色综合99999| 午夜啊啊| 欧美一级特黄淫片在线观看| 天天做天天爱| 亚洲青青草| 91性感在线| 永久免费av无码网站国产app | 综合91网| 五月天亚洲色图| 亚洲精品啪视频| 超91综合网| 怡红院亚洲怡春院av| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 成人线上超碰| 免费久久精品麻豆一区二区av| 夜夜操91744565| 色婷婷日韩精品一区二区三区| 欧美操人视频| 色蜜AV| 亚洲系列欧美| 波多野结衣被操50分钟免费视频| 亚洲天堂区| 日韩中文9| 日韩熟女三十乱伦| 亚洲强奸乱伦影视网| AV天堂丝袜| 久久成人东京热人妻| 综合久久久久久久久91| 成人五月香网在线| 91精品91久久久中77777| 日韩免费看黄片| 久热精品色情| 私人尤物在线精品不卡| 吻戏激情性巴克| 欧美,亚洲,日韩,v,天堂,手机在线观看| 国产精品白领在线观看 | 久久久久久久唑| 亚洲精品啪视频| 91精品丝袜久久久久久无码人妻| 校园春色综合网| 亚洲无码99| 国产欧美日产一区二区三区 - 国产欧美日 | 人人摸.人人色| 97玖玖人妻| 97亚洲在线| 任你艹| 亚洲综合有码| 超碰在线成人| 青青草这里只有精品| 婷婷影院入口| 超碰97日韩| 九九aV| 成人免费不卡在线视频| 色综合1991| 国产树林里野战在线看| 日本道人妻久久久在线不卡色视频| 国产精品一区午夜福利| 久久亚洲天堂| 久久精品小视频| 久久久久久九九九| 96免费视频在线| 三级特黄60分钟播放| 亚洲色图国产另类| 操逼操逼视频操逼| 91啪啪| 麻豆婷婷成人一二三| jazzjazz国产精品麻豆| 色偷综合| 在线播放中文字幕| 翔田千里AV无码秘 三区| 日本97久久久精品| 成人八戒网站| 99久草| 人妻少妇蜜桃视频欧美一区| 大屁股人妻女教师撅着屁股| 国产精品天干天干综合网麻豆 | WWW美腿丝袜香蕉中文| 中文自拍欧美影视| 岛国在线国产| 男人的天堂三级| 99精品久久| 国产91福利小视频在线观看| 啊啊啊啊啊啊啊网址在线观看| 人妻-91porn| 久久伊人影院| 久久久九九九九| 久久五月天婷婷| 日本中文熟女视频| 久久精品成人| 国产农村妇女精品| 一二三卡欧美日韩人妻免费精品| 大香蕉伊人一区在线观看| 在线观看成人性爱免费小视频| 国产精品午夜福利| 久草综合视频| 伊人青青一区成人视频在线观看区| 眼镜人妻101.com| 亚洲综合在线91| 干B视频伊人网| 日本性爱少妇| 亚洲国产精品9999在线观看| 欧美国产精品久久九九| julia国产在线 | 成人av福利在线观看| www.人人摸在线视频| 国产老熟女| 久/久精品99看9| 国产女人高潮嗷嗷嗷叫小说 | 亚洲骚女一区二区三区| 超碰91在线| 日韩国产欧美伦理在线| 日本成人A片网站| 亚洲性天堂| 亚洲综合69| 欧美狠狠操| 91在线页| 青娱乐亚洲热| 97操碰| 日韩在线观看字幕精品| 不卡av在线中文字幕| 九九无码| AV中亚| 蜜臀AV一区二区三区| 欧美日本不卡| 国产女人9999| 狠操91,com| aaa亚无码专区| 天天肏夜夜肏| 视频二区美腿制服人妻欧美| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 91色碰| 男人兔费天堂| 六六久久日韩不卡| 五月天婷婷欧美三区| 99操碰| 欧美日韩999| 国产成人久久久精品免费AV| 日韩久久激情精品| 婬女免费一二三区A片| 91精品人妻电影| 国产又大又硬又长又粗| 免费久久精品麻豆一区二区av| 亚洲一区二区性爱电影| 精品伊人久久久大香线蕉小说| 色哟哟511老熟女| 日韩一级特黄av毛片| 夜夜天天噜狠狠爱2021| 在线强奷到舒服的无码视频| 人人干人人搞人人摸| 国产欧美岛国精品一区| 婷婷色影院| 在线只有精品| 久久久av爱| 成人五月天色网| 亚州综合图片| 91美女视频。| A级在线视频| 亚洲,日韩,欧美,成人播放 | 上床啊啊啊| 欧美日韩在线小说| 久久久精品91八戒| 久久色情| 婷婷综合在线观看| 日本十八禁免费看污网站| 亚洲综合另类小说色区亚洲成av人片在www | 嗯嗯啊在线视频| 好吊色一区| 中文字幕乱偷人妻久久艾草网| 99这里都是精品| 综合网 欧美| 又粗又长又爽在线观看| 狠狠干综合| 天天α片| 欧美乱伦专区| 熟女突然公开看18禁影片| 久久黄黄| 欧洲亚洲综合| 国产操逼网站亚洲一级黄色| 黄片在线免费在线观看| 97色爱| 亚洲自拍青操视频| 一区二区乱码福利| 久久99人妖视频国产| 特污免视频| 校园春色综合香蕉| 日韩性爱啪啪视频| 婷婷操逼| 看看日B真人视频| 日韩操啪| 狠狠五月天| 久久久禁| 性色AV网站| 色欲天天综合网| 久久大精品乱码视频人妻熟女| 亚洲熟女av中文字幕| 操逼国产免费| 99久久综合| 久操视频在线观看| 婷婷五月花| 国产丸一视频| 黄色片,com| 亚洲熟妇图片| 欧美人妻制服| 玖玖大干人妻| 又大又长又粗又爽又黄| 国产美女激情| 极品综合| 成人热久久精品| 久久精品国产Aⅴ| www.色五月| 日本最新1区2区3区| 强奸乱伦AV一天堂网| 精品区9| 91老妇女| 啪啪综合网| av天堂加勒比| 九九性视频| 天美传媒精品久久视频| 国产成人久久久精品免费AV| 日本道日本道中文字幕日本道最新日本道在线观看 | 国产超碰| 91久热| 成人免费福利在线观看| 亚洲图片欧美另类综合免费视频大大香| 高清一区AV无码| 丰满精品人妻少妇久久字幕| 操逼日批| 亚洲美女黄色| 婷婷伊人| 男女啪啪网站免费视频| 国产传媒1234区| 国模私拍一区二区三区神乳| 日韩78m视频| 欧美 日韩 亚洲 春色| 嗯嗯啊啊视频一区二区三区| 天天日B夜夜干B时时操B| 欧美传媒一区| 亚洲天堂热| 啊啊啊啊好爽好舒服一区二区易域| 激情小说五月天| 抽插亚洲无码| 97玖玖超碰| 四虎影视永久在线免费| 2020中文字幕在线| 亚欧精品久久久久久久久久久| 午夜丁香婷婷| 亚洲日韩电影| 69精品人人人人| 操逼啊啊啊91| 成人一二三区| 亚洲另类色图片| 91人妻做a观看视频| 色九九九九九九| 日本 欧美 亚中文字幕| 国产精品永久免费10000| 久久综合av| 韩国黄色片精品久久久 | 久久国语| 老司机午夜精品福利视频一区二区| 欧美性爱中文字幕无线码| 亚洲人码13| 激情小说五月天| 97超碰人人操人人操| 77国产精品| 欧美精品999| 国产高清亚洲日韩一区| 天天综合网~91入口| 99热婷婷| 国产精品黄色三级av| 亚洲一区二区中文字幕| 国产五码丝袜屁眼| 五月天婷婷小说| 一级片在线观看高清无码| 91中出在线| 天天香香欲综合| 婷婷AV一区二区三区| 日本淫乱女一区二区三区视频| 91日产欧美| 国产亚洲一黄| 精品国产www久久| 人人操人人色网| …中文字幕亚洲乱,97人妻无码费视…| 亚洲nv男人的天堂网| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 99re3这里只有精品| 金典av| 中文字幕老熟妇黄色视频| 性影在线视频| 男女做爰猛烈动高潮A片免费应用| 中文字幕一二三av| 久污| 欧美色图 人妻| 99爱久久视频频| 99这里只有精品| 日本国产高清色www视频在线| 国产又黄又粗又猛大片| 老熟女91视频| 久操国产在线| 91精品久久久久| 4tube欧美女厕所| 亚洲综合校园春色| 夜夜综合| 国产日韩人人| 亚洲限制级| 麻豆AV短剧| 国产AV天美| 国产白嫩精品久久| 综合 青草 伊久久 影院 综合| 欧美毛片在线网| 九九亚洲| 99少妇精品视频| 丝袜美腿诱惑亚洲欧美视频在线观看 | 综合网天天| 久久超碰com| 精品在线78| 亚洲丨在线| 午夜亚洲| 亚洲高清综合网| 国产视频第二页| 免费视频97| 青青草中文字幕| 97精| 黄人人操人人操| 欧美一区二区福利在线| 岛国激情视频软件| 一级A片女人高潮叫床| 日韩黄色一区二区三区| 激情视频网址| 熟女人妻av在线资源,黄色的资源| 综合亚洲网| 男人的天堂99| 天天视频黄| 密乳AV免费观看| 久久精品店| 色狠狠综合| 天美麻豆精品视频99| 欧美色图私拍91| 人人操人人射人人干| 色欧美色交综合| 欧美黄业| 亚洲精品国产熟女| 日韩黄色成人性爱| 日韩一999精品| 亚洲成人妻日韩在线| 国产日产欧产美韩系列麻豆免费| 久久内射| 天天懆天天日| 亚洲图片欧美在线视频| 一二三啪啪专区| 91路www| 久草免费在线视频| 日日日日做夜夜夜夜无码| 操逼逼无码| 久久久久久久 九九九九九九九| 四虎国产成人精品免费一女五男| 997色在线| 国产日韩精品suv| 国产精品久久久久久久久AV大片 | 亚洲精品九九九| 操逼片国产| 人人人人人人少妇| 69丨亚洲丨精品丨入口免费播放| 999综合网| 国人欧美精品一区二区| 免费视频在线观看啊啊啊啊啊| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 亚洲日韩精品一区二区| 黄片com.| 91撸色网 玖玖网 欧美| 伊人久久AV诱惑悠悠| 黑人操一区二区| 激情露脸爱| 亚洲国产天堂| 久久久久久99999国产精品| 日韩一级性爱无码| 在线观看一卡二卡| 国产97av| 欧美日韩国产色图在线| 欧美亚洲美少妇一区二区| 伊人操| 激情综合久久| 色欧美色交综合| 思思热在线cao| 屌妞视频久久久久久久| 精品免费视频国产一区| 超碰在线99| 久久激情四射婷婷丁香五月天| 亚洲欧美日韩免费电影| 天天日日日射| 热思思免费视频| 亚洲 综合 欧美| 亚洲欧美在线丝袜| 99热99色| 在线看污网站| 婷婷在线视频| 91人妻熟女| 99免费视频| 久久岛国| 97WW精品| 欧美组图日韩亚洲中文字幕| 九九天堂| 香蕉国产精品麻豆亚洲欧美日韩| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 诱惑网综合| 又黄又爽在线观看视频 | 中文字幕在线日亚洲9| 国产日韩中文字幕欧美| 立川理惠加勒比无码| 久久人妻一区二区三区高清| 精品区国产区一区二区三区| 日韩成人人妻网站| 99色视频| 中文字幕丰满子伦无码专区在线视频最新| 欧亚综合一卡二卡中文字幕| 91在线视频国产网站| 啊啊啊啊啊在线观看网址 | AV中文在线| 94色色电影网| 国产精品久久久蜜臀| 东京热视频网| 久久国产999| 午夜免费福利视频一区| 亚洲综合20p| 91日日| 91精品啪在线观看国产城中村| 99福利社| 九九热九九热| 日韩性爱人人爱人人操| 亚洲骚男同com| 加勒比无码一区二区三区| 日产操逼| 亚洲影视第一页| 一区二区三区精品黑丝白丝酒店对鸡 | 99久久婷婷丁香| 精品国产99999| 不卡九肏| 免费一级毛片在线视频观看| 爱爱动态60秒| 桃色人妻在线视频| 九九热免费视频| 五月丁香六月综合缴清无码| 欧美极品少妇| 91 丝袜在线| 亚洲中文一区二区三区视频| 国产精品白丝| 久久精品成人一区二区三区蜜臀| 亚 欧 美 综合| 天天看天天在线精品| 青青草大香蕉视频| 农村妇女精品一区二区| 99热免费| 日韩人成网站在线播放| 超碰色综合| 亚洲人精品午夜不卡| 中文字幕视频在线观看一区二区| 无色无码| 亚洲天堂五月天国产| 国产国产亚洲一二三久久| 午夜性| 小泽玛利亚一二三| 岛国黄色大片网站| 先锋影音av先锋一区| 91n处女在线观看| 啊啊啊啊啊啊啊啊啊啊在线观看| 亚洲AV小说| 美国一区二区免费视频| 久久国产AⅤ| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 亚洲在线A| 亚洲天堂人人妻| 91色女| 亚洲综合五月天婷婷丁香| 十八禁成人网站在线观看| 性爱网站一区二区| 97精品久久| 精品天堂| 久久欧美激情| 91美女视频直播| 97热视频在线观看| 97超碰免费人人性爱| 国产四虎在线| 曰韩欧美国产传媒麻豆第一区| 久久精品性| 亚洲中文字母在线播放| 国产亚洲中文不卡二区| 午夜福利无毒不卡| 中字幕人妻一区二区三区| 97爱综合| 97超碰超碰| 欧美色涩| 日韩免费a级毛片无码a∨| 美女诱惑久久| 97精品免费视频网站| 91bbbbbb| 蜜臀99久久精品久久久久| 91亚洲图片| 色色九区| 天美传媒精品一区二区| 精品九九| 亚洲一区在线观看欧洲| 亚洲人妻中文在线视频| 91看黄片| www.99中文字幕| 婷婷丁香五月天综合东京热| AV无码久久久精品| 婷婷五月天av| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 欧美—性—交—色| 99av| AⅤ片水多多| 十八禁av无码免费网站APP| 亚欧成人综合影院| www.人人cao| 久久午夜伦| 国产精品小视频一区二区三区| 大香蕉伊人一区在线观看| 人妻出轨一区二区三区| 伊人伊人LD| 91热色| 大香蕉综合网| 日本高清免费一本视频在线观看| 日本免费一级AAA大片器| 国产区性爱在线视频秋霞豆| 激情AV| 欧美性爱一内片一区二区三区| 99啪啪| 夜夜嗨老熟女AV一区二区三区| 色欧美在线| 国产成人91一区二区三区| 中文字幕一区二区三区高清| 亚洲天堂 视频你懂的| 人人妻人人操人人乐| 久草在| 久久这里只| 黄色av网站在线播放| 果冻国产精品麻豆成人av| 懂色AV一区二区三区| 久久久久久9999| 日韩久射综合| 国产日产精品久久快鸭的功能介绍| 欧美特大黄一级片片免费| 黄色大片一区二区密桃丝袜| 91欧美巨乳| 91视频精品| 91|九色|国产熟女| www.高清无码诱惑一区.com | 青青草久草| 综合影视国产无码| 欧美亚洲国产自久久| 亚洲精品97久久中文字幕| 午夜亚洲WWW湿好大| 国产成人无码久久精品| 女生自91网站| 亚洲人天堂| 亚洲无码AV九九九| 综合激情97 | 大香蕉伊人网| 大香蕉九九| 亚洲欧美日韩国产丝袜自拍中文| 精品91日日夜夜超清资源| 国产亚洲日本精品在线| 又摸又舔在线观看网站| 亚洲高清自拍| 精品久热| 欧美九一精品久久久熟妇| 日韩99精品视频综合区| 精品无码一区二区| 青青草一区二区高清无码视频| 一区二区三区黄片免费观看| 国产视频一区二区三区久久亚洲天堂| 久久成人东京热人妻| 色色福利| 日韩操呦呦影院在线观看| 老熟女乱伦片| 台湾佬激情综合| 91精品人妻一品二品三品| 天天做日日做天天欢。| 诱惑人妻欧美一区在线播放| 国产在线综合网| 中文字幕二区日韩天堂| 色爱亚洲| 亚洲日韩一区电影| 久久国产精品m码| 99综合免费视频| 91N综合网| 日本女人操逼| 欧美性高潮在线| 狠狠色婷婷777| 男人的天堂Va| 人妻少妇久久久| 亚洲欧美洲综合| 久久九九99| 草草草草视频| 青青草在线成人视频| 伊人影院日本| 啊啊啊97视频| 欧美色视频在线| 屁股久久久久久久久| 亚洲一区二区三区欧美日韩| 激情文学亚洲| 激情视频网址| 欧美97爱| 18岁禁 茉莉成人久久| 人妻啪| www. 男人天堂成人在线| 日韩人成网站在线播放| 欧美后入式| 性站| AV乱伦专区| 色男人色天堂东京热| 蜜臀操逼黄色视频操的好爽| 91白嫩| 日本精品人妻少妇一区二区| 91av一区二区在线观看| 91精品免费| 六月丁香婷| 熟女乱3伦999| 熟妇国产免费一区| wwwss在线观看| 国产亚洲色停停久久99精品91| 韩国女主播青草在线| 天天做日日做天天欢。| 啊啊啊啊免费视频| 天天综合网91入口| 亚洲AV无码黄色强奸| 干B网| 精品人妻视频一区二区三区蜜桃视频| 人人操人人摸人人看人人干| 综合亚洲网| 日韩久久超碰色| 欧美专区日本专区| 97香蕉网| wuyechaopeng| 亚洲情色五月天| 国产精品一区二区三区,亚洲综合| 国产精品禁久久久精品| 四虎AV无码| 91在线无码精品秘 软件| 天天看天天日| 91精品婷婷国产综合久久| 丰满人妻一区二区三区四| 亚洲第一狼人丝袜美女另类| 日韩精品人妻一区二区| 青青伊人久久| 青娱乐 成人娱乐在线| 激情综合二| 黄色视频高清无码网站| 1204人成网站色www| 国产农村妇女精品1区二区| 日韩精品一区二区三区色欲| 国产精品探花色| 亚洲欧洲综合| 一二视频神马久久传媒| 麻豆乱码久久精| 久久XX| 国产精品视频一区二区三区八戒| 麻豆久久一区二区三区| 偷拍亚洲视频一区二区三区四区| 亚洲欧洲无码97久久精品| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 色色色色日本| 精品综合久久久久久五月天| 大香蕉性欧美| 日韩人妻精品| 一区二区视频你懂的| 日本一区二区电影网站| 99精品久久| 性爱精品一区| 成人精品一区二区91毛片不卡| 超碰2017| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 麻豆这里只有精品| 乱伦av.com| 久久亚洲欧美中文字幕国语 | 日韩久久艹| 日韩一999精品| 天综合网| 人妻加勒比东京热| 日日干日日| 色欲久久综合| 影音先锋中文字幕日本好一区二区| 欧美伊人久久综合网| 性色AV蜜色av色欲av| 91日韩| 国产精品第一页国产大屁股视频免费区 | 嫩草在线视频| 无码免费在线观看黄色片| 人人操人人干xxx| 国产1024在线播放| 一二三区操逼国产91| 淫荡网址| 69天堂| 国产一级高清免费观看| 91美女网站| 久久久96| 人人么人人操| 中文字幕日韩专区精品系列 | 精品国产网站| 国产60区。| 麻豆国产第一| 97就爱干| 97精品视频在线| 日韩欧美三级| 天美传媒AV在线播放| 久久专区| 一级AV性爱| 巨爆乳一区二区爆乳区| 97人人操人人摸人人爱| 激情久久av一区av二区av| 超碰碰碰碰| 偷窥自拍亚洲色图| A啊啊在线观看| 日韩中文9| 91制服丝袜| 国产精品视频内谢女人| 国产中文字幕在线点播| 日逼国产| 日韩精品99999| 东京热一区二区三区四区五区六区| 91久久久视| 高清不卡 中文 人妻| 另类欧美综合| 五月丁香黄色网| 黄在线| 五月天激情婷婷| 亚洲综合影片| 丰满少妇精品一区二区| 丝袜美腿av女优在线| 国产亚洲精品A在线观看下载| 色哟哟511老熟女| 五月丁香| 久久一二三四不卡 | 国产日韩精品无码去免费专区国产| blacked精品一区国产| 在线 制服丝袜中出 人妻| 97超久碰| 97ai亚洲| 91影库| 嗯嗯啊在线视频| 91高潮喷水美女| 天天综合~91| 婷婷丁香五月天综合东京热| 亚洲情色电影网| 九九九九免费视频| 明星性猛交ⅹxxx乱大交| 777奇米影视777四色| 毛片17S| 激情婷婷黑人91| 日本色色视频网站| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 男人的天堂99| 曰韩操B| 久草综合京东| 成人精品久久| 国产欧美一级在线观看| 国产极品999| a啊啊啊啊啊啊啊啊一区二区| 性色av大全| 色蜜AV| 亚洲欧美变态| 中文字幕91页| 91欧美成人色站| 国产久久久久久| 亚洲AV永久无码一区仙野| 中文幕97| 无码一区免费在线不卡| 日本福利社| 久久大香蕉97| 久久精品国产免费观看99| 亚洲自拍一区夜夜操| 日韩成人高清一区二区| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 目产99999久久999| 91精品国产91久久青草| 五月天激情婷婷| 极品人妻少妇综合| 成年人性爱日韩| 欧美在线色| 一本大道不卡一二三区| 国产乱弄免费在线视频。| 日韩欧美亚洲自拍偷拍| 女优视频第10页| 九九热精品| 超碰碰碰碰| 欧美成97爱| 婷婷色婷婷| 青娱乐黄色录像| 丁香五月影院| 欧美亚洲丝袜人妻制服中文99| 婷婷91| 98久久超碰| 日韩熟妇二区| 热热色中文无码| 激情五月激情综合网| 91性感在线| 999日韩中文精品观看视频。| 人妻欧美| 亚洲情色五月天 | 国产一级舔足在线观看| 影音综合网| 欧美日韩黄片精品在线| 久久香蕉超碰97国产精品 | 9久久美女首页| 天天操夜夜嗨| 欧美性视频二区三区| 日韩免费看黄片| 蜜臀Av一区二区三区| 亚洲无码99| 五月婷亚洲精品天堂| 欧洲乱码一区二区| 国产99精品一区二区三区免费| 欧美天堂亚洲电影院一区在线播放| 国产AV无码AV| 国内外激情在线| 天堂蜜桃无码视频一区二区| 毛片久久| 亚州男人的天堂| 亚洲色欲天天人妻无码系列专区| 亚洲性高潮| 九一综合精品视品av| 少妇无码av专区线| 日本高清视频在线观看黄已三辽| 超碰人人妻| 99久久精品欧美国产| 91碰碰| 大香蕉操久久| 国产成人自拍视频视频| 在线观看一级α片刺激高潮视频| 91天天c| 欧美在线干| 2018天天日天天日| 欧美日韩97在线| 中文字幕老熟妇黄色视频| 日本熟女免费視颖| 视频二区美腿制服人妻欧美| av在线人气| 亚洲欧美国产成人综合不卡| 亚洲色图欧美| 老熟妇一区二区三区啪啪| 精品人妻伦一二三区久久| 欧美偷拍区| 青青草好吊色| 动漫av中文| av天堂影视中文在字幕在线中文| 激情五月综合开心五月| 亚洲猛交| 日日日骚女人精品| 私色综合网| 操我无码| 日本人妻伦在线中文字幕| 午夜操一视频一区| 十八禁黄色成人网站观看| 婷婷六月色| 国产精品极品美女视频| 欧美天天综合网| 国产日产欧产美韩系列麻豆免费| 日韩AV中文字幕电影| 免费视频a级毛片免费视频| 久久久久亚洲三级电影| 色爱亚洲| KK色在线影院| 中文字幕综合人妻| 欧美三级一级| 欧美日韩成人在线| 国产成人bd在线观看| 日韩三A大片在线观看| 欧美少妇色图| 日本三级精品| 啊啊啊啊,啊啊好多水| 色情亚洲日本成人| 五月天丁香欧洲日韩| 五月婷婷无码| 久久久久国产一区二| 天天做日日做| 国产精品露脸在线观看| 精品免费一区| 蜜臀AV午夜精品久| 亚洲欧美校园| 熟妇一区,二区,三区。| 大香蕉之青青草原| a人欧美综合天堂麻豆| 日韩97视频!在线| 大奶啊啊好爽| 六月婷婷激情| 超碰99在线观看| 日本污ww视频网站| 中文字幕精品区先锋资源| 国内毛片婷婷六月色| 高清无码一区二区三区| 免费看黄片现成| 国产v片在线免费观看| 富女玩鸭子一级毛片| 日韩无码极品| 亚洲中字幕日本一区二区三区| 久久久久国产精品久久久| 亚洲黄色| 丁香九月婷婷| 在线视频97| 日韩成年人性爱视频| 午夜小电影在线插入淫高潮| 亚洲综合欧美| 亚洲一级黄色毛片| 中文AV制服乱伦| 大香蕉免费3| 精品中文字幕第一页| 久久內射| 欧美在线55555| 久久久久无码一妻区| 伊人午夜福利视频| 哈哈操 大香蕉| 青草精品视频-日本久久久久网站| 欧美色图亚洲色| 欧美组图日韩亚洲中文字幕|