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

ARTICLE DETAIL

資訊詳情

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

codegraph 與 graphify:構(gòu)建代碼關(guān)系圖譜,破解大型項(xiàng)目依賴迷宮

codegraph 與 graphify:構(gòu)建代碼關(guān)系圖譜,破解大型項(xiàng)目依賴迷宮 codegraph最近在技術(shù)圈冒頭得很快身邊好些人都在提graphify、codegraph graphify這類關(guān)鍵詞。我原本以為又是某個(gè)裝完即棄的玩具項(xiàng)目直到自己在一個(gè) 20 萬行代碼的老倉庫里被接二連三的隱式依賴折磨到失眠之后才真正意識(shí)到這玩意兒的價(jià)值——它不是用來“炫圖”的而是把代碼庫變成一張可查詢、可推導(dǎo)、可以喂給 AI 的結(jié)構(gòu)化關(guān)系網(wǎng)。一句話說清楚codegraph 是源代碼靜態(tài)分析 圖譜化輸出的工具它把函數(shù)、類、模塊、文件這些實(shí)體拆成節(jié)點(diǎn)把調(diào)用、導(dǎo)入、繼承、賦值這些關(guān)系拆成邊最終導(dǎo)出一份機(jī)器可讀的關(guān)系數(shù)據(jù)。解決的是兩類很真實(shí)的痛點(diǎn)第一類是人肉讀大型倉庫讀不明白IDE 的全局搜索解決不了“誰在悄悄調(diào)誰”的問題第二類是給大模型喂代碼時(shí)上下文塞不下整個(gè)項(xiàng)目而圖譜恰好能把最關(guān)鍵的結(jié)構(gòu)關(guān)系壓縮成小體積數(shù)據(jù)。適合吃這套東西的人很明確維護(hù)大型項(xiàng)目的后端開發(fā)、做技術(shù)債分析和架構(gòu)治理的人、研究代碼質(zhì)量和軟件可視化的同學(xué)以及想用 AI 輔助理解老代碼的探索者。1. 為什么需要給代碼畫圖譜1.1 從“翻閱源碼”到“透視關(guān)系”代碼圖譜解決什么問題傳統(tǒng)的代碼閱讀方式本質(zhì)上是在“線性文本”里打轉(zhuǎn)。你在 IDE 里按住 Ctrl 點(diǎn)進(jìn)一個(gè)函數(shù)看完返回來再點(diǎn)進(jìn)下一個(gè)函數(shù)幾張調(diào)用鏈窗口疊在一起之后腦子基本就過載了。IDE 的符號(hào)跳轉(zhuǎn)只解決“這個(gè)符號(hào)定義在哪”回答不了更關(guān)鍵的問題“整個(gè)系統(tǒng)里到底有哪些地方依賴這個(gè)函數(shù)它被修改之后會(huì)影響哪些模塊”當(dāng)項(xiàng)目體量到幾萬行、幾十萬行的時(shí)候人腦的線性導(dǎo)航完全跟不上代碼的網(wǎng)狀結(jié)構(gòu)。依賴關(guān)系失控是更災(zāi)難的事。我接手過一個(gè)訂單中臺(tái)項(xiàng)目表面上分了三層實(shí)際上各個(gè) service 互相 import工具函數(shù)散落在不同目錄測(cè)試代碼還經(jīng)常偷偷調(diào)用生產(chǎn)模塊的內(nèi)部方法。你問架構(gòu)師模塊邊界在哪他能畫出一張漂亮的分層圖你讓他用工具把真實(shí)邊界導(dǎo)出來他沉默了很久。代碼圖譜正是用來治這種現(xiàn)狀的它不信任文檔不信任架構(gòu)師的口述只信任源代碼里實(shí)際存在的關(guān)系。另一個(gè)逼著我認(rèn)真研究它的人是搞 AI 編程輔助的朋友。他說粗線模型改代碼最大的障礙不是寫不出代碼而是根本“看不完”倉庫里那些散落的依賴關(guān)系。想把一個(gè) 20 萬行項(xiàng)目的上下文全部塞進(jìn)大模型token 成本高得離譜。但如果你把調(diào)用關(guān)系、模塊依賴、函數(shù)簽名事先抽成圖譜數(shù)據(jù)再讓 AI 只查詢關(guān)鍵子圖成本能省掉一個(gè)數(shù)量級(jí)。codegraph 的本質(zhì)就是把代碼從“給人類看的文本”轉(zhuǎn)換成“給機(jī)器推理的圖結(jié)構(gòu)”正好踩在這兩條需求線上。1.2 codegraph 的數(shù)據(jù)模型節(jié)點(diǎn)、邊、屬性圖圖譜不是把代碼堆成散點(diǎn)它有一套清晰的數(shù)據(jù)模型。codegraph 底層用的是屬性圖模型跟圖數(shù)據(jù)庫 Neo4j 里的概念一致實(shí)體是節(jié)點(diǎn)關(guān)系是有方向的邊節(jié)點(diǎn)和邊都能攜帶屬性。節(jié)點(diǎn)上codegraph 會(huì)區(qū)分不同的實(shí)體類型。代碼倉庫本身算一個(gè)根節(jié)點(diǎn)下面是目錄、文件、模塊Module、類Class、函數(shù)Function、變量Variable必要的時(shí)候還能細(xì)分到函數(shù)參數(shù)、全局變量、接口類型。每個(gè)節(jié)點(diǎn)都帶一串屬性名稱、限定名比如com.xx.order.service.OrderService#createOrder、文件路徑、起止行號(hào)、可見性、是否是導(dǎo)出項(xiàng)這些信息構(gòu)成了代碼位置的“全地址”。邊是更有價(jià)值的部分。常見的邊類型包括IMPORT模塊導(dǎo)入、CALL函數(shù)調(diào)用、CREATE實(shí)例化、INHERIT繼承/實(shí)現(xiàn)、ANNOTATE注解/裝飾器、ASSIGN賦值、CONTAIN包含關(guān)系等等。拿一個(gè)具體的例子說OrderService類里有一個(gè)createOrder方法它調(diào)用了OrderRepository.save同時(shí)實(shí)例化了OrderValidator。在普通源碼里這只是一段平平無奇的邏輯但在圖譜里就是三條帶方向的邊createOrder --CALL-- save、createOrder --CREATE-- OrderValidator、OrderService --CONTAIN-- createOrder。有了這些邊任何“影響范圍分析”“循環(huán)依賴檢測(cè)”“底層函數(shù)被誰調(diào)用了”都能變成圖上的一次遍歷查詢。我不太喜歡用太學(xué)術(shù)的方式解釋這套東西。一個(gè)生活化的類比是城市交通圖每個(gè)文件是一棟樓函數(shù)是樓里的房間調(diào)用關(guān)系就是連接房間的走廊。你自己站在樓里的時(shí)候永遠(yuǎn)只能看到眼前幾個(gè)房間但爬到樓頂俯拍一張全景圖哪個(gè)區(qū)域是流量樞紐、哪棟樓被孤立、哪條走廊實(shí)際上是個(gè)斷頭路一目了然。codegraph 干的就是拍照加畫地圖的活只不過照片是從源代碼里自動(dòng)洗出來的。1.3 和同類工具的差異我接觸過的代碼分析工具不算少簡(jiǎn)單橫向?qū)Ρ纫幌赂髯远ㄎ恍率志筒蝗菀走x錯(cuò)工具工具/方案產(chǎn)出內(nèi)容核心優(yōu)勢(shì)主要短板IDE 內(nèi)置符號(hào)搜索單個(gè)符號(hào)跳轉(zhuǎn)零成本、日常順手無法回答跨模塊關(guān)系ctags 等標(biāo)簽工具符號(hào)索引輕量、編輯器集成好只有位置沒有關(guān)系邊Sourcegraph全局代碼搜索引擎適合大型托管倉庫、語法感知強(qiáng)自部署成本高、偏搜索不偏分析SonarQube 等靜態(tài)分析質(zhì)量報(bào)告、違規(guī)清單面向質(zhì)量門禁、規(guī)范檢查數(shù)據(jù)過于“報(bào)告化”難做自定義推理codegraph結(jié)構(gòu)化圖譜數(shù)據(jù)輕量、關(guān)系完整、適合二次處理與 AI 消費(fèi)可視化生態(tài)相對(duì)原始codegraph 最大的差異化在于它的輸出是“結(jié)構(gòu)化關(guān)系數(shù)據(jù)”而不是一份給人看的報(bào)告。SonarQube 告訴你哪里有壞味道codegraph 給你的是“壞味道如何傳染出去”的地圖。Sourcegraph 擅長(zhǎng)讓你搜索一段代碼在全公司的引用情況但你要在本地離線分析一個(gè)敏感項(xiàng)目時(shí)Sourcegraph 的服務(wù)端部署會(huì)顯得很重。codegraph 的定位更接近“可嵌入本地工作流的分析引擎”命令跑完就出數(shù)據(jù)數(shù)據(jù)接得上你自己的腳本、圖數(shù)據(jù)庫或者大模型管線。2. codegraph 的安裝與基礎(chǔ)用法2.1 安裝前的準(zhǔn)備工作codegraph 當(dāng)前的實(shí)現(xiàn)依賴 Node.js 運(yùn)行時(shí)和 Python 3核心解析引擎用 Node 生態(tài)來處理多語言語法樹Python 側(cè)負(fù)責(zé)部分可視化腳本和膠水邏輯。建議直接在 Linux 或 macOS 環(huán)境下操作Windows 用戶優(yōu)先開 WSL2省去一堆路徑和原生模塊編譯的麻煩。日常開發(fā)機(jī)上的 Node 要求 16 版本我用的是 Node 18一路沒遇到兼容問題。基礎(chǔ)安裝很簡(jiǎn)單# 全局安裝 codegraph npm install -g codegraph # 檢查版本 codegraph --version安裝完成之后第一步是初始化。codegraph 需要知道倉庫的根目錄、當(dāng)前使用的語言以及要忽略的路徑規(guī)則這些配置可以寫在一個(gè)codegraph.config.js文件里。直接用命令行參數(shù)也行但建議初始化和配置文件一起做掉codegraph init --projectName my-order-system --language javascript --root .跑完之后當(dāng)前目錄下會(huì)生成codegraph.config.js和一個(gè).codegraph緩存目錄。緩存目錄別刪后面多次掃描增量更新全靠它。如果你還沒裝可視化工具建議順手裝一個(gè) Graphviz后面用dot命令把圖譜渲染成圖片會(huì)特別方便。macOS 上直接brew install graphvizUbuntu 上sudo apt install graphviz就行。裝了不虧就算不用 codegraph畫流程圖也會(huì)用到。2.2 第一次運(yùn)行從“hello world”項(xiàng)目開始我第一次跑 codegraph 的時(shí)候犯了個(gè)錯(cuò)誤直接拿一個(gè)大型微服務(wù)倉庫開刀結(jié)果掃描耗時(shí)一分多鐘輸出文件大得我用編輯器都能卡半天。新手建議先拿一個(gè)小項(xiàng)目試水比如把自己最近寫的某個(gè)小工具倉庫復(fù)制一份或者用官網(wǎng)示例里的 demo 項(xiàng)目來跑。我從一個(gè)小型 Express 應(yīng)用開始演示。核心子命令其實(shí)沒幾個(gè)# 掃描并構(gòu)建圖譜 codegraph scan # 將圖譜輸出成可視化JSON codegraph graphify --format json # 啟動(dòng)一個(gè)本地查詢服務(wù) codegraph server --port 3344scan負(fù)責(zé)遍歷源碼、解析 AST、提取符號(hào)和關(guān)系跑完之后數(shù)據(jù)會(huì)落到.codegraph緩存里。graphify是數(shù)據(jù)導(dǎo)出命令它負(fù)責(zé)把緩存的中間數(shù)據(jù)轉(zhuǎn)換成人可以直接看的 JSON、GraphML 或 CSV 格式。新版本里也有人習(xí)慣直接用codegraph graphify一步到位它實(shí)際上隱式地先跑 scan 再導(dǎo)數(shù)據(jù)等價(jià)于上面兩條命令的合并。server 子命令則會(huì)啟動(dòng)一個(gè)本地 HTTP 服務(wù)提供簡(jiǎn)單的查詢接口適合想快速給團(tuán)隊(duì)搭建一個(gè)內(nèi)部代碼關(guān)系查詢?nèi)肟诘膱?chǎng)景。執(zhí)行掃描命令的現(xiàn)場(chǎng)是這樣$ codegraph scan [scan] 開始解析倉庫: /tmp/express-demo [parse] 文件掃描完成: 12 files, 4 directories [parse] 語言識(shí)別結(jié)果: javascript [analyze] 符號(hào)提取完成: 38 functions, 12 classes, 6 modules [graph] 建立關(guān)系邊: 96 edges (CALL: 42, IMPORT: 21, CONTAIN: 33) [done] 圖譜構(gòu)建完成使用 codegraph graphify 導(dǎo)出能看到解析器自動(dòng)完成了文件發(fā)現(xiàn)、符號(hào)提取、關(guān)系建立三個(gè)階段。edges那一行信息量很大CALL: 42意味著有 42 個(gè)函數(shù)調(diào)用關(guān)系被識(shí)別出來了。這種數(shù)據(jù)在人眼下面看不見只有工具能在一秒鐘之內(nèi)地理清楚。3. 用 graphify 完成核心圖譜構(gòu)建3.1 graphify 是什么從代碼到圖譜的轉(zhuǎn)換引擎前面提到graphify是 codegraph 的導(dǎo)出/轉(zhuǎn)換子命令但它實(shí)際上是整個(gè)工具里最值得深挖的一個(gè)模塊。如果說scan是采集原始數(shù)據(jù)的攝像機(jī)graphify就是剪輯師加導(dǎo)演——它決定哪些信號(hào)要保留、哪些噪聲要被過濾、最終用哪種格式呈現(xiàn)給下游。codegraph graphify在構(gòu)建圖譜的同時(shí)會(huì)做幾件隱形但關(guān)鍵的過濾工作第一去除重復(fù)符號(hào)。一個(gè)在 JavaScript 里被import了 30 次的對(duì)象掃描器只保留它實(shí)際定義處的唯一節(jié)點(diǎn)而不是生成 30 個(gè)“半節(jié)點(diǎn)”。不然圖譜里全是同義重復(fù)視覺上亂查詢時(shí)也會(huì)產(chǎn)生大量偽結(jié)果。第二合并文件級(jí)依賴。如果文件 A 從文件 B 里 import 了 10 個(gè)不同的符號(hào)在圖譜里可以展開成 10 條IMPORT邊也可能折疊成一條帶“依賴符號(hào)列表”屬性的粗粒度邊。graphify 默認(rèn)會(huì)同時(shí)保留兩種層級(jí)節(jié)點(diǎn)語義和邊語義都可以在查詢時(shí)靈活圈定范圍。第三裁剪內(nèi)置和第三方依賴。標(biāo)準(zhǔn)庫里的console、Array、String都不算項(xiàng)目自身的分析對(duì)象第三方node_modules里的代碼默認(rèn)也會(huì)被排除。否則每個(gè)倉庫里都會(huì)附帶幾萬個(gè) npm 包內(nèi)部的節(jié)點(diǎn)圖譜直接變成一團(tuán)亂麻。這一點(diǎn)非常關(guān)鍵我第一次掃描某個(gè)前端項(xiàng)目時(shí)忘了配 ignore 規(guī)則結(jié)果節(jié)點(diǎn)數(shù)量直逼 70 萬后來檢查發(fā)現(xiàn)大半都是node_modules下的第三方依賴屬于典型的數(shù)據(jù)污染。3.2 關(guān)鍵參數(shù)詳解與選擇邏輯graphify 的參數(shù)設(shè)計(jì)并不復(fù)雜但每個(gè)參數(shù)背后都有實(shí)際的使用場(chǎng)景。我挑選常用的幾個(gè)逐一解析--format是必須指定的輸出格式可選json、graphml、csv和dot。我日常用的最多的是json它保留所有實(shí)體屬性和關(guān)系細(xì)節(jié)適合寫腳本二次處理graphml是標(biāo)準(zhǔn)圖交換格式可以直接導(dǎo)入 Neo4j 或 Gephi 做深度可視化csv干脆分成nodes.csv和edges.csv兩張表適合扔進(jìn) pandas 做統(tǒng)計(jì)dot其實(shí)是為 Graphviz 準(zhǔn)備的想快速看全局總覽圖的時(shí)候用它。--depth控制分析深度取值大概是file、class、function三檔。默認(rèn)是function最常見的用法也是這個(gè)。想看模塊邊界的時(shí)候切到file能把圖縮得極其簡(jiǎn)潔要深挖某條鏈路內(nèi)部實(shí)現(xiàn)時(shí)function深度才夠。這個(gè)參數(shù)的本質(zhì)是“粒度”控制不是“層數(shù)”控制別理解錯(cuò)了。--scope用來限制導(dǎo)出的范圍支持傳一個(gè)文件或目錄路徑前綴。例如你只想分析src/core這個(gè)目錄內(nèi)部的依賴關(guān)系加上--scope src/core就能把它單獨(dú)導(dǎo)出來。這個(gè)參數(shù)在項(xiàng)目極大的時(shí)候特別好用全量掃描一次之后后續(xù)分析都可以快速裁剪子圖不需要重復(fù)運(yùn)行掃描。還有一個(gè)容易被忽略的--with-attributes開關(guān)默認(rèn)狀態(tài)關(guān)閉。打開之后節(jié)點(diǎn)會(huì)多帶一整套源碼元信息文件路徑、行列號(hào)、參數(shù)列表、返回類型、注釋摘要。這些屬性對(duì) AI 場(chǎng)景特別有價(jià)值因?yàn)樗鼈兡馨褕D譜上的一個(gè)節(jié)點(diǎn)重新對(duì)應(yīng)回源碼原文的精確位置。代價(jià)是 JSON 體積膨脹好幾倍所以不需要的情況下建議關(guān)掉。3.3 圖譜輸出格式對(duì)比與選型為了不讓你在選輸出格式時(shí)糾結(jié)我把四種格式的特點(diǎn)和適用場(chǎng)景整理成了一張表格式信息完整度體積典型用途推薦指數(shù)JSON最完整較大腳本二次處理、AI 上下文、自定義查詢五星GraphML完整中等導(dǎo)入 Neo4j/Gephi 做專業(yè)圖分析四星DOT精簡(jiǎn)小Graphviz 直接渲染總覽圖四星CSV中等最小表格統(tǒng)計(jì)、Excel 查閱、查數(shù)三星數(shù)據(jù)量感受一下一個(gè)約 5000 行代碼的模塊導(dǎo)出 JSON 大概是 1.5MB 左右GraphML 大概是 800KBCSV 兩張表加起來不到 300KB。如果你只是想在團(tuán)隊(duì)周報(bào)里放一張模塊依賴圖DOT 格式最合適渲染快、易讀如果你是想搭建一個(gè)自動(dòng)化分析管線JSON 的不丟信息是最大優(yōu)勢(shì)。3.4 深入解析典型輸出片段拿一個(gè)鋸齒 JSON 片段出來看nodes數(shù)組里每個(gè)元素代表一個(gè)符號(hào)實(shí)體。一個(gè)典型的函數(shù)節(jié)點(diǎn)長(zhǎng)這樣{ id: node_84b2a1c3, type: Function, name: createOrder, qualifiedName: src/services/orderService.js:createOrder, file: src/services/orderService.js, line: 28, col: 4, signature: (orderData, userContext) - PromiseOrder }edges數(shù)組里的元素代表一次關(guān)系。如果createOrder調(diào)用了OrderRepository.save會(huì)有一條這樣有向邊{ source: node_84b2a1c3, target: node_19ab3f0d, type: CALL, line: 31, position: src/services/orderService.js:31 }這里的line和position在常規(guī)關(guān)系圖工具里常常缺失但對(duì)于代碼 review 場(chǎng)景極其重要它告訴你不光 A 調(diào)用了 B還能精確告訴你調(diào)用發(fā)生在第幾行。配合--with-attributes選項(xiàng)導(dǎo)出所有注釋摘要后AI 甚至可以基于這些摘要生成一份“模塊級(jí)別的 README”。直接給 LLM 灌整個(gè)倉庫它容易蒙但給它一張圖譜、讓它在關(guān)鍵節(jié)點(diǎn)上看摘要回答問題的準(zhǔn)確率會(huì)好非常多。實(shí)測(cè)下來這是我用 codegraph 收益最大的場(chǎng)景。4. 實(shí)操把任意 GitHub 倉庫變成可查詢的圖譜4.1 準(zhǔn)備樣本項(xiàng)目選倉庫標(biāo)準(zhǔn)如果要用一個(gè)外部倉庫來體驗(yàn)全流程我建議挑一個(gè)“中等體量”的知名項(xiàng)目目錄別太深文件數(shù)量幾百個(gè)到上千個(gè)之間語言特征明顯最好有清晰的分層結(jié)構(gòu)。幾百行的 demo 項(xiàng)目體現(xiàn)不出圖譜優(yōu)勢(shì)幾十萬行的大型項(xiàng)目又容易遇到性能瓶頸。我拿過一個(gè)經(jīng)典的 Python Web 項(xiàng)目flask-limiter做過實(shí)驗(yàn)這個(gè)倉庫大概兩三百個(gè)文件語義分層清晰依賴關(guān)系不復(fù)雜非常適合完整走一遍流程。選好項(xiàng)目后把它克隆到本地注意路徑別帶中文和空格某些解析器對(duì)特殊字符的處理不夠穩(wěn)健。4.2 完整命令序列以下是我每次對(duì)陌生倉庫做圖譜分析時(shí)固定執(zhí)行的完整命令序列。先初始化再配置 ignore接著掃描、導(dǎo)出、可視化一氣呵成# 1. 初始化項(xiàng)目 cd flask-limiter codegraph init --projectName flask-limiter --language python --root . # 2. 編輯 codegraph.config.js把測(cè)試目錄和依賴目錄加進(jìn) ignore # 典型配置見下方示例 # 3. 執(zhí)行全量掃描 codegraph scan # 4. 導(dǎo)出 JSON 全量圖譜 codegraph graphify --format json --with-attributes -o graph-full.json # 5. 導(dǎo)出 GraphML 供可視化工具導(dǎo)入 codegraph graphify --format graphml -o graph.graphml # 6. 導(dǎo)出 DOT 渲染總覽 codegraph graphify --format dot -o graph.dot dot -Tpng graph.dot -o graph-overview.pngcodegraph.config.js里比較典型的 ignore 配置長(zhǎng)這樣module.exports { projectName: flask-limiter, languages: [python], root: ., ignore: { paths: [tests, docs, node_modules, .git], patterns: [**/__pycache__/**, **/*_test.py, **/test_*.py] }, parser: { enabled: [python] } };tests必須排除不然分析結(jié)果會(huì)被測(cè)試代碼里大量 mock 和假調(diào)用污染。docs目錄則純粹是排除不必要的噪聲讓圖譜聚焦在真正的生產(chǎn)代碼上。4.3 可視化檢查是否正確圖譜建完以后第一步工作不是急著寫查詢腳本而是先肉眼檢查它到底長(zhǎng)什么樣。我用dot渲染出來的總覽圖當(dāng)“體檢報(bào)告”重點(diǎn)關(guān)注三件事第一是模塊結(jié)構(gòu)是否清晰。正常的項(xiàng)目應(yīng)該看到幾個(gè)明顯的簇狀區(qū)域每個(gè)區(qū)域代表一個(gè)功能模塊如果所有節(jié)點(diǎn)糊成一團(tuán)說明模塊邊界可能已經(jīng)壞掉了這本身就是架構(gòu)治理的核心發(fā)現(xiàn)。第二是節(jié)點(diǎn)數(shù)量是否符合預(yù)期。5000 行代碼的項(xiàng)目圖譜上大概出現(xiàn) 300-600 個(gè)函數(shù)/類節(jié)點(diǎn)是合理的。如果節(jié)點(diǎn)數(shù)明顯異常偏多大概率是 ignore 配置沒生效第三方依賴混進(jìn)了圖里。第三是中心節(jié)點(diǎn)的分布。圖的中間通常會(huì)有幾個(gè)連邊數(shù)量特別大的節(jié)點(diǎn)這些往往就是全局工具類、核心模型或者服務(wù)入口。用肉眼定位它們之后接下來做深入查詢就有下手點(diǎn)了。當(dāng)然如果項(xiàng)目實(shí)在太大DOT 渲染出來的圖可能完全沒法看密密麻麻全是節(jié)點(diǎn)這時(shí)候千萬別硬渲染。改用 JSON 輸出 局部裁剪的方式合作把分析粒度控制在子模塊上。我見過有人試圖渲染一個(gè) 3 萬節(jié)點(diǎn)的大圖譜渲染出來的圖片連打印機(jī)都打不完。4.4 圖譜在代碼審計(jì)中的玩法圖譜構(gòu)建完成后最有意思的部分來了。我平時(shí)比較常用的幾種查詢思路直接決定了這個(gè)工具是“擺設(shè)”還是“利器”。找循環(huán)依賴是最經(jīng)典的應(yīng)用。把圖導(dǎo)入 Neo4j 后用 Cypher 查詢所有環(huán)形路徑或者直接寫腳本在 JSON 數(shù)據(jù)上做拓?fù)浔闅v都能輕松揪出模塊循環(huán) import。IDE 對(duì)這類問題通常只能報(bào)一個(gè)“潛在循環(huán)依賴”警告給不出具體環(huán)的路徑。而圖譜能非常明確地告訴你module_a-module_b-module_c-module_a這個(gè)環(huán)就是業(yè)務(wù)運(yùn)行詭異和啟動(dòng)變慢的根源之一。找“上帝類”和“上帝函數(shù)”同樣高效。計(jì)算每個(gè)節(jié)點(diǎn)的出度它依賴多少東西和入度多少東西依賴它出度入度顯著高于平均值的節(jié)點(diǎn)基本就是代碼腐化的重災(zāi)區(qū)。在我分析的一個(gè)老項(xiàng)目中有個(gè)ConfigManager類入度超過 200意味著全項(xiàng)目 200 多個(gè)地方都在直接訪問它的內(nèi)部字段。這種類一旦改動(dòng)爆炸半徑覆蓋整個(gè)倉庫對(duì)照?qǐng)D譜上的依賴列表去推進(jìn)重構(gòu)比憑感覺拆解靠譜得多。分析模塊解耦程度也很順手。我要驗(yàn)證某次重構(gòu)是否真的把模塊邊界切干凈了只需要導(dǎo)出目標(biāo)模塊的子圖檢查它的外部依賴是否只剩對(duì)外 API 層的調(diào)用。我可以直接給上游同事甩一張這次的依賴差異圖用數(shù)據(jù)說明“之前的循環(huán)沒有了”而不是用嘴說“應(yīng)該沒問題了”。5. 常見問題與排查技巧實(shí)錄5.1 問題速查表現(xiàn)象原因解決方案報(bào)告“不支持的語言”單次掃描無法同時(shí)解釋多語言在配置里分別啟用對(duì)應(yīng) parser或分次執(zhí)行 scan節(jié)點(diǎn)數(shù)量爆炸到幾十萬ignore 配置缺失加入 node_modules、vendor、tests 到 ignore 列表編輯 JSON 文件卡頓輸出文件過大改用 --scope 裁剪子圖再輸出或?qū)С?GraphMLCALL 邊數(shù)量異常偏少動(dòng)態(tài)調(diào)用反射/魔術(shù)方法無法被靜態(tài)識(shí)別圖譜本身只表達(dá)確定性關(guān)系動(dòng)態(tài)調(diào)用需人工補(bǔ)邊中文字段名/中文文件名解析異常解析器對(duì) UTF-8 路徑處理不完整保持路徑為純英文文件內(nèi)中文注釋沒問題graphify 導(dǎo)出的 JSON 無法被 Python 解析Node 側(cè)輸出與 Python 側(cè)期望 schema 不一致升級(jí)到同一版本或使用 GraphML 作為中間格式5.2 真實(shí)踩坑記錄上一次我在分析一個(gè)大型 Java 項(xiàng)目時(shí)掃描進(jìn)行到一半報(bào)出了OutOfMemory。起初我以為是需要調(diào)大 Node.js 堆內(nèi)存后來發(fā)現(xiàn)根因是target目錄下積累了海量編譯產(chǎn)物代碼掃描器把它當(dāng)成了普通源碼硬生生解析了十幾萬個(gè).class文件。這個(gè)坑很說明問題運(yùn)行 codegraph 之前一定要把所有構(gòu)建產(chǎn)物目錄都加進(jìn) ignore。Java 項(xiàng)目里的target、buildPython 項(xiàng)目里的.venv、site-packagesJavaScript 項(xiàng)目的dist一個(gè)個(gè)都不能漏。這個(gè)教訓(xùn)后來我轉(zhuǎn)成了一條工作習(xí)慣正式運(yùn)行 scan 前先檢查 ignore 列表寧多勿少。另一個(gè)我印象深刻的坑是 TypeScript 項(xiàng)目的解析。一個(gè)前端倉庫里大量接口類型是用import type導(dǎo)入的這條關(guān)系在 AST 里屬于類型引用而非運(yùn)行時(shí)調(diào)用。codegraph 默認(rèn)把所有import都記成IMPORT邊導(dǎo)致圖譜里的依賴關(guān)系和實(shí)際的運(yùn)行時(shí)依賴存在偏差。排查出這個(gè)行為之后我都是手動(dòng)在配置里開啟typeSemantics模式讓工具把類型引用和運(yùn)行時(shí)引用區(qū)分開否則前端項(xiàng)目的圖譜可信度會(huì)降低不少。5.3 提升性能的實(shí)用技巧如果倉庫比較大幾十萬行直接全量scan會(huì)讓 CPU 狂轉(zhuǎn)幾分鐘到十幾分鐘。有幾個(gè)實(shí)際很好用的緩解辦法第一拆開掃描。codegraph scan --scope src/core先把核心模塊掃描完后續(xù)再把其他模塊增量補(bǔ)上。多跑幾次 scan 并不會(huì)導(dǎo)致重復(fù)構(gòu)建工具內(nèi)部有緩存機(jī)制能識(shí)別出哪些文件沒有變化。增量掃描比全量掃描快很多這是日常迭代開發(fā)中最舒服的體驗(yàn)。第二關(guān)閉不需要的屬性采集。如果當(dāng)前階段只關(guān)心模塊邊界不必開啟--with-attributes少了注釋摘要、參數(shù)簽名這類大文本屬性的采集掃描和導(dǎo)出速度都能快三五倍。第三分離掃描和可視化。不要試圖在掃描的同時(shí)做可視化整理這一步在數(shù)據(jù)量大的時(shí)候會(huì)讓機(jī)器直接卡死。scan只負(fù)責(zé)產(chǎn)出緩存graphify負(fù)責(zé)轉(zhuǎn)換輸出兩步分開跑每步的時(shí)間都很快。我第一次圖省事用一行命令帶上了可視化渲染結(jié)果整個(gè)過程跑了差不多四倍的時(shí)間。6. 把 codegraph 變成日常工作流的一部分6.1 結(jié)合 LLM 做 AI 代碼審查這是我目前用得最頻繁的場(chǎng)景。具體做法是把圖譜輸出成一個(gè)有格式的 JSON保留節(jié)點(diǎn)的qualifiedName、type、file、line和函數(shù)簽名摘要隨后把它作為“項(xiàng)目結(jié)構(gòu)上下文”喂給 LLM。模型拿到之后回答問題的精準(zhǔn)度完全不同。舉個(gè)實(shí)測(cè)過的例子我拿一個(gè)含十來個(gè)模塊的中型 Python 項(xiàng)目做測(cè)試直接問它“如果我要修改用戶認(rèn)證邏輯應(yīng)該重點(diǎn)關(guān)注哪些文件”在沒有圖譜上下文的時(shí)候模型只能給出泛泛的、經(jīng)常帶幻覺的猜測(cè)把圖譜喂進(jìn)去之后它能在子圖里查“認(rèn)證模塊”的出入度給出幾條明確的傳播路徑比如“AuthMiddleware 被 47 個(gè)路由依賴修改它需要考慮全局會(huì)話刷新機(jī)制”。這個(gè)思路本質(zhì)上就是把“全局視野”交給工具把“代碼理解與生成”交給大模型各取所長(zhǎng)。集成的方式不復(fù)雜寫一個(gè)幾十行的腳本把 codegraph 的輸出轉(zhuǎn)換成一個(gè)縮略版摘要每次代碼審查前自動(dòng)生成一次即可。有人已經(jīng)開始這么干了這個(gè)方向的價(jià)值確實(shí)值得普及開。6.2 新人入職與老項(xiàng)目交接另一個(gè)我覺得被嚴(yán)重低估的用途是新人快速上手老項(xiàng)目。過去新人進(jìn)入一個(gè)新倉庫通常要花一兩天時(shí)間翻代碼找入口再花一周左右理順核心鏈路。如果入職資料里直接放一張圖譜和一份按模塊整理的依賴列表新人就能先看宏觀結(jié)構(gòu)再按圖索驥去精讀關(guān)鍵函數(shù)。交接文檔里可以自動(dòng)附帶每個(gè)核心模塊的依賴圖講的時(shí)候直接照著圖說“改動(dòng)這個(gè)服務(wù)會(huì)波及以下三條鏈路”比對(duì)著代碼一行行講效率高。我以前交接一個(gè)服務(wù)時(shí)把 codegraph 導(dǎo)出的依賴圖存成了 SVG 放進(jìn)文檔后來接手的人第一次改代碼就沒有改壞邊界測(cè)試。我還見過有人在 CI 流程里加了一步每天定時(shí)跑一次codegraph scan把結(jié)果放到內(nèi)部 Wiki 上追蹤架構(gòu)演進(jìn)趨勢(shì)。如果某天模塊數(shù)量或者循環(huán)依賴數(shù)量開始顯著上漲大概率是有人引入了顆粒度不合理的依賴。這種“架構(gòu)監(jiān)控”效果靠 codegraph 之外的方案往往要付出很高的成本。6.3 我的最終建議基于這陣子的密集使用我對(duì)普通用戶如何引入 codegraph 有幾點(diǎn)實(shí)在的建議。剛開始不要追求“完美圖譜”。不要想著第一次跑就建立一套全量、多語言、包含注釋摘要的超級(jí)分析管線先把核心語言的核心文件跑通養(yǎng)成“分析前先看 ignore 配置”的習(xí)慣其他都是后面的事??梢暬灰昧^猛。圖不是越大越好看節(jié)點(diǎn)越多通常意味著噪聲越多。能用 JSON 和查詢解決的問題沒必要渲染一張超大圖片。我的經(jīng)驗(yàn)是導(dǎo)出 JSON 用腳本查數(shù)據(jù) 95% 的情況下都比看圖高效圖片只是用來做匯報(bào)和直覺檢查的輔助手段。把圖譜當(dāng)成工程判斷的輸入而不是答案。它能告訴你 A 被 B 調(diào)用了但它不會(huì)告訴你這樣調(diào)用是否合理、是否需要重構(gòu)。真正的架構(gòu)決策依然需要人來做判斷。但它的存在把那些模糊的依賴關(guān)系變得可見、可度量等于給判斷加了一層數(shù)據(jù)底座。我現(xiàn)在接手新項(xiàng)目的第一反應(yīng)不再是直接打開源碼漫無目的地翻而是先跑一遍 codegraph把整個(gè)倉庫的地圖拿到手再說。意義是什么很快你會(huì)自己感受到。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久久国产成人一区二区三区在线| 2017av无码免费无线播| 精品日韩人妻视频| 人人摸.人人色| 黄页视频网站野外| 亚洲se91| 欧美天堂亚洲电影院一区在线播放| 国产东北女人在线视频| 久操国产在线| ...日韩成人一区二区三区字幕| 在线啊v一区| 搡老熟女免费视频| 亚洲色阁| 欧美综合1性辶| 97香蕉人人乳| 欧美|91色综合| 乱伦av麻豆| 精品无码久久久久久久杏吧| 亚洲精品99999| 九九无码久久精品视频| 一区二区三区精品黑丝白丝酒店对鸡| 日韩视频精品在线观看| 亚洲天天操| 久草看看看| 亚洲福利中文字幕在线| 五月天综合网| 欧美精品二区视频在线| 久久精品电影在线| 黑人性暴力毛片| 色娱乐色呦呦夜夜夜夜av| 91九色丨国产丨爆乳| 欧美视频在线视频免费va| 国产女人操逼视频| 日韩999| 亚洲日韩美国人妻| 日韩乱插| 五月丁香综合网| 欧美精品久久久久久久久88| 国产精品久久久久中文字幕| 91美女中出| 99热伊人| 超碰1024久久| AV女优男人的天堂| 国产偷拍网站| 91深夜夜| 国产激情久久久| 自拍鲍鱼一区在线高清观看免费| 人妻嗯啊啊在线播放| 国产97色在线| 亚洲天堂东京热| 人妻激情另类| 久久婷婷亚洲欧| 在线观看 99热| 日本高清视频在线观看黄已三辽| 操人妻视频| 中文乱码字字幕在线第5页| A级片一区| 日本高清_区二区三区| 黄片www.| 精品国产99| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 日本三级日本三级三级人妇四虎| 亚洲码和欧洲精品激情系列| 天天日天天射天天干| 青青国产在线拍揄自揄拍| 亚州日韩97| 国产91美女视频| 久久精品超碰| 五月丁香拍拍激情综合三级| 中日无幕一二三四区| 精品一区二区三区最新| 欧洲一区二区三区四区在线观看| 日韩猛交| 精品一区二区三区蜜桃臀赵总 | 东京热一区二区中文字幕| 久久永久无码人妻视频| 家庭乱伦网站国产| 艳美熟妇先锋一二三区| 欧美极品色| 国语精品av| 日本1区2区不卡视频| 99久久精品国产高潮| 伊人影院中文字幕| 精品无人区麻豆乱码1区2区图片 | 射 色综合| 欧美狠狠鲁| 亚洲精品 欧美97色色| 日本高清视频xxxx| 色久综合| 999热日韩精品| 家庭乱伦麻豆| 1024日韩| 婷婷色香伊人| 日日骚 av| 亚洲人妻在线精品| 97色碰| 女人的天堂大香蕉网| 黄页av| 午夜高清成人在线视频| 久草热制服丝袜在线观看| 夜夜高潮夜夜爽夜夜爱爱一区| 日本在线观看网址| 防屏蔽在线视频| 99精品无码| 少妇高潮对白在线观看| 白丝jkav| 日韩免费三级黄片电影| 亚洲国产精品久久久久婷婷青年| 青青操日韩| 乱伦a片视频| 99国产在线绯色一区| 风间由美日韩欧美久久| A 天堂在线观看视频| 性色乱AV一区二区| 91一区二区三区蜜桃| 久久综合激情| 97超碰色色| 任你草| 校园春色亚洲色图| 日本天天操| 一本色道人妻久久| 婷婷五月天激情四射| 视频在线中文字幕| 91啪啪| 91精品91久久久久77777| 国产AV激情无码久久无码 | 97国产精品视频| www九九热| 91天天综合在线观看| 天天天天天天天天天天干美女| 台湾佬中文娱乐自偷自拍| 97精品| 江都AV在线| 清纯唯美亚洲| 大香伊人在线一区| 亚洲免费人妻在| 美女网站黄页| 欧美黑人猛交春色影视大全| 欧美Ⅴ性爱| 懂色AV中文| 家庭乱伦国产| 九九九只有精品| www久久久| 操屄日韩| 久久久久96| 久久免费精彩视频| 99精品欧美一区二区三区桃色| 伊人96在线| 日韩一级欧美一级在线观看| 青娱乐999| 色五月第四色| 噜噜吧,噜噜色,噜噜| 97极品无码| 有码色中文字幕在线观看| 综合操逼| 国产精品美女视频诱惑| 国产日韩中文字幕欧美| 久久国产精品,久久国产| 中文字幕精品一区二| 大香蕉伊然在亚洲91| 伊人五月天| 乱伦色图网址是多少| 韩国毛片一区二区三区| 无码99| 国产精品久久久鸭无码的功能| 天天色图| 4tube欧美女厕所| juliaann精品熟女一区| av资源在线播放天堂| 毛片久久| 熟人人妻少妇精品久久| 欧美aⅴ99久久黑人专区| 日本在线不卡一二区| 白丝被操91| 97干97色| 一本大道青青| 福利天堂| 久久精品男人的天堂| 亚洲射综合网| 99热| julia在线观看久久| 国产精品自拍欧美在线| 亚洲欧洲无码bt精品合集| 少妇蹲下露出大唇5| 传媒在线观看一区二区三区| 蜜桃传媒视频第一区入口在线看| 97干天天| 一个人在线看的黄色电影网站| 色婷婷网| 蜜臀在线免费观看在线免费观看| 色综合五月天| 97视频在线免费看| www.色婷婷.com| 国产成人免费观看在线视频| 爱我干综合| 亚洲 日本 国产 综合| 欧美高清无码免费视频高清版| 欧洲亚洲人妻无码高清久久三区四区| 日韩精品人妻中文字幕不卡乱码| 久久精品99| 在线观看 99热| 亚洲成人精品久久久| 国产精品久久久久绯色| 求求你操操我| 日日A∨| 人妻插插人妻人| 亚 欧 美 综合| 开心五月婷婷激情| 中日无幕一二三四区| 日韩欧美视频青青| 久久最新免费视频23| 亚洲欧美中日韩| 久久久久久中文版| jiujiujiujingpin| 国产99999久久精品| 丝袜美腿射精91| 97精品视频网站| 欧洲精品一二三在线| 亚洲资源网| 极品色电影院| 欧美男人的天堂| 日比av无码| 91熟女在线| 绯色一区二区三区不卡少妇| 狠狠久久手机视频精品| 在线v中文字幕一区二区三区| 日本欧美亚洲高清在线看| 乱伦图一区| 日本精品高清一二区一本到| 久久久久性熟视频| 亚洲精品蜜桃久久久久久久| 我爱操| 97超碰欧美精品| 极品国产内射| 婷婷综合久久| 久欲AV| 亚洲熟女av中文字幕| 91丝袜在线观看| 呦呦影院| 人人看人人摸人人色| 久久婷婷五月综合| 97干天天| 上床啊啊啊| 18禁看网站一区| 精品毛片久久久精品毛片| 欧洲色| 国产男女无套97| 欧美传媒一区| 国产福利电影| 成人精品在线观看| 麻豆一区在线| 酒色综合网| 亚洲囯产精品女人久久久| 国产伦精品一区二区三区在线观| 99在线视频播放| 国产日韩怡红院| 国产丝袜美女在线一区| 加勒比在线视频| 成人欧美日超碰| 亚洲啪啪综合?v一区综合精品区| 亚洲欧美日韩综合在线尤物| www.acm成人黄色毛片| 免费精品无码一级毛片牛牛影视| 男女一级A片大黄,一进一出| 欧美 综合 亚洲| 五月天亚洲色图| 亚洲欧美日韩夜夜| 欧美专区17页| 91精品黄在线观看| 综合天天。| 熟女激情综合网| 人妻嗯啊啊在线播放| 精品国产久久乱码| 久久国内| 九七毛片九九毛片 | 日韩9999| 自拍内地三级在线观看| 操香逼| 亚洲风情在线观看| 色色丁香| 91亚洲最新在线| 人人摸人人干人人拍97| 色综合久久夜色精品国产天堂| 91视频综合| 色九区| 久久久999国产精品| 日韩欧美国产高清视频| 女上位精品在线| 成人网站 免费观看| a片亚洲一本通视频| 韩国一级婬片A片无码天美 | 国产极品美女高潮无套在线观看| 亚洲欧洲精品成人| 丰满岳乱妇一区二区三区| 99re95| 韩国手机不卡无码三级视频| 99国产精品免费| 亚洲欧美色图小说| 91AV天美在线视频| 亚洲强奸乱伦影视网| 亚洲欧美综合网站| 色情五月婷婷| 国产精品播放| 中美日韩毛片| 久久精品国产亚洲AV片多多 | 国产精品岛国片在线观看| 一二三四视频在线社区中文字幕| 日本一区二区不卡精品| 青青草影视蜜久久| 久久麻豆一区二区| 亚洲国产另类在线中文| 欧美成人色| 国产欧美日韩精品中文| 天天久久久久久| 天天干天天拍| 麻豆视频国产一区二区| 久久久久久十| 久九干| 人人操人人插人www| 欧美激情精品久久久| 国产欧美一区激情交| 久久 精品| 国产传媒日本欧美专区| 欧美视频一区二区在线| 日本人妻伦在线中文字幕| 国产乱弄免费在线视频。| 操逼视频亚洲| 人人人干干人人干| 色香综合天天影视综合 | 78精品在线| 不卡码视频| 免费A V在线播放| 中文字幕人妻丝袜乱一区三区| 亚洲精品蜜桃久久久一区二区三区| 黑人精品一区二区在线播放| 欧美性高潮| 亚洲日韩青青草色月| 国产激情av女片自拍| 91n欧美| 碰超人人在线一区二区三区| 色妹子A V| 亚洲第一无码播放立川理惠| ji熟女.com| 少妇大屁屁| a人欧美综合天堂麻豆| 97碰在线视频| 欧美经典一区二区三区| 日韩av免费一级电影| 九七超碰人人乐| 女人的天堂大香蕉网| 欧美精品人妻视频| 丁香五月天堂网| 亚洲系列第一页| 国产在线播放成人免费| 青青草大香蕉视频| 91亚洲狠狠色| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 日韩无码三级影院| 欧美一区二区三区不卡高清视频| 久久精品国产亚洲粉嫩| 熟女熟妇伦久久影院毛片一区二区| 一区二区三区四区五区高清无码永久视频| 自拍鲍鱼一区在线高清观看免费| 蜜臀操逼黄色视频操的好爽| 99久久精品无码一区二区| 女人与公拘交酡2020视频| 欧美96精品在线| 国产超碰欧美| 久久久96精品| 欧美第五页| 久久精品日韩专区免费观看| 亚洲在钱| 国产蜜臀在线| 91亚洲狠狠色| 天天夜夜rb| 天天射天天色成人| 啊啊啊慢点| 亚91网| 九九九只有精品| 久久久熟女一区| 国产精品久久久久999| 欧美色图成人网一区二区 | 少妇一区二区三区| 91久久青青草原精品| 精品一区二区三区丰满熟女-亚洲欧美一区| 国产91丝袜 在线播放| 97久久国产| 东京热大香蕉| 亚洲免费成人在线高清无码视频| 亚洲精品性爱片| 无遮挡一级毛片视频免费的| 久久久九九| 男人的天堂无码| 欧美熟妇精品黑人巨大91| 国产激情视频一区区三区| 99热导航| 人人摸人人摸人人干| 加勒比av网| 色播五月丁香| 69精品少妇一区二区三区蜜桃| 婷婷尹人大香蕉免费| 91啪啪视频| 91oumei| 国产欧美日韩女同性恋ww喷水精品 | 日本欧美一区二区三区免费| 依人大香蕉| 亚州精人品大香蕉| 中文字幕日韩精品一区二区三区| 激情四射五月天| 亚洲天堂久久| 国产精品福利资源在线尤物| 成人三一级一片aaa| 国产原创剧情在线丝袜| 精品久久久久9999| 亚洲不卡一| 精品午夜福利| 亚洲制服aⅴ中文字幕| 99久在线精品99re8热| 欧美性天天影视| 熟女网站最新| 欧美色狠| 婷婷亚洲综合| 日韩人妻精品中文字幕| 精品一区二区亚洲国产| 日韩中字av一区| 亚洲涩涩| 亚洲国产精品无码AV久久| 日韩精品免费高清视频在线| 欧美亚洲综合色| 中文字幕AV片| 美国日韩黄片| 五月婷婷激情网| 国产精品久久久999| 97日本超碰综合| 欧美精品 - 91爱爱| 亚洲综合性网址| 男人的天堂2019AV| 日韩精品系列| 午夜激情床戏激情| 欧美.亚洲.另类.丝袜.制服.诱惑| 激情视屏国产乱伦强奸| 男人的天堂2018.| 日韩综合色网| 日韩国产欧美伦理在线| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 亚洲色图超碰在线| 91综合天天看| 久久久精品视频免费观看| 色月天AV导航| 大色综合| 亚洲有薄码区日本系列中文字幕| 午夜亚洲| 久久露脸国产老熟女| 欧美亚洲成人在线一区二区三区| 极品欧美一区二区三区| 丰满少妇人妻久久久久久| 超碰97综合在线| 影音先锋中文字幕日本好一区二区 | 99精品九九九九九九| 91动漫操逼视频| 日韩精品电影| 永久免费发布性爱网| 亚洲另类色图片| 久久超碰网| 九九热精品| 亚欧美综合网| 麻豆久久视频在线地址| 蜜臀久久99精品久久久久久酒店| 欧美日韩成人在线| 久久久性爱| 性爱视频久久| 欧美色亚洲| 东北女人av| 精品亚洲| 久久日本熟妇熟色高清| 不卡一区二区日本视频| 国产夫妻性生活视频| 欧美日韩操逼嗦吊| 美女好片色日本| 久久久久久午夜男人的天堂| 国产精品高潮久久久无码| 日韩AV色图| 91精品久久久| 欧美第一页| 国内精品伊人久久久久影院会| 老熟妇一区二区三区| 极品极品色影院| 青青久久艹| 欧美综合加勒比在线| 17c在线成人免费A片观看| 一区二区视频你懂的| 中文字幕亚韩| 久操免费在线| 欧美成人综合| 99热思思| 吖在线不卡一区二区国产剧情| 日本欧美m v精品网站加| 一区二区三区激情在线观看| 9色国产精品一区粉嫩| 亚洲吊色| 五月天婷婷影院| 超碰97人妻免费在线| 伊人精品国产| 欧美极品女人的天堂| 日韩中文字幕精品一区在线| 日本二区不卡| 黑人中出21连凳花野真衣| 中国大陆国产高清AⅤ毛片| 91亚洲网站| 精品97精品97| 日韩三级一区| 乱伦日本色图AⅤ| 亚洲毛片基地专区| 99热日| 嗯啊免费视频| 久久性爱免费送| 免费国产电影一区二区| 欧美激情内射| 精品二区三四区五电影| 日韩内射视频| 99天堂网| 男女激情黄色网址| 国产在线能看的你懂的| 97综合激情| 亚洲欧美日韩电影网站一区 | 男人天堂电影院| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 久久精品成人| 欧美激色| 欧美在线55555| 激情四射婷婷四五月天| 久久五月婷| 国产尤物AV尤物在线观看不卡| 超碰午夜| 丝袜亚洲综合| 超碰人妻久久| 欧美热图99| 女同性恋中文字幕| 99日免费视频中文字幕| 日日夜夜噜| 人人色人人射人人妻| 色情成人五月天| 亚欧性爱ab| 国产日韩欧美亚洲精品95| 国产精品分类在线观看| 翔田千里AV无码秘 三区| 日本一线产区和二线产区伦理片| 97超色| 国产精品色| 精品美女人人干| 亚洲综合骚逼| 免费国产| 青青草中出视频| 东京热99999| 久久综合av| 亚洲日韩欧美一区二区| 蜜桃视频啊啊啊啊| 人人妻人人色一区二区三区| 亚州,欧美在线| 99在线精品观看视频中文| 亚洲脚交| 九九热精品| 色综91| av网站在线看| 色y情视频免费看| 亚洲精品国产无码高清| 大黄片做爱的大的| 欧洲一级性爱视频在线观看| 少妇滛荡视频| 男人的天堂啪啪| 荡小穴在线观看| 亚洲综合另类欧美久久久| 欧美性战999| 欧美97视频| 啊啊啊啊好疼视频| 天天操妹子| 午夜美女福利视频| 精品人妻1区| 色久桃花影院在线观看| 激情五月天丁香社区| 黄污污污污| 午夜福利久久久噜久噜久久综合 | 久久久久久久强迫| 大黄片做爱的大的| 亚洲九区| 欧美色网| 亚洲色 国产 欧美 日韩| 无码抄逼网| 久热色情精品| 亚洲清纯唯美| 91狠狠综合| 久久久国产亚洲精品系列| 免费视频a级毛片免费视频| 99热亚洲天堂| 我爱操| 色欲久久久久综合网| 国产AV无码AV| 色呦呦、国产精品| 大香蕉手机在线| 日韩性爱小视频| 久久香蕉综合一本到3atv| 久久精品一区二区三区不卡| 久久草视频污视频| 97综合在线| 精品黑人一区二区| 美女97超碰| 久久久月天| 国产精品嫩草影院午夜两性| 超碰在线99| 一本久久精品中文字| 国产精品网址| 国产自偷自拍一区| 久久大陆| a片在线播放| 国产亚洲色婷婷久久99精品91| 欧美国产一区二区三区麻豆传媒| 婷婷激情四射| 亚洲图片偷拍视频区| 中国黑人三级片网站上区| 日韩人妻丝袜中文字幕| 伊人色综合网电影| 嫩草影院永久在线制服丝袜| 大香蕉一级黄色片久久| 在线另类| 青青草原av| 在线看片国产精品每日更新| 二级久久网| 免费A片三p视频| 精品少妇后入一区二区三区四区人妻巨乳 | 99re9这里只有精品| 色区97| 成人午夜视频免费播放| 色五月激情AV在线| 乱伦图av| 大香蕉综合在线| 国产精品一区二区校花| 蜜臀99999| 人妻一区二区三区视频 | 少妇一区二区三区精选| 欧美一级A一级a爱片久久| 天天爽天天操| 嗯嗯啊好爽| 亚洲天堂,男人| 欧综合网| 久久久亚洲精品电影免费看| 亚洲人成在线放东京热| 久久日韩毛| 亚洲国产精品成人久久蜜臀| 色穴精品| 自怕偷自怕亚洲精品| 乱老熟女一区二区三区| 国产高清无码一区三区二区| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 欧美一区二区三区成人性生活| 中文字幕一区电影在线观看 | 韩国黄色片精品久久久| 亚州欧美在线| 亚洲春色激情小说| 国产家庭乱伦表演| 大香蕉综合久久| 艹少妇网站| 亚洲一区中文字幕| 久久婷婷国产一区二区色| 日韩国产精品人妻无码久久久| 手机不卡视频不卡在线一二三区| 日本人妻中文字幕精品| a片亚洲一本通视频| 国产无套粉嫩白浆在| 亚洲 在线| AV一二区| 秋霞影音一区二区三区| 91国产丝袜白虎| 天天综合AV| 色综合久久av| 性高潮久久久久久久久久久| 欧美日韩夜夜| 亚洲一欧洲中文字幕在线| 91天美免费| 红桃视频高潮| 一区二区三区激情在线观看| 欧美亚洲情色| 青青草玖玖爱| 久久久人体| 亚洲国产成人福利在线观看| 东京热,男人的天堂| 久久伊人网视频一区二区三区 | 思思热在线视频在线| 欧美日韩亚洲五月天婷婷| 操人91| 国产亚洲精品精AV.| 精品制服美女中文一区二区三区| 深夜啪啪啪视频免费| 免费一级a毛片久久久久久鸭绿欲| 99热线麻豆 | 9 1果冻精品视频| 日日黄色三级网站| 狠狠五月天| 亚欧成人综合影院| 九九碰九九爱97超| 人人妻天天做天天爽| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 10000部十八禁看电影| 婷婷午夜| 秋霞蝌科网日本一区| 呦呦一区| 超碰诱惑| 激情文学亚洲| 久久一二三四不卡 | 人人操人人爽人人操人人| 日本高清视频在线观看黄已三辽| 99精品网站| 加勒比无码一区二区三区| 91c色| 伦激情人妻另类人妻| 亚洲激情视频| 日逼97| 亚洲玖玖爱| 超碰欧美在线欧美| 中文字幕人妻色偷偷久久皮| 久久精品亚洲婷婷| 尹人大香蕉视频在线| av天堂5| jizzjizz欧美| 夜夜操青青草| 国产隔壁老王影院在线| av毛片aaaaa免费看| 天天噜| 蜜屁av| 天天肏夜夜肏| 欧美性高潮| 黑人性欧美| 天堂网亚洲区手机版| 亚洲色图欧美色图综合| 亚洲s色图| 伊人久久亚洲色欲综合网站| 性爱Av免费| 韩国免费播放一级毛片| 国产60页| 女性喷水高潮在线观看| 婷婷色综合欧美日韩| 中文字幕后石码三区四区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 亚洲欧美999| 乱伦强奸区日韩| 乱伦熟女论坛| 日韩成人在线性爱视频| 欧美丰满少妇xx高潮| 91人妻做a观看视频| AA特级绝黄| 亚洲综合精品国产一区| 成人国产精品三级A片| 成人午夜无码视频| 精品精品精品| 亚洲色图欧美色图制服丝袜| 99综合自拍| 狠狠做深爱婷婷久久二区| 黄色片G G G| 国产嫩草精品A88AV| 亚洲91色| 日本黄色大片一级视频免费麻豆| 无码日韩人妻av一| 影音先锋国产精品| 精品久久久无码| 一区二区 日韩 欧美 国产 传媒| 亚洲宗合网| 日韩欧美三级| 午夜舔阴达高潮视频免费看| 日本精品网站在线中文| 黑人精品成人一区二区三区| 天美传媒一二三区永久网站| 97国产亚洲中文在线| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 国模精品一区二区三区苹果色戒 | 午夜噜噜噜| 亚洲国产成人7777| 日本在线不卡v二区| 97精品国产97久久久久久| 色噜噜人妻丝袜AV资源| 91男同| 伊人加勒比| 园内精品自拍视频在线播放| 大香蕉啪啪啪| 另类av综合久久| 三及片网站| 中文字幕久热视频在线| 人妻嗯啊啊在线播放| 男人网站婷婷| 亚洲图片欧美色| 国产欧美日韩精品中文| 久操99| 啊啊啊啊,啊啊好多水| 国产无码三级视频在线观看| 3p国产色噜噜一区| 一道本东京热加勒比一区二区三区| 亚洲十八禁止| 欧美高清无码免费视频高清版| 3p国产欧美99热| 国产美女口爆吞精| 久久午夜色播影院免费高清| 黄色性爱网网| 97色视频在线| 亚洲图片激情小说| 九九碰九九爱97超碰| 九九热在线精品视频| 蜜臀99久久精品久久久懂爱| 无码自拍SM| 长久操视频| Av手机版天堂网| 青娱乐亚洲热| 999久久久国产精品| 久久东京国产精品视频| 中文字幕视频免费| 男女做爰猛烈动高潮A片免费应用| 色五月大香蕉| 综合熟妇一区二区三区| 亚洲无吗在线视频| 伊人玖玖网| 亚洲 小说 欧美 激情 另类| 天美麻豆精品视频99| 中文字幕黄色一起草| 99日精品欧美国产| 91美女视频电影| 国产亚洲精品av一区| 青青草成人视频在线观看二区| 精品无码欧美三级| 91蜜臀在线久久久久| 亚洲欧美黄| 日韩精品99999| 蜜臀99久久国产| 色色五月婷| 农村少妇久久久久久久| 天天肏夜夜肏| 夜夜夜夜久久久久| 五月激情小说| 欧美日韩资源| 99re3这里只有精品| 国产精品com| 日韩情色视频| 国产辣妈在线视频福利| 欧美大香蕉97| 日韩亚洲精品一区二区| 蜜桃一区二区三区| 国产麻豆福利av在线播放| 激情黄色五月天| 91成人久久| 男人天堂最新手机版在线青青草| 国产成人无码网站在线视频| 欧美激情在线观看视频| 国产精品一二三免费网站| 精品999一区二区| 国产精品久久发布| 中文字幕人成乱码熟女香港| 日本新免费二区三区| 亚洲乱码国产乱码精网站| 久草电影网| 久久五月份| 网站A V在线| 久久久久密臀视频| 欧美 亚洲 偷拍自拍| 亚洲97在线| 精品国产91久久久久久一区黄无| 亚洲国产ⅴ高清在线观看| 亚州国产成人精品女人久久 | 国产免费一区| 一本道综合色图| 边做饭边操逼逼| 丰满人妻一区二区中文| 99久久婷婷国产综合| 超碰97护士| A啊啊在线观看| 黄色高清无码无码破解免费暗网| 中日韓欧美高清| 久草毛片电影怡| 欧美在线播放aaaa| 伊人热综合| 影音资源男人日韩| 熟妇熟女亚洲天堂网| 欧美 日韩 亚洲 春色| 91少妇高潮| 美腿丝袜偷拍亚洲欧美| www久| 男女激烈网站最新| 国产一区二区在线看| 蜜桃视频精品一区二区三区| 黄色欧美性爱视频| 日韩成人高清一区二区| 热久久无毒不卡| 久久大香蕉手机高清| 操操逼操操逼操操逼逼| 东北女人操逼| 欧洲一区二区三区四区在线观看| 精品福利视频| 91九色在线| ..日韩av毛片精品久久久| 亚洲成成熟女人综合一区二区| 久久久国产精品人妻丝袜| 五月激情综合网| 搡老女人老妇女AAA一VU麻豆 | 日本91白丝| 蜜臀操逼黄色视频操的好爽| 三级日本一区二区三区| 蜜臀99久| 亚洲情色 无码专区| 久久九七| 天美国产精品| 日韩成人免费电影| 成人八戒网站| 中字幕人妻一区二区三区| 亚洲欧美碰碰| 东北女人性交| 97超碰色中文字幕| 国产成人主播| 91色噜噜狠狠| 亚洲情色五月天 | 中文字幕人乱码中文字的预防方法| 射 色综合| 激情四射五月天| 中国国国产一级特黄毛片| 欧美伊人久久综合网| 超碰97久久| 亚洲少妇在线观看| 亚洲丝袜少妇在线| 深喉吞精| 欧美色综合网| 亚洲高清欧美总合| 99操逼| 久久有码视频| 99999亚洲另类| 欧美同性恋 的搜索结果 - 91n| 91少妇通奸网站| 国产和美国毛片| 强奸熟女一区二区三区| 精品美女久久一二三| 欧美 熟女 日韩| 天堂在线一区二区| 欧美性爱网97| 日本天天干天天搞一区| 熟妇人妻一区二区三在线 | 黄色小视频日本txt| 欧美日韩国产高清在线一二三区 | 九九亚洲| 欧美十八禁在线看| 国产午夜福利电影免费在线观看 | 91精品国产91久久久久久久久久久久| 日韩久草| 亚洲涩图欧美| 久久久月天| 精品人妻丰满熟妇一区二区三| 91欧美www| 日韩一二三区| a片在线播放| 91丨豆花丨熟女| 欧美人与性动交a美精品| 天天做日日做天天欢。| 91精品无码人妻系列| 国产伦精品一区二区三区在线观 | 噜噜噜噜久久久精品免费| 久久久精品网| 成人26uuu| 十八禁成人网站在线观看| 动漫爆乳3D奶水一区在线观看| 久久精彩视频| 爱干爱射网啊啊啊| 久久噜| 美女91AV| 免费一级黄色录像影片| 久久久国产成人一区二区三区在线| 免费精品99| 91欧美美女日韩国产婷婷| 蜜臀av网址| 免费国产视频| 成年女人黄网站| 五月激情综合网| 国产成自自拍在线观看| 超碰 欧美| 另类图片欧美激情综合| 永久免费发布性爱网| 日本大片日本一区二区免费高清| 大香蕉十区| 久久久久九九九九九| 国产深夜福利| 欧美亚洲另类在线蜜桃| 亚洲丝袜色| 91 亚洲情侣偷拍 久久| 91老司机在线| 国产熟女完整版中字 | 综合亚州欧美| 无遮挡一级毛片视频免费的| 亚洲图片偷拍视频区| 一本正道久久熟女| 亚洲 欧美 日本 国内 首页| AV乱伦专区| 婷婷五月天网| 91无摭挡| 久久精品国内Av熟女高清| 99久久99九九99九九九| 国产午夜视频| 欧美亚洲天堂| 超碰免费人人| 精品人妻一区春色| 91操操操操| 九九碰九九爱97超碰| 韩日精品福利视频一区不卡在线免| 亚洲色宗合| 亚洲aV无码成人在线观看| 绯色AV粉色AV蜜臀AV| www.91视频网| 日韩AC| 射丝袜大香蕉| 午夜福利1区2区3区| 中文字幕一区av| 玖玖综合视频| 亚洲中文国际强奸字幕| 午夜欧美J进J出白浆流出久久久| 大香蕉日韩| 欧美刺激色黄片免费看| 中文字幕精品久久久久人妻红杏ⅰ| 神马久久午夜| www.夜夜操| 日日干日日摸| 欧美,日韩,亚洲视频| 天天色怡春院| 日本免费人成视频播放120秒| 亚洲伊人久久精品狠狠在线| 精品九九九九九九| 天天干,夜夜爽| 日韩欧视频| 亚洲精品成人| 亚洲日精品| 人人色人人操在线| 91天天美女| www.色婷婷色综合| 国产超碰97| 黄片不用下载在线观看| 久男人久久| 亚洲码专区| 久久精品女同亚洲女同13| 无码国产精品久久久久| 俺去啦自拍| 大屁股xxxxx| 色97欧美| 亚洲 日本 一 二 三| 亚洲熟女人妻中文字幕一区二区| 色色丁香| 精品78| 麻豆天美传媒在线视频天堂| 高清国产无码av| 亚洲国产精品久久久男人的天堂| 热无码中文亚洲H一道本一区二区| 欧美九九99久久精品| 国产真乱mangent| 高潮综合网| 免费伦费视频在线观看| 欧美亚洲韩国视频十五区 | 精品二区久久| 狠狠操天天干| 99色网| 中文幕97| 国产一区二区啪啪视频| 成人小电影网站tex| 啊啊啊啊视频免费| 无码 黑人一区二区三区| 日韩精品人妻中文字有码在线| 人人操人人摸人| 78操B| 久久、1234| 国产又大又硬又长又粗| 极品色综合| 一区 欧美 日韩 麻豆| 免费作爱一级视频| 国产精品欧美在线观看| 少妇天堂网络| 丝袜美腿制服人妻二区中文字幕| 精品夜夜澡人妻无码AV| 骚乳在线| 久久精品国产亚洲AV高级北京| 97伦综合| 91在线色| 五月丁香激情啪啪| 日本性交操一区二区不卡系列| 98福利在线视频| 最新欧洲欧美日本激情网站| 成人97人人超碰人人| 欧美九一精品久久久熟妇| 少妇二级| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 97色伦欧美| 乱伦图一区| 亚洲激情片| 国产人人干| 一区中文字幕二区日韩| 综合久久中文字幕综合日韩精品| 蜜桃臀久久| 色综合1991| 九九九综合精品| 96久久精品一二三区色欲| 日韩性爱小视频| 麻豆色约约| 婷婷精品国产一区二区三区日韩| 大香蕉综合网| 国产三级多多影院2022国产AA一级毛片无码 | 淫乱图区 | 亚洲无码视频免费在线观看网址!| 亚洲色图自拍| 一及黄久一点| 日韩精品 资源| 在线精品福利免费播放| 青青青国产手线观看视频2| 老司机香蕉久久久久| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 男人天堂站| 天天摸,夜夜摸| 久久av成人无码免费| 人人操人人爽人人操人人| 东北女人高潮视频| 99在线啪| 一级黄碟在线看| 91人妻视频| 无码一区二区三区四区五区六区七区八区九区十区视频 | 欧美强奸乱能| 国产黄色影片在线观看| 亚洲美女AV无码| 9久久精品| 日本幼女18+| 超碰在线成人电影| 啊啊啊啊啊啊啊网址在线观看| 亚洲视频,小说| av操操不卡| 久操黄色视频| 大香蕉123| 99婷婷| 婷婷色在线| 欧美在线视频99| 色五月综合网| 五月丁香啪啪网| 99日韩| 99热这里只有精| 99re视频在线观看这里只有精品| 柠檬AV导航| 综合五月婷婷| 久久久中文| 欧洲色色| 天天综合色电影| 96AV精品| 天天摸夜夜摸| 欧美色图私拍91| 97视频620| 久久一二三四五六七八九区区| 久久內射| 超碰久久草| 操死我了啊啊啊| 色哟哟av| 亚洲男人天堂2017| 2019天天干| 亚洲精品自拍| 国产精品久久久久久久AV大片 | 久久男人网| 大香蕉琪琪日本女优不卡| 亚洲九九爱| 人妻另类|