久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

百度工程师手把手教你实现代码规范检测工具

發(fā)布時間:2024/10/12 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 百度工程师手把手教你实现代码规范检测工具 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

01 引言

代碼規(guī)范是軟件開發(fā)領域經(jīng)久不衰的話題。在前端領域中,說到代碼規(guī)范,我們會很容易想到檢查代碼縮進、尾逗號以及分號等等,除此之外,代碼規(guī)范還包括了針對特殊場景定制化的檢查。JavaScript 代碼規(guī)范檢查工具包括 JSLint、JSHint、ESLint、FECS 等等,樣式代碼規(guī)范檢查工具主要為 StyleLint。

02 背景

san-native 是百度 APP 內部的一套動態(tài) NA 視圖框架,利用 JS 引擎驅動 NA 端渲染,使得 web 前端工程師可以十分方便的編寫原生移動應用,一套代碼多端運行。隨著百度 APP 中越來越多的業(yè)務開始接入 san-native,在此過程中,經(jīng)常遇到 h5 中的一些樣式屬性以及事件在 san-native 中不支持,不按照 san-native 中內置組件嵌套規(guī)則的代碼導致渲染結果不符合預期。比如下面一段.san 文件中的代碼存在多處錯誤會導致端上渲染不正常甚至導致 crash:

  • 第 2 行:在 san-native 中不支持行內樣式 flex-basis
  • 第 3 行:在 san-native 中不支持滾動事件 on-scroll
  • 第 6 行:在 san-native 中文本節(jié)點 span 不允許嵌套 img
  • 第 7 行:內置組件 lottie-view 必須要有 source 或者 src 屬性
  • 第 23 行:在 san-native 中不支持 display:inline
  • <template><div style="background-color:#fff; flex-basis:100px"><div on-scroll="onScroll" class="{{$style['demolist-wrapper']}}">內容</div><span><img />san-native中span不允許嵌套img</span><lottie-view /></div> </template> <script>export default {components: {},onScroll() {// do something},initData() {return {};}} </script> <style lang="less" module>.demolist-wrapper {display: inline;}

    因此,為了能夠在編碼階段提前發(fā)現(xiàn)這些問題,我們需要對代碼進行一些特殊的檢測,包括樣式,事件,以及嵌套規(guī)則。為了實現(xiàn)這樣的功能,我們啟動了 san-native-linter 項目,該項目中包含了兩個相互獨立的插件:@baidu/eslint-plugin-san-native 以及 @baidu/stylelint-plugin-san-native,我們將逐一介紹其實現(xiàn)原理。

    03 抽象語法數(shù)(AST)

    首先我們需要了解代碼檢測的主角 —— 抽象語法樹 (Abstract Syntax Tree)。在計算機科學中,抽象語法樹簡稱 AST,它是源代碼語法結構的一種抽象表示。它以樹狀的形式表現(xiàn)編程語言的語法結構,樹上的每個節(jié)點都表示源代碼中的一種結構。

    將字符串源碼轉換成 AST 的工具稱為解析器,常見的 Javascript 解析器有 @babel/parser,espree,acorn 等,樣式解析器有 postcss,cssTree 等。AST 的生成有兩個步驟:

    • 詞法分析(分詞):將整個代碼字符串分割成最小語法單元數(shù)組
    • 語法分析:在分詞基礎上建立分析語法單元之間的關系

    我們可以通過在線工具 [1] 查看一段代碼的 AST,比如下圖所示的 AST,圖中用到的解析器為 @babel/eslint-parsre,右側所示的對象為左側代碼對應的 AST,該 AST 的根節(jié)點 type 為 Program,其 body 中有兩個子節(jié)點,分別為 import 以及 export 對應的語法節(jié)點,其 type 分別為:ImportDeclaration 與 ExportDefaultDeclaration。每個節(jié)點中 range 表示當前節(jié)點對應的代碼在字符串源碼中的開始與結束位置,loc 為開始與結束位置的行列信息。

    04eslint-plugin-san-native

    介紹 eslint-plugin-san-native 插件的實現(xiàn)之前,我們會先介紹 ESlint 中的規(guī)則 (rule),ESlint 配置與復用方案以及 ESlint 的運行原理,最后介紹插件如何實現(xiàn)以及關鍵的技術點。

    ESlint 中的規(guī)則(rule)

    上文中已經(jīng)通過簡單的例子介紹了抽象語法樹的結構,并且在引言部分已經(jīng)簡述了 ESlint 檢測代碼的核心思想,即對 AST 進行處理從而定位不符合規(guī)定的代碼,在 ESlint 中對 AST 進行處理的實體就是這里所說的規(guī)則(rule),下面給出了一個規(guī)則的示例代碼:

    module.exports = {meta: {type: "problem",docs: {...},schema: [],messages: {readonlyMember: "The members of '{{name}}' are read-only."}},create(context) {return {ImportDeclaration(node) {context.report({node: node,messageId: "readonlyMember",data: {name: 'xxx'}});}};} };

    在這樣的一個規(guī)則中,我們需要導出一個對象,包括 meta 屬性以及 create 方法,前者用于標記該 rule 的一些信息,后者則用于處理 AST 某個節(jié)點,并提供錯誤信息與出錯的節(jié)點。

    • meta 中,通過 type 標記規(guī)則的類型,docs 包含了規(guī)則的文檔鏈接等信息,schema則表示了配置規(guī)則應該遵守的約定,messages 包含了錯誤信息。
    • create 函數(shù):
      1.返回的對象中具有一個名為 ImportDeclaration 的方法,我們將該方法稱之為 import 語法節(jié)點的訪問器 (visitor),即在 ESlint 對整個 AST 遍歷的過程中,訪問到 import 語法節(jié)點的時候會調用所有名稱為 ImportDeclaration 的 visitor。
      2.create 函數(shù)接收的參數(shù)為 context 對象,該對象上掛載了 ESlint/ 自定義解析器為 rule 提供的方法以及用戶配置文件中的自定義配置信息,更多的屬性與方法見官方文檔。這里我們調用 context.report 將錯誤信息以及對應的語法節(jié)點提供給 ESLint。

    ESlint 配置的復用方案

    上文介紹了 ESlint 中的規(guī)則,在實際的工程應用中我們可以通過對規(guī)則進行定制化的配置來滿足特定的需求,但是如果每啟動一個項目,我們都需要進行相同的配置,勢必會帶來一定的時間成本。ESLint 提供了全面、靈活的配置能力,可以配置解析器、規(guī)則、環(huán)境、全局變量等等;可以快速引入另一份配置,和當前配置層疊組合為新的配置;還可以將配置好的規(guī)則集發(fā)布為 npm 包,在工程內快速應用。接下來,我們以 @ecomfe/eslint-config 為例看看如何高效的實現(xiàn)配置的復用,下圖為該代碼庫的目錄結構:

    在 @ecomfe/eslint-config 中,每個 js 文件都是一份 eslint 的配置,根目錄下的入口文件 index.js 為基礎配置 (base),其他文件夾可以看作是對基礎配置的擴展,比如 san 文件夾下是關于 san 的一些規(guī)則的配置,在實際的項目中可以通過下面的方式引入:

    module.exports = {extends: ['@ecomfe/eslint-config','@ecomfe/eslint-config/san', // 注意順序// 或者選擇嚴格模式// '@ecomfe/eslint-config/san/strict',], };

    ESlint 會將 extends 字段中的所有配置文件合并起來,每個配置文件包含如下幾個內容:

    module.exports = {parser: 'xxx',parserOptions: {parser: 'yyy',sourceType: 'module'},plugins: [],env: {},rules: {'indent-legacy': 'off',} };

    在這樣一個配置文件中,各個字段的含義如下:

    • parser:用于申明自定義 parser,該 parser 會將文件內容轉換成 AST
    • parserOptions:自定義 parser 的配置項
    • plugins:申明使用的 ESlint 插件,這部分會在后面 ESlint 工作原理介紹
    • env:申明檢測所處的環(huán)境,該選項用于引入一組預定義的全局變量
    • rules:對規(guī)則的配置

    ESlint 中插件與配置文件的區(qū)別

    上文中依次介紹了 ESlint 的規(guī)則的實現(xiàn)以及 ESlint 配置的復用,本節(jié)我們說明插件與配置文件之間的區(qū)別,ESlint 插件的入口文件示例代碼如下:

    module.exports = {rules: {'no-style-float': require('./rules/no-style-float'),// ...},processors: {'.san': require('./processor'),// ...},configs: {always: {plugins: ['@baidu/san-native'],rules: {'@baidu/san-native/no-style-float': 'error',}},// ...} };

    在這個入口文件中,我們向 ESlint 提供了一個對象,該對象中包含的屬性有:

    • rules:包含了該插件所有的規(guī)則的具體實現(xiàn)
    • processors:這里我們定義了專門用于處理.san 文件字符串源碼以及檢查信息的 processor
    • configs:包含了一些配置,可以看到與 @ecomfe/eslint-config 中的配置文件類似,具備 plugins選項,以及對 rules 的配置。

    需要說明的是:為了復用上面 configs.always 的配置,我們可以在項目的.eslintrc.* 文件中 extends 選項加上如下代碼:

    module.exports = {extends: ['plugin:@baidu/san-native/always'] };

    因此 ESlint 插件以及配置文件的區(qū)別可以總結如下:

    • plugin 插件主要涉及自定義規(guī)則的具體實現(xiàn),同時還能夠提供配置
    • extend 配置主要涉及規(guī)則的具體配置

    ESlint 的工作原理

    接下來介紹 ESlint 是如何處理各種配置文件的,以及插件與配置文件中各字段在 ESlint 中的作用。ESlint 提供了命令行的方式來檢測某個文件的代碼,比如,我們想對.san 文件進行檢查,那么可以通過下面的命令來實現(xiàn):

    eslint --ext .san src/app/component/animate/index.san

    當我們執(zhí)行命令行的時候,ESlint 的工作原理如下圖所示:

    從上圖當中我們可以看到,文件的字符串內容首先會被插件的 prepocess 處理,然后處理的結果被 parser 解析成對應的 AST,然后遍歷 AST 的同時執(zhí)行每個規(guī)則提供的方法,最后得到的檢測結果會被 postprocess 處理。因此 ESlint 插件中的 processors 屬性給開發(fā)者提供了操作字符串源碼以及處理檢測結果的能力。接下來分析 ESlint 配置中的一些字段在檢測過程中的作用:

    *處理.eslintrc.配置文件

  • extends:以【配置的復用方案】中的代碼為例,其中 @ecomfe/eslint-config 以及@ecomfe/eslint-config/san 會被合并,按照在數(shù)組中的順序,相同的選項,后者的配置會覆蓋前者。比如,前者的配置中parser: @babel/eslint-parser 會被后者的 parser: 'san-eslint-parser’替換,plugins,rules 都會被收集到一個對象當中,收集的規(guī)則為當前配置中的 rules 會被當前配置中extends,plugins 的配置規(guī)則覆蓋。
  • root:由于在讀取配置文件的時候,會根據(jù)傳入的 filePath 依次往上查找對應的文件,并將配置文件解析出來。當某個配置文件設置了 root 為 true 的時候,會停止繼續(xù)向上搜索。
  • plugins:該字段決定了最終處理某類文件的 processor 是哪個插件提供的,舉例來說,當 A 與 B 中都申明了對.san文件處理的 processor,如果按照下面的配置,ESlint 最終會用 B 插件提供的 processor 處理.san文件,如果將 plugins 字段中兩個插件互換位置,則 ESlint 最終會用 A 插件提供的processor??偟膩碚f,ESlint 會從 plugins 字段申明的插件中從后向前找到第一個用于處理.san 文件的processor。
  • module.exports = {plugins: ["A","B"],extends: ["plugin:A/base","plugin:B/base"] };

    將文件內容解析成 AST

  • parser 選項:當使用了自定義的 parser 之后,那么文件的內容將會被自定義 parser 解析成 AST,否則會使用默認的parser,即 eslint 提供的 espree
  • parserOptions:該選項是當前 parser 的 option,每一個 rule 以及自定義 parser都能夠獲取到該選項的值。
  • 收集與執(zhí)行 rule 生成的 visitor

    當解析器將字符串解析成 AST 之后,在遍歷 AST 的過程中會根據(jù)當前的節(jié)點類型執(zhí)行對應的一些列提前注冊好的 vistor。

  • 調用每個 rule 的 create 函數(shù)收集 visitor:create 函數(shù)必須返回一個 visitor,即 key 為 AST節(jié)點類型,value 為一個接收該節(jié)點的函數(shù),ESlint 將 create 函數(shù)返回的 vistor 注冊到內部維護的訂閱發(fā)布器上。
  • 遍歷 AST:遍歷的過程中會通過訂閱發(fā)布器執(zhí)行執(zhí)行收集過程中注冊的所有 vistor
  • eslint-plugin-san-native 的實現(xiàn)

    經(jīng)過上述 ESlint 的工作原理的了解之后,我們開始介紹如何實現(xiàn) eslint-plugin-san-native 來解決我們的問題,以下面的單文件組件為例:

    <template><div></div> </template> <script>import Test from './index.san';export default {} </script> <style lang="less">.a {} </style>

    有以下兩點需要考慮的地方

  • 如何將.san 文件代碼解析成 AST:顯然無法直接使用 @babel/eslint-parser 或者@typescript-eslint/parser 來進行解析,因此我們需要用自定義解析器來處理,這部分的工作san-eslint-parser 已經(jīng)幫我們處理了,后續(xù)在規(guī)則實現(xiàn)的時候進行分析。
  • 如何處理 style中的樣式:由于 san-eslint-parser 不會處理.san 文件中 style>部分代碼,因此我們需要單獨處理,這里借助 postcss 對 style部分進行解析。
  • 項目構建

    構建的項目目錄結構如下

    入口文件 eslint-plugin-san-native/lib/index.js 的代碼如下:

    module.exports = {rules: {'no-style-float': require('./rules/no-style-float'),// ...},processors: {'.san': require('./processor'),// ...},configs: {always: {plugins: ['@baidu/san-native'],rules: {'@baidu/san-native/no-style-float': 'error',}},// ...} };

    下面我們分別實現(xiàn) processor 以及 rule。

    processor 的實現(xiàn)

    根據(jù) ESlint 工作原理可知,ESlint 在獲取到字符串源碼的時候,會先利用插件提供的 preprocess 處理字符串源碼,接著利用 parser 解析成 ast,然后將各個 ast 節(jié)點交給 rule 處理,接著處理后的檢測結果交給 postprocess 處理,最后再執(zhí)行 fix。因此,從 preprocess 到 postprocess 的過程中,處理的文件內容是不變的(ast 會被 Object.freeze 處理),因此,我們可以在 preprocess 中將.san 中的 style 獲取之后,利用 postcss 將其解析成 ast,并存儲起來供后續(xù)所有 rule 共享。

    獲取 style對應的 AST

    const postcss = require('postcss'); const syntaxs = {less: require('postcss-less'),sass: require('postcss-sass'),scss: require('postcss-scss') }; const processor = postcss([() => {}]); module.exports = {getAst(syntax, content, plugins) {let ast = null;try {ast = syntax ? processor.process(content, {syntax}).sync(): processor.process(content).sync();} catch (error) {}return ast;},getStyleContentInfo(text) {const lines = text.split('\n');const content = /()([\s\S]*?)&lt;\/style&gt;/gi.exec(text);const langMatch = /\slang\s*=\s*("[^"]*"|'[^']*')/.exec(content[1]);const lang = langMatch[1].replace(/["'\s]/gi, '');const astFn = lang ? this.getAst : this.getAst.bind(null, syntaxs[lang]);return {startLine: lines.indexOf(content[1]),ast: astFn(content[3]),startOffset: text.indexOf(content[3])};} };

    上面的代碼根據(jù) style中的 lang 字段,調用不同的 parser 對樣式內容進行解析,并獲取到代碼塊 style 所在的行數(shù) startLine 以及所處文件的位置 startOffset,這些數(shù)據(jù)都是用來修正樣式 ast 節(jié)點位置的,這樣 eslint 才能在輸出錯誤信息的時候找到樣式在文件中的真實位置。當然這里也可以直接利用 postcss-syntax 提供的 syntax 傳入 postcss(defaultPlugins).process 函數(shù)中,該 syntax 可以自動根據(jù)文件名稱或者代碼內容自動選擇正確的語法解析器。

    processor

    const {styleAstCache} = require('./utils/cache'); module.exports = {preprocess(code, filename) {// 所有.san 都會處理styleAstCache.storeAst(styleHelper.getStyleContentInfo(code));return [code];},postprocess(messages) {// 清除數(shù)據(jù)styleAstCache.storeAst(null);return messages[0];} };

    在各個規(guī)則中只需要引入 styleAstCache,并調用 styleAstCache.getAst 即可獲取到樣式代碼的 AST,styleAstCache 在這里只是用于存儲 ast 而已。

    規(guī)則的實現(xiàn)

    由于規(guī)則的實現(xiàn)依賴于自定義 parser 提供的 ast,因此我們需要先對 san-eslint-parser 的原理有一定的了解,那么我們將現(xiàn)分析其原理,然后介紹幾類規(guī)則的實現(xiàn)方案。

    san-eslint-parser

    自定義 parser 需要提供 parseForESLint 方法,我們這里只關注該方法返回結果中的部分屬性 (更多屬性見官方):

    • ast:AST 根節(jié)點
    • services:自定義 parser 為 rule 提供的服務,每條規(guī)則可以通過 context.parserServices 訪問到

    ast

    san-eslint-parser 會將我們.san 的文件內容利用分成三個 block,其中利用 parserOPtions.parser 指定的解析器來處理 script 部分的內容,script 中如果是 JavaScript 代碼則 parserOPtions.parser 為 @babel/eslint-parser,如果是 Typescript 代碼則為 @typescript-eslint/parser。style 部分不會處理,template 部分當作 HTML 來解析。

    上圖所示為自定義 parser 生成的 AST,根節(jié)點的 type 為 Program,根節(jié)點的 body 屬性存儲了 script 代碼的 ast,根節(jié)點上的 templateBody 為 template 部分的 ast。由于 ESlint 只會遍歷根節(jié)點以及 body 上的節(jié)點,因此如果我們想為 templateBody 注冊 visitor,那么可以通過 services 來實現(xiàn)。

    services

    san-eslint-parser 會在 services 屬性上定義三個方法,我們只關注其中一個,簡化后的代碼如下:

    let emitter = null; // 發(fā)布訂閱器 function defineTemplateBodyVisitor(templateBodyVisitor) {let scriptVisitor = {};if (!emitter) {emitter = new EventEmitter();scriptVisitor["Program"] = node => {traverseNodes(rootAST.templateBody)};}for (const selector of Object.keys(templateBodyVisitor)) {emitter.on(selector, templateBodyVisitor[selector]);}return scriptVisitor; }

    該方法主要完成了兩部分的工作:

  • 收集每條 rule 中針對 templateBody 的 visitor:該方法接收的參數(shù)為templateBodyVisitor,該對象存儲了所有針對 templateBody 的 visitor,這些 visitor會注冊到自定義 parser 內部的發(fā)布訂閱器上。
  • 返回一個針對 script 對應的 AST 的 visitor:該 visitor 的 type 為 Program,根據(jù)上文中ESlint 工作原理一節(jié),我們可以知道,ESlint 在遍歷 AST 的過程中,當遇到類型為 Program 的根節(jié)點時,會執(zhí)行該visitor,并且該 visitor 會調用自定義 parser 內部方法對 templateBody 存儲的 AST 進行遍歷。
  • 因此,我們可以利用上述方法在每條 rule 中編寫相關的 visitor 來處理 templateBody 中不同 type 類型語法節(jié)點,如下代碼所示:

    module.exports = {meta: {...},create(context) {return context.parserServices.defineTemplateBodyVisitor(context, {'VElement'(node) {// do something},'VText'(node) {// do something}});} };

    屬性規(guī)則

    在 template 模板中,我們需要檢測某個標簽上的事件,內聯(lián)樣式,必選屬性三種內容,為了避免重復代碼,希望通過配置的方式實現(xiàn)規(guī)則。首先定義內置組件的描述信息,舉例來說:

    {"name": "lottie-view", // 標簽名稱"events": [ // 支持的事件"click","touchstart","touchmove","touchend","touchcancel","layout","longclick","pressin","pressout","firstmeaningfulpaint","animationfinish","downloadfinish"],"attributes": { "required": [],"oneOf": [["src", "source"]], // 必須的可選屬性"content": {}},"style": {"required": [],"notsurpport": []},"nestedTag": [] // 允許的子標簽 }

    上面的描述信息中依次定義了標簽名稱,支持的事件,必選的屬性,不支持 / 必須的內聯(lián)樣式,以及允許的子標簽名稱。描述信息的另一個優(yōu)勢是當組件庫更新或者添加組件的時候,只需要在組件中維護這樣的信息,則可以在不發(fā)布新版本 ESlint 插件的時候應用到組件新的規(guī)則。

    在上文中已經(jīng)介紹了如何在規(guī)則中通過編寫相關的 visitor 來處理 templateBody 中不同 type 類型語法節(jié)點,因此我們只需要對節(jié)點的相關數(shù)據(jù)進行一些判斷,就可以實現(xiàn)代碼檢測。判斷的邏輯這里不再介紹,只貼上一個 VElement 中需要關注的節(jié)點屬性:

    上圖中是下面標簽對應的節(jié)點數(shù)據(jù),為了獲取標簽的屬性,我們可以從 startTag.attributes 中獲取,可以看到其中屬性名稱為 style 的節(jié)點數(shù)據(jù)。

    <div style="background-color:#fff; flex:1">...</div>

    樣式規(guī)則

    對于樣式規(guī)則來說,我們需要同時檢測 tempate 上的內聯(lián)樣式,也需要檢測 style塊中的樣式代碼,簡化后的規(guī)則代碼如下:

    module.exports = {meta: {...},create(context) {return context.parserServices.defineTemplateBodyVisitor(context, {'VElement[name="template"]'(node) {const {ast: result, startLine, startOffset} = styleAstCache.getAst();if (result && result.root) {result.root.walkDecls(decl => {// do something});}},VAttribute(node) {const name = utils.getName(node);if (name == null) {return;}if (name === 'style' && node.value && node.value.value) {let styleValArr = inlineStyleParser(node.value.value);styleValArr.forEach(decl => {// do something});}}});} };

    可以看到我們對 template 對應的 AST 定義了兩個 visitor,第一個 visitor 用于獲取 VElement 并且節(jié)點名稱是 template 的語法節(jié)點,在該節(jié)點的 visitor 中,利用 postcss 提供的 API 遍歷 style對應的 ast。第二個 visitor 用于檢測 template 中每個標簽上 style 屬性中的內聯(lián)樣式。

    在 vscode 中的檢測效果

    在每一條規(guī)則中,當發(fā)現(xiàn)不符合規(guī)則的代碼時,我們可以通過 context.report 將對應的 ast 語法節(jié)點 / 位置信息以及錯誤信息提供給 ESlint

    // 提供節(jié)點 context.report({node: node,messageId: "..." }); // 提供位置信息:loc context.report({loc: node.loc,message: "..." });

    這樣 ESlint 能夠通過 vscode 中的插件對錯誤代碼進行高亮,從而實現(xiàn)在編譯前提示代碼中不支持的樣式,事件,嵌套規(guī)則等等。

    05stylelint-plugin-san-native

    到此,我們介紹了如何開發(fā) ESlint 插件檢測.san/.js/.ts 文件中的 san 組件,下面介紹如何開發(fā) StyleLint 插件來檢測.less/.sass/.scss/.styl 文件中的樣式代碼。StyleLint 提供了類似 ESlint 的配置方式,可以在配置文件.stylelintrc.* 中 extends 多個配置文件,對單個 rule 進行配置,支持通過編寫插件實現(xiàn)自定義的規(guī)則,支持使用 processor 在開始檢測之前對源碼字符串進行修改,并在結果輸出之前對檢測結果進行修改。

    StyleLint 工作原理

    下圖為 StyleLint 的工作流程圖,這里的 processor.code 相當于 ESlint 中的 preprocess,而 processor.result 相當于 ESlint 中的 postprocess。StyleLint 與 ESlint 的工作原理非常相似,從整體上來說,processor.code 與 processor.result 之間的過程與 ESLint 有區(qū)別,StyleLint 中會遍歷所有 rules,然后將 AST 根節(jié)點交給每個 rule 進行遍歷,而不像 ESlint 中需要自己遍歷 AST。

    StyleLint 規(guī)則

    從上文 StyleLint 的工作流程分析可以知道,StyleLint 的規(guī)則接收一個 AST 根節(jié)點以及配置數(shù)據(jù),因此其規(guī)則示例代碼如下:

    module.exports = function rule(primary, secondary, context) {return (root, result) => {}; };

    其中,primary 以及 secondary 為 rule 配置的時候填寫的配置,舉例來說:

    "rules": {"block-no-empty": null, // primary 為 null"color-no-invalid-hex": true, // primary 為 true"comment-empty-line-before": [ "always", // primary 為 always{"ignore": ["stylelint-commands", "between-comments"]} // secondary] }

    StyleLint 插件

    只需要將 rule 利用 StyleLint 提供的方法處理后即可生成一個插件,并且需要提供 ruleName 以及 messages

    const stylelint = require("stylelint"); const ruleName = "plugin/xxx"; const messages = stylelint.utils.ruleMessages(ruleName, {expected: "Expected ..." }); module.exports = stylelint.createPlugin(ruleName,function (primary, secondary, context) {return function (root, result) {// ...stylelint.utils.report({/* .o. */});};} ); module.exports.ruleName = ruleName; module.exports.messages = messages;

    stylelint-plugin-san-native 實現(xiàn)

    構建的項目目錄結構如下:

    其中入口文件 index.js 的簡化代碼如下:

    module.exports = [stylelint.createPlugin(...),stylelint.createPlugin(...),// ... ]

    同時提供了兩份配置文件分別為:always.js 以及 temporary.js,下面為 always.js 的代碼:

    module.exports = {plugins: ['.'],rules: {'@baidu/stylelint-plugin-san-native/no-flex-basis': true,// ...} };

    在實際工程項目的.stylelintrc.js 中可以通過 extends 字段復用配置文件,比如:

    module.exports = {extends: ['@baidu/stylelint-plugin-san-native/always','@baidu/stylelint-plugin-san-native/temporary'],rules: {}

    由于篇幅有限,我們只對一個具體的規(guī)則實現(xiàn)進行介紹,比如在 san-native 中并不支持樣式屬性 justify-content 的值被設置為 baseline,因此我們需要對該屬性的值進行檢測以及報錯處理,規(guī)則的部分關鍵代碼如下:

    const {utils} = require('stylelint'); const getDeclarationValue = require('stylelint/lib/utils/getDeclarationValue'); const declarationValueIndex = require('stylelint/lib/utils/declarationValueIndex'); const valueParser = require('postcss-value-parser'); const meta = {styleName: 'justify-content',message: `Only some values of '${styleName}' are supported in sna-native`,surrpportValue: ['flex-start', 'flex-end', 'center', 'space-between', 'space-around'] }; const ruleName = `stylelint-plugin-san-native/valid-justify-content`; const messages = utils.ruleMessages(ruleName, {expected: () => meta.message }); module.exports = function rule(primary) {return (root, result) => {const validOptions = utils.validateOptions(result, ruleName, {primary});if (!validOptions || !primary) { return; }root.walkDecls(decl => {// 將declaration語法節(jié)點上屬性鍵值對解析成ASTconst parsed = valueParser(getDeclarationValue(decl));// 遍歷每個屬性值對應的節(jié)點parsed.walk(node => {if (meta.surrpportValue.indexOf(node.value) < 0) {utils.report({// 獲取declaration語法節(jié)點中屬性值部分在與declaration語法節(jié)點開始位置的偏移量index: declarationValueIndex(decl) + node.sourceIndex,message: messages.expected(),node: decl,ruleName,result});}});});}; }; module.exports.ruleName = ruleName; module.exports.messages = messages;

    在對代碼進行分析之前,我們需要了解 postcss 返回的 AST 的兩個關鍵點:

    1.屬性聲明與賦值會被解析成類型為 declaration 的語法節(jié)點,舉例如下:

    justify-content: baseline;

    2.可以通過 AST 上的 walkDecls 方法獲取 AST 樹中的每個類型為 declaration 的語法節(jié)點,該方法是由 postcss 提供,更多的方法可見 postcss 官方文檔

    上面代碼中 rule 函數(shù)利用 root.walkDecls 遍歷語法樹中的 declaration 語法節(jié)點,并且每個 declaration 語法節(jié)點會被傳入 root.walkDecls 接收的回調函數(shù)中,在該回調函數(shù)中如果發(fā)現(xiàn)屬性值在 san-native 中不支持,則需要通過 stylelint.utils.report 將錯誤信息,發(fā)生錯誤的節(jié)點,以及屬性值偏移量,當前規(guī)則名稱傳遞給 StyleLint,這樣 StyleLint 才能夠定位到不規(guī)范代碼的位置。同時借助編輯器插件將不符合代碼規(guī)范的代碼高亮出來,以 vscode 為例,進行如下的高亮提示:

    06 總結

    至此,我們介紹了如何實現(xiàn) ESlint 以及 StyleLint 的插件來檢測 san-native 項目中不符合規(guī)定的代碼,并從底層原理的角度上介紹了插件里各個字段以及方法在檢測過程中的作用,希望能對大家有所幫助。

    文章看完,還不過癮?
    更多精彩內容歡迎關注百度開發(fā)者中心公眾號

    總結

    以上是生活随笔為你收集整理的百度工程师手把手教你实现代码规范检测工具的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

    午夜福利试看120秒体验区 | 夫妻免费无码v看片 | 国产成人精品优优av | 国产在线一区二区三区四区五区 | 欧美日韩亚洲国产精品 | 少妇邻居内射在线 | 俺去俺来也在线www色官网 | 国产乱子伦视频在线播放 | 亲嘴扒胸摸屁股激烈网站 | 国内精品久久久久久中文字幕 | 亚洲精品久久久久avwww潮水 | 狂野欧美性猛xxxx乱大交 | 人人妻人人澡人人爽欧美一区 | 美女扒开屁股让男人桶 | 欧美日韩精品 | 国产 浪潮av性色四虎 | 无码人妻丰满熟妇区毛片18 | 美女毛片一区二区三区四区 | 国产无遮挡吃胸膜奶免费看 | 无码吃奶揉捏奶头高潮视频 | 国产成人av免费观看 | 国产特级毛片aaaaaa高潮流水 | 欧美丰满老熟妇xxxxx性 | 国内丰满熟女出轨videos | 欧美精品一区二区精品久久 | 亚洲日韩精品欧美一区二区 | 国产亚洲美女精品久久久2020 | 日韩成人一区二区三区在线观看 | 在线а√天堂中文官网 | 欧美三级不卡在线观看 | 欧美大屁股xxxxhd黑色 | 亚洲人成影院在线无码按摩店 | 国产熟女一区二区三区四区五区 | 国产精品第一区揄拍无码 | 天干天干啦夜天干天2017 | 亚洲爆乳精品无码一区二区三区 | 国产成人精品一区二区在线小狼 | 乱人伦人妻中文字幕无码久久网 | 国产精品无码一区二区三区不卡 | 国产成人无码区免费内射一片色欲 | 亚洲乱码国产乱码精品精 | 成人无码精品1区2区3区免费看 | 精品成在人线av无码免费看 | 久久综合给久久狠狠97色 | 欧美熟妇另类久久久久久不卡 | 国产午夜精品一区二区三区嫩草 | 日韩av激情在线观看 | 国产高清不卡无码视频 | 粗大的内捧猛烈进出视频 | 精品国产成人一区二区三区 | 欧美黑人乱大交 | 无码乱肉视频免费大全合集 | 国产黄在线观看免费观看不卡 | 国产热a欧美热a在线视频 | 亚洲国产日韩a在线播放 | 色婷婷欧美在线播放内射 | 国产激情无码一区二区 | 成人无码影片精品久久久 | 久久熟妇人妻午夜寂寞影院 | 国产区女主播在线观看 | 国产精品福利视频导航 | 成年美女黄网站色大免费视频 | 国产凸凹视频一区二区 | 鲁鲁鲁爽爽爽在线视频观看 | 欧洲欧美人成视频在线 | 中文字幕无码视频专区 | 天堂亚洲免费视频 | 亚洲乱码国产乱码精品精 | 嫩b人妻精品一区二区三区 | 午夜福利试看120秒体验区 | 国模大胆一区二区三区 | 久久久久成人精品免费播放动漫 | 精品水蜜桃久久久久久久 | 丰满人妻一区二区三区免费视频 | 久久伊人色av天堂九九小黄鸭 | 亚洲人成无码网www | 亚洲理论电影在线观看 | 中文精品久久久久人妻不卡 | 中文字幕日产无线码一区 | 丝袜足控一区二区三区 | 国精产品一区二区三区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 精品国产一区av天美传媒 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产精品人人妻人人爽 | 乱码av麻豆丝袜熟女系列 | 国产午夜福利亚洲第一 | 国产极品美女高潮无套在线观看 | 国产成人av免费观看 | 亚洲色大成网站www国产 | 黑人玩弄人妻中文在线 | 好爽又高潮了毛片免费下载 | 在线观看欧美一区二区三区 | 十八禁真人啪啪免费网站 | 性欧美牲交xxxxx视频 | 色老头在线一区二区三区 | 日本精品高清一区二区 | 国产精品无码一区二区三区不卡 | 欧美老妇与禽交 | 无码人妻出轨黑人中文字幕 | 欧美精品国产综合久久 | 性色av无码免费一区二区三区 | 激情亚洲一区国产精品 | 蜜桃臀无码内射一区二区三区 | 黑人玩弄人妻中文在线 | 无码任你躁久久久久久久 | 成人亚洲精品久久久久 | 国产超碰人人爽人人做人人添 | 中文字幕人妻无码一区二区三区 | 欧美 丝袜 自拍 制服 另类 | 亚洲色欲色欲欲www在线 | 清纯唯美经典一区二区 | 久久99精品久久久久久 | 思思久久99热只有频精品66 | 装睡被陌生人摸出水好爽 | 丰满诱人的人妻3 | 久久久久久a亚洲欧洲av冫 | 成人综合网亚洲伊人 | 少妇邻居内射在线 | 正在播放东北夫妻内射 | 亚洲精品国偷拍自产在线观看蜜桃 | 无码人妻av免费一区二区三区 | 亚洲人交乣女bbw | 欧美成人免费全部网站 | 国产午夜亚洲精品不卡下载 | 性生交大片免费看女人按摩摩 | 久久久久久久久888 | 国产 精品 自在自线 | 国产一区二区三区精品视频 | 麻豆国产人妻欲求不满 | 无码福利日韩神码福利片 | 亚洲国产一区二区三区在线观看 | 精品久久久无码人妻字幂 | 国产xxx69麻豆国语对白 | 粉嫩少妇内射浓精videos | 国产超级va在线观看视频 | 日本精品高清一区二区 | 中文精品无码中文字幕无码专区 | 国产精品久免费的黄网站 | 夫妻免费无码v看片 | 四虎影视成人永久免费观看视频 | 黑人玩弄人妻中文在线 | 中文无码伦av中文字幕 | а√天堂www在线天堂小说 | 久久精品视频在线看15 | 成人欧美一区二区三区黑人免费 | 久久午夜夜伦鲁鲁片无码免费 | 国产国语老龄妇女a片 | 2019午夜福利不卡片在线 | 中文字幕+乱码+中文字幕一区 | 在线a亚洲视频播放在线观看 | 澳门永久av免费网站 | 久久午夜无码鲁丝片秋霞 | 国产片av国语在线观看 | 国内揄拍国内精品少妇国语 | 久久综合九色综合欧美狠狠 | 少妇久久久久久人妻无码 | 国产高清不卡无码视频 | 日韩成人一区二区三区在线观看 | 国产熟妇高潮叫床视频播放 | 国产 浪潮av性色四虎 | 中文字幕乱码人妻二区三区 | 一个人看的视频www在线 | 色婷婷久久一区二区三区麻豆 | 亚无码乱人伦一区二区 | 亚洲va中文字幕无码久久不卡 | 欧美熟妇另类久久久久久不卡 | 搡女人真爽免费视频大全 | 久久综合久久自在自线精品自 | 97se亚洲精品一区 | 亚洲国产精品久久人人爱 | 97夜夜澡人人爽人人喊中国片 | 老熟妇乱子伦牲交视频 | 高清无码午夜福利视频 | 国产97人人超碰caoprom | 亚洲区欧美区综合区自拍区 | 精品久久久无码人妻字幂 | 日本丰满熟妇videos | 给我免费的视频在线观看 | 永久免费精品精品永久-夜色 | 无遮挡国产高潮视频免费观看 | 欧美成人午夜精品久久久 | 熟女少妇在线视频播放 | 久久久精品人妻久久影视 | 中文无码成人免费视频在线观看 | 樱花草在线播放免费中文 | 日韩欧美中文字幕公布 | 免费观看黄网站 | 午夜男女很黄的视频 | 人妻人人添人妻人人爱 | 久久www免费人成人片 | 麻豆蜜桃av蜜臀av色欲av | 国产综合在线观看 | 亚洲人成人无码网www国产 | 色婷婷av一区二区三区之红樱桃 | 给我免费的视频在线观看 | 国产午夜亚洲精品不卡 | 蜜桃臀无码内射一区二区三区 | 青青久在线视频免费观看 | 国产精品久久久午夜夜伦鲁鲁 | 日本爽爽爽爽爽爽在线观看免 | 亚洲成a人片在线观看无码 | 国产成人精品视频ⅴa片软件竹菊 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 六月丁香婷婷色狠狠久久 | 野外少妇愉情中文字幕 | ass日本丰满熟妇pics | 亚洲一区二区三区国产精华液 | 色欲久久久天天天综合网精品 | 东京热无码av男人的天堂 | 精品无码一区二区三区的天堂 | 51国偷自产一区二区三区 | 黑森林福利视频导航 | 国产精品人人爽人人做我的可爱 | 久久久久成人精品免费播放动漫 | 精品厕所偷拍各类美女tp嘘嘘 | 无码帝国www无码专区色综合 | 日韩精品无码一区二区中文字幕 | 97久久超碰中文字幕 | 精品国产精品久久一区免费式 | aa片在线观看视频在线播放 | 中文字幕无码视频专区 | 东北女人啪啪对白 | 秋霞成人午夜鲁丝一区二区三区 | 欧美日韩亚洲国产精品 | 麻豆精产国品 | 性色欲网站人妻丰满中文久久不卡 | 精品水蜜桃久久久久久久 | 人人澡人人透人人爽 | 日韩精品无码一区二区中文字幕 | 日日天干夜夜狠狠爱 | 人人澡人人透人人爽 | 国产区女主播在线观看 | 国产欧美熟妇另类久久久 | 国产成人综合在线女婷五月99播放 | 大乳丰满人妻中文字幕日本 | 激情内射亚州一区二区三区爱妻 | 国产无遮挡又黄又爽免费视频 | 在线成人www免费观看视频 | 久久午夜无码鲁丝片午夜精品 | 小sao货水好多真紧h无码视频 | 女高中生第一次破苞av | 久久综合狠狠综合久久综合88 | 欧美性猛交内射兽交老熟妇 | 国产疯狂伦交大片 | 水蜜桃亚洲一二三四在线 | 欧美 丝袜 自拍 制服 另类 | 国产精品久久国产三级国 | 亚洲中文字幕va福利 | 国内精品久久久久久中文字幕 | 亚洲精品中文字幕久久久久 | 亚洲国产欧美在线成人 | aⅴ在线视频男人的天堂 | 99精品国产综合久久久久五月天 | 色综合久久中文娱乐网 | 国产人妻久久精品二区三区老狼 | 亚洲国产欧美国产综合一区 | 性做久久久久久久免费看 | 久9re热视频这里只有精品 | 妺妺窝人体色www在线小说 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产亚洲精品久久久久久久 | 99在线 | 亚洲 | 久久精品中文字幕大胸 | 日韩欧美中文字幕在线三区 | 亚洲欧美综合区丁香五月小说 | 免费观看又污又黄的网站 | 亚洲成色在线综合网站 | 成人无码精品一区二区三区 | 中文字幕无码热在线视频 | 无遮无挡爽爽免费视频 | 无遮无挡爽爽免费视频 | 亚洲热妇无码av在线播放 | 久久久久久九九精品久 | 在线成人www免费观看视频 | 日韩av无码一区二区三区 | 又大又黄又粗又爽的免费视频 | 天天躁日日躁狠狠躁免费麻豆 | 中文无码成人免费视频在线观看 | 亚洲精品中文字幕乱码 | 内射后入在线观看一区 | 国产特级毛片aaaaaa高潮流水 | 国产在线精品一区二区高清不卡 | 国产热a欧美热a在线视频 | 久久久无码中文字幕久... | 日韩精品a片一区二区三区妖精 | 女人被男人躁得好爽免费视频 | 色综合久久久无码网中文 | 特级做a爰片毛片免费69 | 久久久精品人妻久久影视 | 搡女人真爽免费视频大全 | 日韩欧美中文字幕在线三区 | 国产综合久久久久鬼色 | 久久精品中文闷骚内射 | 亚洲成a人片在线观看日本 | 亚洲啪av永久无码精品放毛片 | 国产精品va在线观看无码 | 久久综合香蕉国产蜜臀av | 性欧美熟妇videofreesex | 日本熟妇大屁股人妻 | 99久久精品午夜一区二区 | 玩弄少妇高潮ⅹxxxyw | 国产精品久久久久影院嫩草 | 无码av免费一区二区三区试看 | 最新版天堂资源中文官网 | 免费人成网站视频在线观看 | 国产特级毛片aaaaaaa高清 | 久久99热只有频精品8 | 日韩在线不卡免费视频一区 | 麻豆精产国品 | 无码纯肉视频在线观看 | 中文字幕乱妇无码av在线 | 日韩欧美成人免费观看 | 久久99精品国产麻豆 | 人妻无码久久精品人妻 | 亚洲欧美国产精品久久 | 98国产精品综合一区二区三区 | 好爽又高潮了毛片免费下载 | 国产人成高清在线视频99最全资源 | 久久久久99精品国产片 | 久久午夜无码鲁丝片秋霞 | 午夜无码人妻av大片色欲 | 久久午夜无码鲁丝片午夜精品 | 亚洲自偷自拍另类第1页 | 国产97色在线 | 免 | 久久99热只有频精品8 | 欧美性生交活xxxxxdddd | 中文字幕精品av一区二区五区 | 国内精品一区二区三区不卡 | 日本在线高清不卡免费播放 | 乱码午夜-极国产极内射 | 香蕉久久久久久av成人 | 性开放的女人aaa片 | 天堂а√在线中文在线 | 婷婷五月综合激情中文字幕 | 亚洲精品无码人妻无码 | 国产后入清纯学生妹 | 亚洲国产欧美国产综合一区 | 男人扒开女人内裤强吻桶进去 | 国产无遮挡又黄又爽又色 | 国内精品久久毛片一区二区 | 日本一卡二卡不卡视频查询 | 午夜福利电影 | 免费乱码人妻系列无码专区 | 国产在线精品一区二区高清不卡 | 无码一区二区三区在线观看 | 久久国产36精品色熟妇 | 欧美大屁股xxxxhd黑色 | 99国产精品白浆在线观看免费 | 性欧美熟妇videofreesex | av人摸人人人澡人人超碰下载 | 精品久久久久久人妻无码中文字幕 | 亚洲色www成人永久网址 | 国内精品九九久久久精品 | 亚洲国产欧美日韩精品一区二区三区 | 激情内射日本一区二区三区 | a片免费视频在线观看 | 久久久久久久人妻无码中文字幕爆 | 国产av人人夜夜澡人人爽麻豆 | 日本又色又爽又黄的a片18禁 | 中文字幕av伊人av无码av | 欧洲精品码一区二区三区免费看 | 噜噜噜亚洲色成人网站 | 久久久久99精品国产片 | 麻豆av传媒蜜桃天美传媒 | 亚洲啪av永久无码精品放毛片 | 日韩少妇白浆无码系列 | 欧美日韩人成综合在线播放 | 无码国产色欲xxxxx视频 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久伊人色av天堂九九小黄鸭 | 精品久久久无码人妻字幂 | 国产国产精品人在线视 | 久久综合给合久久狠狠狠97色 | 欧美黑人性暴力猛交喷水 | 日韩人妻系列无码专区 | 综合激情五月综合激情五月激情1 | 欧美黑人巨大xxxxx | 国产人妻人伦精品1国产丝袜 | 欧洲极品少妇 | 国产黑色丝袜在线播放 | 高潮毛片无遮挡高清免费视频 | 亚洲国产成人a精品不卡在线 | 在线观看免费人成视频 | 亚洲最大成人网站 | 亚洲中文字幕av在天堂 | 国产在线精品一区二区高清不卡 | 18无码粉嫩小泬无套在线观看 | 欧美丰满少妇xxxx性 | 男女猛烈xx00免费视频试看 | 婷婷丁香五月天综合东京热 | 亚洲小说春色综合另类 | 午夜福利试看120秒体验区 | 亚洲人成影院在线无码按摩店 | 中文字幕av无码一区二区三区电影 | 永久免费观看国产裸体美女 | 中文字幕 人妻熟女 | 精品无码一区二区三区爱欲 | 一本大道伊人av久久综合 | 国产精品va在线播放 | 人人妻人人澡人人爽人人精品 | 国产在线精品一区二区三区直播 | 精品无码av一区二区三区 | 色五月丁香五月综合五月 | 免费观看又污又黄的网站 | 色妞www精品免费视频 | 又紧又大又爽精品一区二区 | 在线看片无码永久免费视频 | 欧美日韩一区二区免费视频 | 欧美肥老太牲交大战 | 精品国产乱码久久久久乱码 | 国产无套内射久久久国产 | 国产超碰人人爽人人做人人添 | 久久久久久亚洲精品a片成人 | 中文字幕日韩精品一区二区三区 | 一本精品99久久精品77 | 永久黄网站色视频免费直播 | 国产一区二区三区日韩精品 | 国产精品人妻一区二区三区四 | 国产精品人妻一区二区三区四 | 帮老师解开蕾丝奶罩吸乳网站 | www一区二区www免费 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久国产精品偷任你爽任你 | 亚洲人成无码网www | 中文无码成人免费视频在线观看 | 欧美怡红院免费全部视频 | 欧美阿v高清资源不卡在线播放 | 国产综合色产在线精品 | 男人扒开女人内裤强吻桶进去 | 鲁一鲁av2019在线 | 人妻少妇被猛烈进入中文字幕 | 成人精品视频一区二区三区尤物 | 俄罗斯老熟妇色xxxx | 熟女少妇人妻中文字幕 | 熟妇人妻中文av无码 | 久久精品女人的天堂av | 少妇人妻偷人精品无码视频 | 欧美阿v高清资源不卡在线播放 | 四十如虎的丰满熟妇啪啪 | 亚洲中文字幕在线无码一区二区 | www国产精品内射老师 | 国产香蕉尹人综合在线观看 | 久久综合网欧美色妞网 | 亚洲精品一区二区三区在线观看 | 动漫av网站免费观看 | 国产又粗又硬又大爽黄老大爷视 | 久久久久亚洲精品男人的天堂 | 国产高清不卡无码视频 | 激情内射日本一区二区三区 | 牲交欧美兽交欧美 | 亚洲阿v天堂在线 | 色窝窝无码一区二区三区色欲 | 丁香啪啪综合成人亚洲 | 久久97精品久久久久久久不卡 | 欧美黑人乱大交 | 日韩视频 中文字幕 视频一区 | 激情爆乳一区二区三区 | 波多野结衣一区二区三区av免费 | 亚洲熟妇自偷自拍另类 | 欧美野外疯狂做受xxxx高潮 | 一本无码人妻在中文字幕免费 | 亚洲精品国产第一综合99久久 | 亚洲熟女一区二区三区 | 国产尤物精品视频 | 日欧一片内射va在线影院 | 狠狠色噜噜狠狠狠狠7777米奇 | 成 人影片 免费观看 | 在线播放免费人成毛片乱码 | 色欲av亚洲一区无码少妇 | 牲欲强的熟妇农村老妇女 | 国产偷抇久久精品a片69 | 一本久久a久久精品亚洲 | 国产成人无码a区在线观看视频app | 中文无码伦av中文字幕 | 欧美熟妇另类久久久久久不卡 | 亚洲精品一区三区三区在线观看 | 人人爽人人爽人人片av亚洲 | 久久人人爽人人人人片 | 国产精品视频免费播放 | 国产又粗又硬又大爽黄老大爷视 | 一本久道高清无码视频 | 精品国产乱码久久久久乱码 | 久久久久亚洲精品男人的天堂 | 精品久久8x国产免费观看 | 丰满人妻翻云覆雨呻吟视频 | 久久精品国产一区二区三区 | 国产猛烈高潮尖叫视频免费 | 宝宝好涨水快流出来免费视频 | 一本久道久久综合婷婷五月 | 婷婷丁香六月激情综合啪 | 亚洲国产av精品一区二区蜜芽 | 在线播放无码字幕亚洲 | 中文字幕日产无线码一区 | 国产精品福利视频导航 | 俺去俺来也在线www色官网 | 日本饥渴人妻欲求不满 | 久久久久国色av免费观看性色 | 亚洲精品国产精品乱码不卡 | 国产精品igao视频网 | 理论片87福利理论电影 | 日韩人妻少妇一区二区三区 | 久久久中文字幕日本无吗 | 国产精品亚洲а∨无码播放麻豆 | 日本熟妇大屁股人妻 | 综合人妻久久一区二区精品 | 国精产品一区二区三区 | 国内精品九九久久久精品 | 亚洲日韩av一区二区三区中文 | 国产疯狂伦交大片 | 午夜福利不卡在线视频 | 一区二区三区乱码在线 | 欧洲 | 在线a亚洲视频播放在线观看 | 少女韩国电视剧在线观看完整 | 99riav国产精品视频 | 一本久道高清无码视频 | 成人欧美一区二区三区黑人 | 兔费看少妇性l交大片免费 | 亚洲人成网站在线播放942 | 欧美野外疯狂做受xxxx高潮 | 三级4级全黄60分钟 | 久久亚洲精品中文字幕无男同 | 强开小婷嫩苞又嫩又紧视频 | 免费无码肉片在线观看 | 狠狠色欧美亚洲狠狠色www | 一本精品99久久精品77 | 女人被男人躁得好爽免费视频 | 亚洲 日韩 欧美 成人 在线观看 | 中文毛片无遮挡高清免费 | 亚洲天堂2017无码中文 | 亚洲国产成人a精品不卡在线 | 日韩在线不卡免费视频一区 | 国产极品美女高潮无套在线观看 | 清纯唯美经典一区二区 | 色综合久久久久综合一本到桃花网 | 日日橹狠狠爱欧美视频 | 久久精品国产一区二区三区肥胖 | 精品久久久久久亚洲精品 | 国产乡下妇女做爰 | 亚洲一区二区三区四区 | 天干天干啦夜天干天2017 | 国产真实乱对白精彩久久 | a国产一区二区免费入口 | 小sao货水好多真紧h无码视频 | 国产莉萝无码av在线播放 | 全球成人中文在线 | 国产日产欧产精品精品app | 啦啦啦www在线观看免费视频 | 亚洲毛片av日韩av无码 | 中文字幕精品av一区二区五区 | 麻豆蜜桃av蜜臀av色欲av | 天天拍夜夜添久久精品大 | 成人aaa片一区国产精品 | 性生交片免费无码看人 | 青草青草久热国产精品 | 亚洲综合精品香蕉久久网 | 人人爽人人爽人人片av亚洲 | 夜先锋av资源网站 | 少妇性l交大片欧洲热妇乱xxx | 亚洲一区二区三区香蕉 | 日韩 欧美 动漫 国产 制服 | 欧美放荡的少妇 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产成人午夜福利在线播放 | 少妇高潮一区二区三区99 | 免费网站看v片在线18禁无码 | 97色伦图片97综合影院 | 国内揄拍国内精品少妇国语 | 偷窥日本少妇撒尿chinese | 婷婷丁香五月天综合东京热 | 九月婷婷人人澡人人添人人爽 | 欧美熟妇另类久久久久久不卡 | 亚洲国产精品一区二区美利坚 | 欧美熟妇另类久久久久久多毛 | 国产两女互慰高潮视频在线观看 | 99精品久久毛片a片 | 国产亚洲美女精品久久久2020 | 中文字幕日产无线码一区 | 丰满少妇高潮惨叫视频 | 亚洲午夜无码久久 | 国产美女极度色诱视频www | 国产人成高清在线视频99最全资源 | 天干天干啦夜天干天2017 | 日日鲁鲁鲁夜夜爽爽狠狠 | 欧美黑人巨大xxxxx | 国产后入清纯学生妹 | 高清无码午夜福利视频 | 乌克兰少妇性做爰 | 亚洲中文字幕无码中字 | 欧美黑人性暴力猛交喷水 | 中文字幕中文有码在线 | 亚洲色成人中文字幕网站 | 2019nv天堂香蕉在线观看 | 国产精品18久久久久久麻辣 | 88国产精品欧美一区二区三区 | 亚洲日韩av一区二区三区中文 | 精品久久久无码中文字幕 | 性生交大片免费看女人按摩摩 | 精品人妻av区 | 精品成在人线av无码免费看 | 国产精品自产拍在线观看 | 亚洲а∨天堂久久精品2021 | 亚洲日韩av一区二区三区四区 | 久久熟妇人妻午夜寂寞影院 | 激情内射亚州一区二区三区爱妻 | 高清不卡一区二区三区 | 内射后入在线观看一区 | 欧美性猛交xxxx富婆 | 精品夜夜澡人妻无码av蜜桃 | 国产无套内射久久久国产 | 国产乱码精品一品二品 | 色综合天天综合狠狠爱 | 欧美人与动性行为视频 | 99视频精品全部免费免费观看 | 亚洲中文字幕无码一久久区 | 偷窥村妇洗澡毛毛多 | 午夜精品久久久久久久久 | 欧美精品一区二区精品久久 | 国产综合久久久久鬼色 | 久久zyz资源站无码中文动漫 | 亚洲国产精品久久久久久 | 牲交欧美兽交欧美 | 成人av无码一区二区三区 | 九九久久精品国产免费看小说 | 人妻尝试又大又粗久久 | 丰满人妻翻云覆雨呻吟视频 | 国产99久久精品一区二区 | 国产免费观看黄av片 | 精品人妻中文字幕有码在线 | 国产麻豆精品一区二区三区v视界 | 男女猛烈xx00免费视频试看 | 国产超级va在线观看视频 | 久久99热只有频精品8 | 无码人妻精品一区二区三区下载 | 久在线观看福利视频 | 亚洲国产精华液网站w | 国产手机在线αⅴ片无码观看 | 国产免费观看黄av片 | 又湿又紧又大又爽a视频国产 | 男女作爱免费网站 | 免费人成在线观看网站 | 99久久久国产精品无码免费 | 99久久精品日本一区二区免费 | 少妇邻居内射在线 | 久久亚洲精品成人无码 | 国产精品鲁鲁鲁 | 国产精品无码久久av | 亚洲成a人片在线观看日本 | 天堂а√在线中文在线 | 久久综合给合久久狠狠狠97色 | 国产精品亚洲一区二区三区喷水 | 奇米影视7777久久精品 | 日日摸夜夜摸狠狠摸婷婷 | 久久久亚洲欧洲日产国码αv | 狂野欧美性猛xxxx乱大交 | 国产亚洲精品精品国产亚洲综合 | 伊人久久大香线蕉av一区二区 | 中文字幕人妻丝袜二区 | 国产精品久久久久久亚洲毛片 | 色欲av亚洲一区无码少妇 | 亚洲一区二区三区香蕉 | √8天堂资源地址中文在线 | 一本大道伊人av久久综合 | 黑人巨大精品欧美黑寡妇 | 亚洲人成网站在线播放942 | 久久精品国产一区二区三区 | 欧美猛少妇色xxxxx | 亚洲精品欧美二区三区中文字幕 | 中文无码精品a∨在线观看不卡 | 天天做天天爱天天爽综合网 | 久久国产自偷自偷免费一区调 | 三级4级全黄60分钟 | 丝袜 中出 制服 人妻 美腿 | 日本一卡2卡3卡四卡精品网站 | 亚洲一区二区三区偷拍女厕 | 夜夜高潮次次欢爽av女 | ass日本丰满熟妇pics | 老熟女重囗味hdxx69 | 亚洲一区av无码专区在线观看 | 日日橹狠狠爱欧美视频 | 国产做国产爱免费视频 | 乱码午夜-极国产极内射 | 无码人妻丰满熟妇区五十路百度 | 国产三级久久久精品麻豆三级 | 国产办公室秘书无码精品99 | 久久久久久久人妻无码中文字幕爆 | 国内精品人妻无码久久久影院蜜桃 | 中文字幕乱码亚洲无线三区 | 久久午夜无码鲁丝片秋霞 | 亚洲成a人片在线观看无码3d | 精品国产青草久久久久福利 | 中文字幕无线码免费人妻 | 免费人成网站视频在线观看 | 老子影院午夜精品无码 | 熟女少妇人妻中文字幕 | 美女毛片一区二区三区四区 | 精品无码国产一区二区三区av | 久久综合香蕉国产蜜臀av | 人人超人人超碰超国产 | 日本乱人伦片中文三区 | 中文字幕无码日韩专区 | 欧洲熟妇精品视频 | 最新版天堂资源中文官网 | 撕开奶罩揉吮奶头视频 | 亚洲中文字幕无码中文字在线 | 国产成人av免费观看 | 日本一区二区三区免费高清 | 四虎4hu永久免费 | 激情亚洲一区国产精品 | 人人妻人人澡人人爽欧美一区九九 | 欧洲美熟女乱又伦 | 女人被男人爽到呻吟的视频 | 国产精品亚洲专区无码不卡 | 最近的中文字幕在线看视频 | 中文字幕无码视频专区 | 18禁黄网站男男禁片免费观看 | 18禁黄网站男男禁片免费观看 | 四虎永久在线精品免费网址 | 国产成人午夜福利在线播放 | 波多野结衣高清一区二区三区 | 性做久久久久久久久 | 精品人妻人人做人人爽夜夜爽 | 成人试看120秒体验区 | 国产乱子伦视频在线播放 | 人人妻人人藻人人爽欧美一区 | 双乳奶水饱满少妇呻吟 | 国产精品久久久久9999小说 | 伊人久久大香线蕉av一区二区 | 女高中生第一次破苞av | 中文字幕av无码一区二区三区电影 | 欧美第一黄网免费网站 | 精品欧洲av无码一区二区三区 | 国产一区二区三区四区五区加勒比 | 精品亚洲韩国一区二区三区 | 999久久久国产精品消防器材 | 特级做a爰片毛片免费69 | 国产精品18久久久久久麻辣 | 国产午夜精品一区二区三区嫩草 | 在线播放亚洲第一字幕 | 国产精品丝袜黑色高跟鞋 | 久激情内射婷内射蜜桃人妖 | 在线观看国产一区二区三区 | 一本色道婷婷久久欧美 | 亚洲欧美日韩国产精品一区二区 | 国产麻豆精品一区二区三区v视界 | 欧美激情一区二区三区成人 | 国产偷自视频区视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲欧美精品aaaaaa片 | 又紧又大又爽精品一区二区 | 亚洲中文字幕无码中字 | 午夜福利电影 | av小次郎收藏 | 激情内射日本一区二区三区 | 性欧美videos高清精品 | 精品水蜜桃久久久久久久 | 亚洲人成网站在线播放942 | 捆绑白丝粉色jk震动捧喷白浆 | 国产欧美熟妇另类久久久 | 色综合久久中文娱乐网 | 色综合视频一区二区三区 | 亚洲国产欧美日韩精品一区二区三区 | 国产麻豆精品一区二区三区v视界 | 欧美人妻一区二区三区 | 色综合久久久久综合一本到桃花网 | 无码一区二区三区在线 | 亚洲欧洲无卡二区视頻 | 欧美阿v高清资源不卡在线播放 | 无码av中文字幕免费放 | 狠狠综合久久久久综合网 | 99久久精品日本一区二区免费 | 国産精品久久久久久久 | 成人精品一区二区三区中文字幕 | 无码任你躁久久久久久久 | 亚洲精品国产精品乱码不卡 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲 高清 成人 动漫 | 我要看www免费看插插视频 | 给我免费的视频在线观看 | 久久精品视频在线看15 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 久久综合给久久狠狠97色 | 成人动漫在线观看 | 国产精品香蕉在线观看 | 久久国产36精品色熟妇 | 午夜丰满少妇性开放视频 | 国产成人无码午夜视频在线观看 | 久久综合狠狠综合久久综合88 | 嫩b人妻精品一区二区三区 | 妺妺窝人体色www在线小说 | 四虎国产精品免费久久 | 东京热男人av天堂 | 欧美野外疯狂做受xxxx高潮 | 乱人伦中文视频在线观看 | 国产精品嫩草久久久久 | 国产真实乱对白精彩久久 | 亚洲人成无码网www | 国产亚洲精品久久久久久久 | 国产97人人超碰caoprom | 无码人妻丰满熟妇区毛片18 | 欧美成人午夜精品久久久 | 久久综合激激的五月天 | 欧美自拍另类欧美综合图片区 | 亚洲一区二区三区播放 | 真人与拘做受免费视频一 | 免费播放一区二区三区 | 福利一区二区三区视频在线观看 | 国产精品丝袜黑色高跟鞋 | 伦伦影院午夜理论片 | 亚洲精品国产精品乱码不卡 | 国产亚洲精品久久久ai换 | 影音先锋中文字幕无码 | 午夜福利一区二区三区在线观看 | 3d动漫精品啪啪一区二区中 | 亚洲国产精品无码一区二区三区 | 蜜桃av抽搐高潮一区二区 | 国产精品a成v人在线播放 | 亚洲一区二区三区香蕉 | 亚洲区小说区激情区图片区 | 窝窝午夜理论片影院 | 蜜臀av在线播放 久久综合激激的五月天 | 牲欲强的熟妇农村老妇女 | 中文字幕av无码一区二区三区电影 | 牛和人交xxxx欧美 | 99久久精品日本一区二区免费 | 久久精品一区二区三区四区 | 欧美性色19p | 理论片87福利理论电影 | 国产在线精品一区二区三区直播 | 领导边摸边吃奶边做爽在线观看 | 捆绑白丝粉色jk震动捧喷白浆 | 国产精品久久久午夜夜伦鲁鲁 | 精品国产aⅴ无码一区二区 | 98国产精品综合一区二区三区 | 性生交大片免费看女人按摩摩 | 曰本女人与公拘交酡免费视频 | 欧美熟妇另类久久久久久多毛 | 国产无遮挡吃胸膜奶免费看 | 久久久久人妻一区精品色欧美 | 男女下面进入的视频免费午夜 | 国产精品手机免费 | 无码人妻精品一区二区三区不卡 | 乱码av麻豆丝袜熟女系列 | 亚洲中文字幕无码中文字在线 | 亚洲精品国产精品乱码不卡 | 亚洲人成网站免费播放 | 亚洲国产一区二区三区在线观看 | 精品久久久无码人妻字幂 | 国产激情一区二区三区 | 久久午夜无码鲁丝片 | 又黄又爽又色的视频 | 国产尤物精品视频 | 日本一区二区三区免费高清 | 人妻夜夜爽天天爽三区 | 九月婷婷人人澡人人添人人爽 | 成人性做爰aaa片免费看 | 欧美人与禽zoz0性伦交 | 日本熟妇人妻xxxxx人hd | 日韩精品无码免费一区二区三区 | 日本成熟视频免费视频 | 精品一二三区久久aaa片 | 九九综合va免费看 | 国产精品高潮呻吟av久久4虎 | 永久免费观看国产裸体美女 | 国色天香社区在线视频 | 中文精品无码中文字幕无码专区 | 国产精品久免费的黄网站 | 奇米影视7777久久精品人人爽 | 国产后入清纯学生妹 | 人人妻人人澡人人爽精品欧美 | 亚洲人成网站免费播放 | 伊人久久大香线焦av综合影院 | 亚洲中文字幕无码一久久区 | 国产超级va在线观看视频 | 国产成人无码午夜视频在线观看 | 俺去俺来也www色官网 | 国产精品丝袜黑色高跟鞋 | 女人被男人爽到呻吟的视频 | 青青久在线视频免费观看 | 国产精品亚洲综合色区韩国 | 亚洲人交乣女bbw | 国产av一区二区三区最新精品 | 日本精品人妻无码免费大全 | 亚洲精品一区二区三区在线观看 | 无码播放一区二区三区 | 女人被男人爽到呻吟的视频 | 国产特级毛片aaaaaaa高清 | 中文字幕人妻无码一区二区三区 | 少妇愉情理伦片bd | 人人妻在人人 | 最新国产麻豆aⅴ精品无码 | 久久综合香蕉国产蜜臀av | 成人性做爰aaa片免费看不忠 | 国产精品久久国产精品99 | 国产亚洲人成在线播放 | 两性色午夜视频免费播放 | 性生交大片免费看女人按摩摩 | 无码人妻精品一区二区三区下载 | 丰满少妇熟乱xxxxx视频 | 成人女人看片免费视频放人 | 国产色xx群视频射精 | 高清国产亚洲精品自在久久 | 国产香蕉尹人视频在线 | 麻豆蜜桃av蜜臀av色欲av | 国产精品va在线观看无码 | 久久久久亚洲精品男人的天堂 | 国产真人无遮挡作爱免费视频 | 亚洲一区二区三区 | 久久人人爽人人人人片 | 18禁止看的免费污网站 | 亚洲中文字幕va福利 | 性史性农村dvd毛片 | 精品少妇爆乳无码av无码专区 | 曰韩少妇内射免费播放 | 久久人妻内射无码一区三区 | а√资源新版在线天堂 | 一本久道久久综合婷婷五月 | 精品久久综合1区2区3区激情 | 亚洲中文字幕在线无码一区二区 | 亚洲精品一区二区三区大桥未久 | 国精品人妻无码一区二区三区蜜柚 | 亚洲の无码国产の无码影院 | 久9re热视频这里只有精品 | 搡女人真爽免费视频大全 | 天堂无码人妻精品一区二区三区 | 国产成人无码a区在线观看视频app | 久久婷婷五月综合色国产香蕉 | 一本精品99久久精品77 | 日本熟妇乱子伦xxxx | 狠狠色欧美亚洲狠狠色www | 欧美一区二区三区 | 国产人妻人伦精品1国产丝袜 | 日本精品人妻无码免费大全 | 少妇无码av无码专区在线观看 | 国产色xx群视频射精 | 男女作爱免费网站 | 成人无码影片精品久久久 | 又色又爽又黄的美女裸体网站 | 久久视频在线观看精品 | 久在线观看福利视频 | 国产一区二区三区精品视频 | 成人精品天堂一区二区三区 | 成人一区二区免费视频 | 女高中生第一次破苞av | 强开小婷嫩苞又嫩又紧视频 | av在线亚洲欧洲日产一区二区 | 国产精品自产拍在线观看 | аⅴ资源天堂资源库在线 | 国产无遮挡又黄又爽免费视频 | 色婷婷综合中文久久一本 | 国产激情艳情在线看视频 | 麻豆蜜桃av蜜臀av色欲av | 未满成年国产在线观看 | 国产在线aaa片一区二区99 | 好爽又高潮了毛片免费下载 | 国产成人精品必看 | 久久人人爽人人人人片 | 97久久超碰中文字幕 | 熟女体下毛毛黑森林 | 国产亚洲精品精品国产亚洲综合 | 人妻少妇精品无码专区动漫 | 四虎影视成人永久免费观看视频 | 少妇人妻偷人精品无码视频 | 亚洲 欧美 激情 小说 另类 | 亚洲色在线无码国产精品不卡 | 内射老妇bbwx0c0ck | 亚洲精品一区三区三区在线观看 | 日韩av激情在线观看 | 中文字幕人妻丝袜二区 | 亚洲熟妇色xxxxx亚洲 | 亚洲精品国偷拍自产在线观看蜜桃 | 麻豆人妻少妇精品无码专区 | 国产人妻精品一区二区三区不卡 | а√天堂www在线天堂小说 | 欧美激情一区二区三区成人 | 精品一区二区不卡无码av | 久久久中文字幕日本无吗 | 老熟女重囗味hdxx69 | 国内揄拍国内精品少妇国语 | 国产精品丝袜黑色高跟鞋 | 激情内射亚州一区二区三区爱妻 | 亚洲国产欧美在线成人 | 少妇一晚三次一区二区三区 | 人人妻人人澡人人爽人人精品浪潮 | 国产激情艳情在线看视频 | 国产成人无码午夜视频在线观看 | 国产内射爽爽大片视频社区在线 | 帮老师解开蕾丝奶罩吸乳网站 | 狂野欧美性猛xxxx乱大交 | 波多野结衣一区二区三区av免费 | 欧美精品免费观看二区 | 日本饥渴人妻欲求不满 | 国产在线一区二区三区四区五区 | 久久精品人人做人人综合试看 | 午夜福利试看120秒体验区 | 免费观看黄网站 | 精品水蜜桃久久久久久久 | 精品人妻人人做人人爽 | 无码国产色欲xxxxx视频 | 无码精品人妻一区二区三区av | 国产区女主播在线观看 | 久久99国产综合精品 | 2019午夜福利不卡片在线 | 国产莉萝无码av在线播放 | 国产精品香蕉在线观看 | 国产乱人伦av在线无码 | 国产精品a成v人在线播放 | 天堂亚洲免费视频 | 无码人妻丰满熟妇区毛片18 | 国内揄拍国内精品人妻 | 亚洲综合在线一区二区三区 | 在线精品国产一区二区三区 | аⅴ资源天堂资源库在线 | 亚洲综合无码一区二区三区 | 在线观看欧美一区二区三区 | 日韩av激情在线观看 | 亚洲国产日韩a在线播放 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产成人综合色在线观看网站 | 欧美日韩在线亚洲综合国产人 | 一个人看的www免费视频在线观看 | 国产午夜精品一区二区三区嫩草 | 精品乱码久久久久久久 | 女人被爽到呻吟gif动态图视看 | 人妻少妇精品无码专区二区 | 无码纯肉视频在线观看 | 亚洲男人av天堂午夜在 | aⅴ亚洲 日韩 色 图网站 播放 | 狠狠色色综合网站 | 亚洲国产精品无码一区二区三区 | 最近免费中文字幕中文高清百度 | 国产网红无码精品视频 | 亚洲中文字幕无码中文字在线 | 国产成人无码av片在线观看不卡 | 97久久超碰中文字幕 | 无码国产激情在线观看 | 香港三级日本三级妇三级 | 无码人妻丰满熟妇区五十路百度 | 亚洲中文字幕久久无码 | 无套内谢老熟女 | 国产精品美女久久久 | 国产一区二区三区精品视频 | 久久久久av无码免费网 | 久久久精品人妻久久影视 | 荫蒂被男人添的好舒服爽免费视频 | 精品欧洲av无码一区二区三区 | 精品无人区无码乱码毛片国产 | 中文字幕 亚洲精品 第1页 | 三上悠亚人妻中文字幕在线 | 国产成人精品优优av | 亚洲阿v天堂在线 | 欧美放荡的少妇 | 性欧美videos高清精品 | 国产成人无码专区 | 亚洲午夜福利在线观看 | 亚洲一区二区三区在线观看网站 | 男女超爽视频免费播放 | 红桃av一区二区三区在线无码av | 激情亚洲一区国产精品 | 天下第一社区视频www日本 | 国产又粗又硬又大爽黄老大爷视 | 久久亚洲精品成人无码 | 久久无码中文字幕免费影院蜜桃 | 曰韩无码二三区中文字幕 | 精品厕所偷拍各类美女tp嘘嘘 | 强辱丰满人妻hd中文字幕 | 丰满人妻被黑人猛烈进入 | 精品无码av一区二区三区 | 人妻中文无码久热丝袜 | 成人三级无码视频在线观看 | 青青久在线视频免费观看 | 女人被男人爽到呻吟的视频 | 国产口爆吞精在线视频 | 最近的中文字幕在线看视频 | 久久视频在线观看精品 | 精品一二三区久久aaa片 | 久久久久久久久888 | 成人无码视频免费播放 | 牲交欧美兽交欧美 | www一区二区www免费 | 欧美成人家庭影院 | 国产美女极度色诱视频www | 国内少妇偷人精品视频 | 老头边吃奶边弄进去呻吟 | 精品人人妻人人澡人人爽人人 | 波多野42部无码喷潮在线 | 亚洲男人av天堂午夜在 | 97夜夜澡人人双人人人喊 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲成av人综合在线观看 | 99久久精品午夜一区二区 | 色 综合 欧美 亚洲 国产 | 无码国内精品人妻少妇 | 精品人人妻人人澡人人爽人人 | 乱人伦人妻中文字幕无码 | 久久久精品欧美一区二区免费 | 毛片内射-百度 | 亚洲阿v天堂在线 | 欧美精品一区二区精品久久 | 欧美精品无码一区二区三区 | 久久精品丝袜高跟鞋 | 少女韩国电视剧在线观看完整 | 亚洲の无码国产の无码影院 | 天天av天天av天天透 | 国产精品美女久久久网av | 丰满人妻一区二区三区免费视频 | 中文字幕无码日韩欧毛 | 天堂在线观看www | 国产办公室秘书无码精品99 | 久久国产精品萌白酱免费 | 伊在人天堂亚洲香蕉精品区 | 熟女体下毛毛黑森林 | 日韩精品无码免费一区二区三区 | 亚洲成a人片在线观看日本 | 亚洲国产综合无码一区 | 日韩av无码一区二区三区不卡 | 图片小说视频一区二区 | 国产乱人偷精品人妻a片 | 中文字幕乱码亚洲无线三区 | 国产9 9在线 | 中文 | 99久久精品午夜一区二区 | 最新国产麻豆aⅴ精品无码 | 国产无遮挡又黄又爽又色 | 天堂а√在线中文在线 | 亚洲综合精品香蕉久久网 | 99在线 | 亚洲 | 色综合久久88色综合天天 | 无码人妻少妇伦在线电影 | 蜜桃av抽搐高潮一区二区 | 欧美激情一区二区三区成人 | 久久久中文字幕日本无吗 | 2019午夜福利不卡片在线 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 亚洲国产精品成人久久蜜臀 | 国产片av国语在线观看 | 国产精品亚洲а∨无码播放麻豆 | 亚洲精品中文字幕 | 欧洲熟妇精品视频 | 无码播放一区二区三区 | 樱花草在线播放免费中文 | 亚洲一区二区三区香蕉 | 日本一区二区三区免费播放 | 无码人妻久久一区二区三区不卡 | 少妇性l交大片 | 国产精品久久久av久久久 | 日本欧美一区二区三区乱码 | 在线欧美精品一区二区三区 | 色窝窝无码一区二区三区色欲 | 国产人妻精品一区二区三区不卡 | 女高中生第一次破苞av | 国产亚av手机在线观看 | 婷婷丁香五月天综合东京热 | 激情亚洲一区国产精品 | 99久久精品国产一区二区蜜芽 | 波多野结衣一区二区三区av免费 | 永久免费精品精品永久-夜色 | 99久久久国产精品无码免费 | 玩弄人妻少妇500系列视频 | 欧美性生交xxxxx久久久 | 午夜精品久久久久久久久 | 狂野欧美性猛xxxx乱大交 | 中文字幕无码免费久久9一区9 | 成人免费无码大片a毛片 | 久久视频在线观看精品 | 国产一区二区三区日韩精品 | 亚洲精品美女久久久久久久 | 欧美猛少妇色xxxxx | 国产精品欧美成人 | 帮老师解开蕾丝奶罩吸乳网站 | 久久伊人色av天堂九九小黄鸭 | 丰腴饱满的极品熟妇 | 亚洲欧美日韩综合久久久 | 亚洲欧洲中文日韩av乱码 | 高潮毛片无遮挡高清免费 | 无码国产乱人伦偷精品视频 | 成人无码影片精品久久久 | 久久综合九色综合欧美狠狠 | 国产精品久久久久无码av色戒 | 中文字幕乱码人妻无码久久 | 人人妻人人澡人人爽欧美一区九九 | 亚洲 日韩 欧美 成人 在线观看 | 日本免费一区二区三区最新 | 日本熟妇乱子伦xxxx | 国产麻豆精品精东影业av网站 | 成人免费视频视频在线观看 免费 | 奇米影视888欧美在线观看 | 国产精品99久久精品爆乳 | 国产精品久久久久久无码 | 午夜熟女插插xx免费视频 | 天海翼激烈高潮到腰振不止 | 国产精品福利视频导航 | 无套内谢老熟女 | 日本熟妇大屁股人妻 | 日本一区二区三区免费播放 | 国产亚洲欧美日韩亚洲中文色 | 精品国偷自产在线视频 | 强奷人妻日本中文字幕 | 中文字幕无码免费久久9一区9 | 国产熟妇另类久久久久 | 成 人 免费观看网站 | 波多野结衣av一区二区全免费观看 | 中国女人内谢69xxxxxa片 | 荫蒂添的好舒服视频囗交 | 国产免费久久久久久无码 | 人人妻人人澡人人爽欧美一区 | 国产欧美亚洲精品a | 欧洲极品少妇 | 人妻插b视频一区二区三区 | 国产无av码在线观看 | 久久久久久av无码免费看大片 | 男女下面进入的视频免费午夜 | 老熟妇乱子伦牲交视频 | 国语精品一区二区三区 | 中文字幕无码av波多野吉衣 | 给我免费的视频在线观看 | 国产成人综合在线女婷五月99播放 | 国产精品亚洲а∨无码播放麻豆 | 久久精品丝袜高跟鞋 | 久久www免费人成人片 | 麻豆蜜桃av蜜臀av色欲av | 图片区 小说区 区 亚洲五月 | 欧洲熟妇色 欧美 | 亚洲精品一区二区三区四区五区 | 强奷人妻日本中文字幕 | 国产乱人无码伦av在线a | 日本精品人妻无码免费大全 | 波多野结衣高清一区二区三区 | 色婷婷综合中文久久一本 | 又湿又紧又大又爽a视频国产 | 人妻夜夜爽天天爽三区 | 中文无码伦av中文字幕 | 国产精品久久国产精品99 | 国产97色在线 | 免 | 给我免费的视频在线观看 | 国产一区二区三区影院 | 夜精品a片一区二区三区无码白浆 | 亚洲精品综合一区二区三区在线 | 精品成人av一区二区三区 | 高中生自慰www网站 | 国产莉萝无码av在线播放 | 澳门永久av免费网站 | 国产av剧情md精品麻豆 | 无码国产乱人伦偷精品视频 | 十八禁视频网站在线观看 | 无码av岛国片在线播放 | 国产精品成人av在线观看 | 国产精品嫩草久久久久 | 欧美真人作爱免费视频 | 老子影院午夜伦不卡 | 久久久婷婷五月亚洲97号色 | 无码精品国产va在线观看dvd | 亚洲精品鲁一鲁一区二区三区 | 精品国产一区二区三区四区在线看 | 色欲久久久天天天综合网精品 | 成人性做爰aaa片免费看 | 国产97在线 | 亚洲 | 亲嘴扒胸摸屁股激烈网站 | 大地资源网第二页免费观看 | 大肉大捧一进一出视频出来呀 | 精品欧洲av无码一区二区三区 | 国产真实伦对白全集 | 色欲综合久久中文字幕网 | 波多野结衣av在线观看 | 国产精品爱久久久久久久 | aⅴ亚洲 日韩 色 图网站 播放 | 亚洲精品久久久久久久久久久 | 四虎国产精品一区二区 | 国产97在线 | 亚洲 | 欧洲熟妇色 欧美 | 97无码免费人妻超级碰碰夜夜 | 51国偷自产一区二区三区 | 国产九九九九九九九a片 | 国产高潮视频在线观看 | 黑人巨大精品欧美黑寡妇 | 午夜无码区在线观看 | 成人aaa片一区国产精品 | 久久视频在线观看精品 | 夜夜高潮次次欢爽av女 | 内射爽无广熟女亚洲 | 国产无遮挡又黄又爽免费视频 | 亚洲无人区午夜福利码高清完整版 | 人人妻人人澡人人爽欧美一区九九 | 5858s亚洲色大成网站www | 在线视频网站www色 | 国产热a欧美热a在线视频 | 日日摸天天摸爽爽狠狠97 | 少妇被粗大的猛进出69影院 | 熟妇人妻中文av无码 | a在线观看免费网站大全 | 99久久亚洲精品无码毛片 | 丝袜 中出 制服 人妻 美腿 | 性生交大片免费看女人按摩摩 | 亚洲七七久久桃花影院 | 无码人妻久久一区二区三区不卡 | 亚洲国产av精品一区二区蜜芽 | 欧美真人作爱免费视频 | 欧美自拍另类欧美综合图片区 | 国产va免费精品观看 | 国产精品久久久久久亚洲影视内衣 | 欧美一区二区三区视频在线观看 | 国产精品无套呻吟在线 | 亚洲午夜福利在线观看 | 国产午夜手机精彩视频 | 日产国产精品亚洲系列 | 日本xxxx色视频在线观看免费 | 思思久久99热只有频精品66 | 国产精品无码永久免费888 | 大肉大捧一进一出视频出来呀 | 亚洲日韩av一区二区三区四区 | 精品一区二区三区波多野结衣 | 日韩人妻无码中文字幕视频 | 国产又粗又硬又大爽黄老大爷视 | 中文久久乱码一区二区 | 熟女俱乐部五十路六十路av | 最新国产乱人伦偷精品免费网站 | 六月丁香婷婷色狠狠久久 | 真人与拘做受免费视频一 | 荫蒂被男人添的好舒服爽免费视频 | 国精品人妻无码一区二区三区蜜柚 | 秋霞成人午夜鲁丝一区二区三区 | 性生交片免费无码看人 | 日本欧美一区二区三区乱码 | 亚洲中文字幕乱码av波多ji | 欧美国产日韩久久mv | 国产成人无码a区在线观看视频app | 日本大乳高潮视频在线观看 | 国产成人综合在线女婷五月99播放 | 18禁止看的免费污网站 | 亚洲乱码国产乱码精品精 | 水蜜桃亚洲一二三四在线 | 丝袜 中出 制服 人妻 美腿 | 日韩人妻无码中文字幕视频 | 日本肉体xxxx裸交 | 97夜夜澡人人爽人人喊中国片 | 亚洲天堂2017无码中文 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 国产激情一区二区三区 | 无遮挡国产高潮视频免费观看 | 在线亚洲高清揄拍自拍一品区 | 国产97色在线 | 免 | 国产97在线 | 亚洲 | 久久综合九色综合欧美狠狠 | 性生交大片免费看l | 麻豆国产人妻欲求不满谁演的 | 青青久在线视频免费观看 | 18黄暴禁片在线观看 | 在线播放无码字幕亚洲 | 少妇性荡欲午夜性开放视频剧场 | 四虎永久在线精品免费网址 | 大肉大捧一进一出视频出来呀 | 亚洲精品一区二区三区大桥未久 | 国产午夜精品一区二区三区嫩草 | 亚洲中文字幕乱码av波多ji | 伦伦影院午夜理论片 | 天天av天天av天天透 | 图片区 小说区 区 亚洲五月 | 国产在线无码精品电影网 | 亚洲色欲色欲天天天www | 久久精品无码一区二区三区 | 国产suv精品一区二区五 | 精品少妇爆乳无码av无码专区 | 天堂а√在线地址中文在线 | 曰本女人与公拘交酡免费视频 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产亚洲精品久久久久久久久动漫 | 国产精品香蕉在线观看 | 极品尤物被啪到呻吟喷水 | 在线视频网站www色 | 麻豆国产人妻欲求不满谁演的 | 一本久久a久久精品亚洲 | 国产精品久久久久影院嫩草 | 高清不卡一区二区三区 | 精品国偷自产在线视频 | 中文字幕av无码一区二区三区电影 | 大胆欧美熟妇xx | 大肉大捧一进一出好爽视频 | 欧美真人作爱免费视频 | 亚洲伊人久久精品影院 | 婷婷丁香五月天综合东京热 | 老头边吃奶边弄进去呻吟 | 3d动漫精品啪啪一区二区中 | 中文字幕日产无线码一区 | 色窝窝无码一区二区三区色欲 | 久久精品女人天堂av免费观看 | 在线天堂新版最新版在线8 | 亚洲人成影院在线观看 | 精品亚洲韩国一区二区三区 | 精品人人妻人人澡人人爽人人 | 精品无码一区二区三区的天堂 | 欧美老妇与禽交 | 亚洲国产精华液网站w | 女人和拘做爰正片视频 | 亚洲国产午夜精品理论片 | 国产在线精品一区二区三区直播 | 国产一区二区三区精品视频 | 一本色道婷婷久久欧美 | 又大又硬又爽免费视频 | 麻豆精产国品 | 乱人伦人妻中文字幕无码 | 亚洲区欧美区综合区自拍区 | 妺妺窝人体色www在线小说 | 久久久久久久女国产乱让韩 | 久久久久久久女国产乱让韩 | 玩弄人妻少妇500系列视频 | 国产在线精品一区二区三区直播 | 强辱丰满人妻hd中文字幕 | 国产在线aaa片一区二区99 | 色 综合 欧美 亚洲 国产 | 99久久99久久免费精品蜜桃 | 欧美熟妇另类久久久久久多毛 | 熟妇人妻无乱码中文字幕 | 亚洲色大成网站www | 国产午夜亚洲精品不卡 | 黄网在线观看免费网站 | 国产又爽又猛又粗的视频a片 | 中文精品无码中文字幕无码专区 | 伊人久久大香线焦av综合影院 | 麻豆国产人妻欲求不满 | 欧美激情内射喷水高潮 | 亚洲综合无码一区二区三区 | 亚洲第一无码av无码专区 | 麻花豆传媒剧国产免费mv在线 | 人妻与老人中文字幕 | 久久久久久久久蜜桃 | 中文字幕中文有码在线 | 国产在线精品一区二区高清不卡 | 国产农村乱对白刺激视频 | 久久久久人妻一区精品色欧美 | 亚洲国产精品无码久久久久高潮 | 久久亚洲精品中文字幕无男同 | 无遮挡国产高潮视频免费观看 | 少妇的肉体aa片免费 | √天堂中文官网8在线 | 综合激情五月综合激情五月激情1 | 亚洲精品午夜国产va久久成人 | 99精品视频在线观看免费 | 国产精品亚洲а∨无码播放麻豆 | 亚洲国产一区二区三区在线观看 | 初尝人妻少妇中文字幕 | 少妇人妻偷人精品无码视频 | 夜先锋av资源网站 | 国产无遮挡又黄又爽免费视频 | 国产精品久久精品三级 | 久久人人爽人人爽人人片av高清 | 国产午夜手机精彩视频 | 国产乱人无码伦av在线a | 亚洲无人区午夜福利码高清完整版 | 中文字幕无码视频专区 | 午夜肉伦伦影院 | 国产精品对白交换视频 | 亚洲爆乳大丰满无码专区 | www国产亚洲精品久久久日本 | 十八禁视频网站在线观看 | 午夜无码人妻av大片色欲 | 98国产精品综合一区二区三区 | 无码人妻黑人中文字幕 | 国产亚洲精品久久久久久 | www国产亚洲精品久久网站 | 国产香蕉尹人视频在线 | 麻豆md0077饥渴少妇 | 亚洲精品中文字幕乱码 | 又粗又大又硬毛片免费看 | 色综合久久88色综合天天 | 精品国产青草久久久久福利 | 正在播放东北夫妻内射 | 色综合久久网 | 亚洲精品一区三区三区在线观看 | 欧美性色19p | 国产精品无码成人午夜电影 | 国产一区二区三区四区五区加勒比 | 亚洲一区二区三区无码久久 | 国产精品无码mv在线观看 | 特黄特色大片免费播放器图片 | 国产真实乱对白精彩久久 | 精品国产成人一区二区三区 | а√天堂www在线天堂小说 | 亚洲中文字幕成人无码 | 九九综合va免费看 | 亚洲国产欧美日韩精品一区二区三区 | 丰满少妇弄高潮了www | 亚洲综合在线一区二区三区 | 天下第一社区视频www日本 | 澳门永久av免费网站 | 色婷婷av一区二区三区之红樱桃 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 欧美丰满熟妇xxxx性ppx人交 | 欧美 日韩 亚洲 在线 | 成人精品视频一区二区 | 色偷偷人人澡人人爽人人模 | 色一情一乱一伦一视频免费看 | 在线观看免费人成视频 | 欧美日韩综合一区二区三区 | 亚洲熟妇自偷自拍另类 | 欧美国产亚洲日韩在线二区 | 欧美日韩人成综合在线播放 | 亚洲无人区一区二区三区 | 日韩精品久久久肉伦网站 | 国产精品第一国产精品 | 夜夜高潮次次欢爽av女 | 日韩人妻系列无码专区 | 亚洲精品一区二区三区在线 | 97久久精品无码一区二区 | 中文字幕 人妻熟女 | 亚洲日韩一区二区三区 | 亚洲成a人一区二区三区 | 久久亚洲日韩精品一区二区三区 | 又粗又大又硬又长又爽 | 亚洲日韩av一区二区三区中文 | 精品国产一区二区三区四区 | 精品亚洲成av人在线观看 | 在线精品国产一区二区三区 | 97夜夜澡人人爽人人喊中国片 | 日日碰狠狠丁香久燥 | 无码吃奶揉捏奶头高潮视频 | 97夜夜澡人人爽人人喊中国片 | yw尤物av无码国产在线观看 | 丰满少妇弄高潮了www | 国产香蕉97碰碰久久人人 | 国产两女互慰高潮视频在线观看 | 牲交欧美兽交欧美 | 未满小14洗澡无码视频网站 | 在线亚洲高清揄拍自拍一品区 | 色欲av亚洲一区无码少妇 | 欧美一区二区三区 | 丰满人妻一区二区三区免费视频 | 熟妇人妻无码xxx视频 | 无码人妻丰满熟妇区五十路百度 | 欧洲美熟女乱又伦 | 丰满人妻一区二区三区免费视频 | 亚洲区小说区激情区图片区 | 无人区乱码一区二区三区 | 国产莉萝无码av在线播放 | 97色伦图片97综合影院 | 久久精品国产一区二区三区 | 一本久久a久久精品亚洲 | 亚洲国产欧美日韩精品一区二区三区 | 丰满少妇女裸体bbw | 久久综合激激的五月天 | 99久久99久久免费精品蜜桃 | 免费网站看v片在线18禁无码 | 亚洲s码欧洲m码国产av | 内射巨臀欧美在线视频 | 福利一区二区三区视频在线观看 | 成人免费视频在线观看 | 亚洲中文字幕无码一久久区 | 亚洲成a人一区二区三区 | 波多野结衣av在线观看 | 红桃av一区二区三区在线无码av | 亚洲娇小与黑人巨大交 | 国产肉丝袜在线观看 | 天天爽夜夜爽夜夜爽 | 一本久道高清无码视频 | 亚洲男女内射在线播放 | 国产亚洲人成在线播放 | 亚洲国产成人av在线观看 | 国内综合精品午夜久久资源 | 亚洲综合久久一区二区 | 六月丁香婷婷色狠狠久久 | 麻豆蜜桃av蜜臀av色欲av | 清纯唯美经典一区二区 | 精品国产一区二区三区av 性色 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 亚洲小说春色综合另类 | 久久精品国产99久久6动漫 | 波多野结衣av一区二区全免费观看 | 亚洲乱码日产精品bd | 极品嫩模高潮叫床 | 色噜噜亚洲男人的天堂 | 国产精品人人爽人人做我的可爱 | 日日鲁鲁鲁夜夜爽爽狠狠 | 精品偷拍一区二区三区在线看 | 性生交大片免费看l | 国产人妖乱国产精品人妖 | 国产真实伦对白全集 | 国产人妻精品午夜福利免费 | 伊人久久大香线焦av综合影院 | 欧美人与善在线com | 无码任你躁久久久久久久 | 高清不卡一区二区三区 | 无人区乱码一区二区三区 | 久久99精品久久久久婷婷 | 亚洲国产av精品一区二区蜜芽 | 亚洲爆乳精品无码一区二区三区 | 亚洲中文字幕乱码av波多ji | 国产精品亚洲专区无码不卡 | 国产精品亚洲lv粉色 | 亚洲日韩av片在线观看 | 国产人妻人伦精品 | 国产人妻精品午夜福利免费 | 好屌草这里只有精品 | 久久99精品国产麻豆蜜芽 | 国产极品视觉盛宴 | 午夜精品久久久内射近拍高清 | 欧美乱妇无乱码大黄a片 | 欧洲欧美人成视频在线 | 亚洲日韩av片在线观看 | 牲欲强的熟妇农村老妇女 | 国产一区二区不卡老阿姨 | 日本爽爽爽爽爽爽在线观看免 | 亚洲 高清 成人 动漫 | 日韩欧美群交p片內射中文 | 国产另类ts人妖一区二区 | 亚洲一区二区三区含羞草 | 成人亚洲精品久久久久软件 | 亚洲精品久久久久中文第一幕 | 日韩 欧美 动漫 国产 制服 | 亚洲精品国偷拍自产在线观看蜜桃 | 自拍偷自拍亚洲精品被多人伦好爽 | 中文字幕人妻丝袜二区 | 国产精品久久久久影院嫩草 | 日韩人妻无码一区二区三区久久99 | 亚洲熟女一区二区三区 | 成人影院yy111111在线观看 | 欧美 日韩 亚洲 在线 | 日本高清一区免费中文视频 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 国产精品理论片在线观看 | 色婷婷av一区二区三区之红樱桃 | 欧美性生交xxxxx久久久 | 爽爽影院免费观看 | 日日碰狠狠躁久久躁蜜桃 | 久久99精品国产.久久久久 | 无码人妻久久一区二区三区不卡 | 日韩av激情在线观看 | 色综合久久久久综合一本到桃花网 | 99国产欧美久久久精品 | 无码毛片视频一区二区本码 | 窝窝午夜理论片影院 | 无遮无挡爽爽免费视频 | 中文字幕无码日韩欧毛 | 久久综合狠狠综合久久综合88 | 欧美 丝袜 自拍 制服 另类 | 亚洲の无码国产の无码影院 | 人妻夜夜爽天天爽三区 | 国产在线一区二区三区四区五区 | 日本免费一区二区三区最新 | 精品国产一区二区三区av 性色 | 图片小说视频一区二区 | 欧美日韩在线亚洲综合国产人 | 蜜臀av在线播放 久久综合激激的五月天 | 中文精品无码中文字幕无码专区 | 国产在线无码精品电影网 | 久久久中文字幕日本无吗 | 成人精品视频一区二区 | 欧美怡红院免费全部视频 | 精品aⅴ一区二区三区 | 天堂一区人妻无码 | 性欧美videos高清精品 | 影音先锋中文字幕无码 | 丝袜美腿亚洲一区二区 | 日本一卡2卡3卡四卡精品网站 | 欧美日韩人成综合在线播放 | 日本精品少妇一区二区三区 | 久久久久亚洲精品中文字幕 | 亚洲午夜久久久影院 | 亚洲熟悉妇女xxx妇女av | 人妻少妇被猛烈进入中文字幕 | 成年美女黄网站色大免费视频 | 国产片av国语在线观看 | 欧美成人高清在线播放 | 国产综合久久久久鬼色 | 强伦人妻一区二区三区视频18 | 无码午夜成人1000部免费视频 | 亚洲国产精品成人久久蜜臀 | 国内精品人妻无码久久久影院蜜桃 | 精品亚洲韩国一区二区三区 | 亚洲国产精华液网站w | 特级做a爰片毛片免费69 | 久久熟妇人妻午夜寂寞影院 | 四虎国产精品一区二区 | 亚洲乱码中文字幕在线 | 中文字幕无码日韩专区 | 亚洲日韩中文字幕在线播放 | 美女张开腿让人桶 | 免费播放一区二区三区 | 无码av最新清无码专区吞精 |