日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

使JavaDoc保持最新状态的工具

發(fā)布時(shí)間:2023/12/3 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使JavaDoc保持最新状态的工具 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在許多項(xiàng)目中,文檔不是最新的。 更改代碼后,很容易忘記更改文檔。 原因是可以理解的。 在代碼中進(jìn)行更改,然后調(diào)試,然后希望在測(cè)試中進(jìn)行更改(或者,如果您使用的是更多TDD,則以相反的順序進(jìn)行更改),然后是新功能版本的喜悅以及對(duì)新版本的喜悅您會(huì)忘記執(zhí)行更新文檔的繁瑣任務(wù)。

在本文中,我將顯示一個(gè)示例,說明如何簡(jiǎn)化流程并確保文檔至少是最新的。

工具

我在本文中使用的工具是Java :: Geci,它是一個(gè)代碼生成框架。 Java :: Geci的原始設(shè)計(jì)目標(biāo)是提供一個(gè)框架,在該框架中,編寫代碼生成器將代碼注入到現(xiàn)有的Java源代碼中或生成新的Java源文件非常容易。 因此,名稱為:GEnerate Code Inline或GEnerate Code,Inject。

當(dāng)我們談?wù)撐臋n時(shí),代碼生成支持工具會(huì)做什么?

在框架的最高級(jí)別上,源代碼只是一個(gè)文本文件。 像JavaDoc一樣,文檔也是文本。 源目錄結(jié)構(gòu)中的文檔(例如markdown文件)是文本。 復(fù)制文本的一部分并將其轉(zhuǎn)換到其他位置是代碼生成的一種特殊形式。 這正是我們將要做的。

文檔的兩種用途

Java :: Geci支持文檔的幾種方式。 我將在本文中描述其中之一。

方法是在單元測(cè)試中找到一些行,并在可能的轉(zhuǎn)換后將內(nèi)容復(fù)制到JavaDoc中。 我將使用3.9版之后的apache.commons.lang項(xiàng)目當(dāng)前主版本的示例進(jìn)行演示。 盡管有改進(jìn)的余地,但該項(xiàng)目的文獻(xiàn)記錄非常豐富。 必須以盡可能少的人力來執(zhí)行此改進(jìn)。 (不是因?yàn)槲覀儜卸?#xff0c;而是因?yàn)槿祟惖墓ぷ魅菀壮鲥e(cuò))。

重要的是要了解Java :: Geci不是預(yù)處理工具。 該代碼進(jìn)入了實(shí)際的源代碼,并且得到了更新。 Java :: Geci不能消除復(fù)制粘貼代碼和文本的冗余。 它對(duì)其進(jìn)行管理,并確保每當(dāng)導(dǎo)致結(jié)果發(fā)生更改時(shí),就一遍又一遍地復(fù)制和創(chuàng)建代碼。

Java :: Geci的一般工作方式

如果您已經(jīng)聽說過Java :: Geci,則可以跳過本章。 對(duì)于其他人,這里是框架的簡(jiǎn)要結(jié)構(gòu)。

Java :: Geci在單元測(cè)試運(yùn)行時(shí)生成代碼。 Java :: Geci實(shí)際上是作為一個(gè)或多個(gè)單元測(cè)試運(yùn)行的。 有一個(gè)流暢的API可以配置框架。 從本質(zhì)Geci ,這意味著運(yùn)行生成器的單元測(cè)試是一個(gè)單獨(dú)的聲明語句,該語句創(chuàng)建一個(gè)新的Geci對(duì)象,調(diào)用配置方法,然后調(diào)用generate() 。 此方法generate()生成某些內(nèi)容后返回true。 如果生成的所有代碼與源文件中的代碼完全相同,則返回false 。 如果源代碼發(fā)生任何更改,則在其周圍使用Assertion.assertFalse將使測(cè)試失敗。 只需再次運(yùn)行編譯和測(cè)試。

框架收集所有配置為要收集的文件,并調(diào)用已配置和注冊(cè)的代碼生成器。 代碼生成器與代表源文件的抽象Source和Segment對(duì)象一起使用,并且源文件中的行可能會(huì)被生成的代碼覆蓋。 當(dāng)所有生成器完成工作后,框架將收集所有段,將其插入Source對(duì)象,如果其中任何一個(gè)發(fā)生了重大變化,則它將更新文件。

最后,框架返回到啟動(dòng)它的單元測(cè)試代碼。 如果更新了任何源代碼文件,則返回值為true否則為false 。

JavaDoc中的示例

JavaDoc示例將自動(dòng)將示例包含到Apache Commons Lang3庫中的方法org.apache.commons.lang3.ClassUtils.getAbbreviatedName()的文檔中。 當(dāng)前在master分支中的文檔是:

/** * Gets the abbreviated class name from a {@code String}. * * The string passed in is assumed to be a class name - it is not checked. * * The abbreviation algorithm will shorten the class name, usually without * significant loss of meaning. * The abbreviated class name will always include the complete package hierarchy. * If enough space is available, rightmost sub-packages will be displayed in full * length. * * ** * * * * * <table><caption>Examples</caption> <tbody> <tr> <td>className</td> <td>len</td> <td>return</td> <td>null</td> <td>1</td> <td>""</td> <td>"java.lang.String"</td> <td>5</td> <td>"jlString"</td> <td>"java.lang.String"</td> <td>15</td> <td>"j.lang.String"</td> <td>"java.lang.String"</td> <td>30</td> <td>"java.lang.String"</td> </tr> </tbody> </table> * @param className the className to get the abbreviated name for, may be {@code null} * @param len the desired length of the abbreviated name * @return the abbreviated name or an empty string * @throws IllegalArgumentException if len <= 0 * @since 3.4 */

我們要解決的問題是自動(dòng)維護(hù)示例。 要使用Java :: Geci做到這一點(diǎn),我們必須做三件事:

  • 將Java :: Geci添加為項(xiàng)目的依賴項(xiàng)
  • 創(chuàng)建一個(gè)運(yùn)行框架的單元測(cè)試
  • 在單元測(cè)試中標(biāo)記零件,這是信息的來源
  • 用Java :: Geci`Segment`替換手動(dòng)復(fù)制的示例文本,以便Java :: Geci將自動(dòng)從測(cè)試中復(fù)制文本
  • 相依性

    Java :: Geci在Maven Central存儲(chǔ)庫中。 當(dāng)前版本是1.2.0 。 它必須作為測(cè)試依賴項(xiàng)添加到項(xiàng)目中。 最終的LANG庫沒有任何依賴關(guān)系,就像對(duì)JUnit或用于開發(fā)的任何其他內(nèi)容沒有依賴關(guān)系一樣。 必須添加兩個(gè)顯式依賴項(xiàng):

    com.javax0.geci javageci-docugen 1.2.0 test com.javax0.geci javageci-core 1.2.0 test

    工件javageci-docugen包含文檔處理生成器。 工件javageci-core包含核心生成器。 該工件還帶來了javageci-engine和javageci-api工件。 引擎本身就是框架,API本身就是API。

    單元測(cè)試

    第二個(gè)更改是新文件org.apache.commons.lang3.docugen.UpdateJavaDocTest 。 該文件是一個(gè)簡(jiǎn)單且非常常規(guī)的單元測(cè)試:

    /* * Licensed to the Apache Software Foundation (ASF) ... */ package org.apache.commons.lang3.docugen; import *; public class UpdateJavaDocTest { @Test void testUpdateJavaDocFromUnitTests() throws Exception { final Geci geci = new Geci(); int i = 0 ; Assertions.assertFalse(geci.source(Source.maven()) .register(SnippetCollector.builder().files( "\\.java$" ).phase(i++).build()) .register(SnippetAppender.builder().files( "\\.java$" ).phase(i++).build()) .register(SnippetRegex.builder().files( "\\.java$" ).phase(i++).build()) .register(SnippetTrim.builder().files( "\\.java$" ).phase(i++).build()) .register(SnippetNumberer.builder().files( "\\.java$" ).phase(i++).build()) .register(SnipetLineSkipper.builder().files( "\\.java$" ).phase(i++).build()) .register(MarkdownCodeInserter.builder().files( "\\.java$" ).phase(i++).build()) .splitHelper( "java" , new MarkdownSegmentSplitHelper()) .comparator((orig, gen) -> !orig.equals(gen)) .generate(), geci.failed()); } }

    我們?cè)谶@里可以看到巨大的Assertions.assertFalse調(diào)用。 首先,我們創(chuàng)建一個(gè)新的Geci對(duì)象,然后告訴它源文件在哪里。 在不深入細(xì)節(jié)的情況下,用戶可以通過多種不同方式指定來源。 在此示例中,我們只是說,當(dāng)我們使用Maven作為構(gòu)建工具時(shí),它們通常位于源文件中。

    接下來要做的是注冊(cè)不同的生成器。 生成器,尤其是代碼生成器通常獨(dú)立運(yùn)行,因此框架不保證執(zhí)行順序。 在這種情況下,如我們稍后將看到的,這些生成器在很大程度上取決于彼此的動(dòng)作。 確保它們以正確的順序執(zhí)行很重要。 該框架使我們可以分階段實(shí)現(xiàn)這一目標(biāo)。 詢問生成器,它們需要多少個(gè)階段,并且在每個(gè)階段中,還詢問是否需要調(diào)用它們。 每個(gè)生成器對(duì)象都是使用構(gòu)建器模式創(chuàng)建的,在此模式中,每個(gè)生成器對(duì)象都被告知應(yīng)運(yùn)行哪個(gè)階段。 當(dāng)生成器配置為在階段i運(yùn)行(調(diào)用.phase(i) )時(shí),它將告訴框架它至少需要i階段,而對(duì)于階段1..i-1 ,它將處于非活動(dòng)狀態(tài)。 這樣,配置可確保生成器按以下順序運(yùn)行:

  • 片段收集器
  • SnippetAppender
  • 片段正則表達(dá)式
  • 片段修剪
  • 片段編號(hào)器
  • SnipetLine船長
  • MarkdownCodeInserter
  • 從技術(shù)上講,所有這些都是生成器,但它們不會(huì)“生成”代碼。 SnippetCollector從源文件中收集片段。 當(dāng)一些示例代碼需要程序不同部分的文本時(shí), SnippetAppender可以將多個(gè)代碼片段附加在一起。 SnippetRegex可以在使用正則表達(dá)式和replaceAll功能之前修改代碼段(我們將在此示例中看到)。 SnippetTrim可以從行的開頭刪除前導(dǎo)制表符和空格。 當(dāng)代碼經(jīng)過深列表時(shí),這一點(diǎn)很重要。 在這種情況下,只需將摘錄片段導(dǎo)入文檔中,就可以輕松地將實(shí)際字符從右側(cè)的可打印區(qū)域中移出。 如果我們有一些代碼在文檔中引用了某些行,則SnippetNumberer可以對(duì)代碼段行進(jìn)行編號(hào)。 SnipetLineSkipper可以從代碼中跳過某些行。 例如,您可以對(duì)其進(jìn)行配置,以便跳過導(dǎo)入語句。

    最后,可以更改源代碼的真正“生成器”是MarkdownCodeInserter 。 創(chuàng)建它是為了將片段插入以Markdown格式的文件中,但是當(dāng)需要將文本插入JavaDoc部件中時(shí),它對(duì)于Java源文件也同樣有效。

    最后兩個(gè)配置調(diào)用告訴框架使用MarkdownSegmentSplitHelper并比較原始行和使用簡(jiǎn)單的equals代碼生成后創(chuàng)建的行。 SegmentSplitHelper對(duì)象可幫助框架在源代碼中查找段。 在Java文件中,這些段通常是默認(rèn)情況下的

    線。 這有助于將手冊(cè)和生成的代碼分開。 在所有高級(jí)編輯器中,該編輯器折疊也是可折疊的,因此您可以專注于手動(dòng)創(chuàng)建的代碼。

    但是,在這種情況下,我們將插入到JavaDoc注釋內(nèi)的段中。 這些JavaDoc注釋可能包含一些標(biāo)記,但也友好HTML,因此它們比Java更像Markdown。 尤其是,它們可能包含不會(huì)出現(xiàn)在輸出文檔中的XML注釋。 在這種情況下,由MarkdownSegmentSplitHelper對(duì)象定義的片段開始于

    <!-- snip snipName parameters ... -->

    <!-- end snip -->

    線。

    必須出于非常特殊的原因指定比較器。 該框架具有兩個(gè)內(nèi)置的比較器。 一個(gè)是默認(rèn)的比較器,它逐行比較每個(gè)字符。 它用于除Java外的所有文件類型。 在Java的情況下,使用了一個(gè)特殊的比較器,該比較器可以識(shí)別何時(shí)僅更改注釋或僅重新格式化代碼。 在這種情況下,我們將更改Java文件中注釋的內(nèi)容,因此我們需要告訴框架使用簡(jiǎn)單的比較器,否則它將不會(huì)影響我們進(jìn)行任何更新。 (花了30分鐘的時(shí)間調(diào)試為什么不先更新文件。)

    最后一個(gè)調(diào)用是generate() ,它將啟動(dòng)整個(gè)過程。

    標(biāo)記代碼

    記錄此方法的單元測(cè)試代碼是org.apache.commons.lang3.ClassUtilsTest.test_getAbbreviatedName_Class() 。 外觀應(yīng)如下所示:

    @Test public void test_getAbbreviatedName_Class() { // snippet test_getAbbreviatedName_Class assertEquals( "" , ClassUtils.getAbbreviatedName((Class<?>) null , 1 )); assertEquals( "jlString" , ClassUtils.getAbbreviatedName(String. class , 1 )); assertEquals( "jlString" , ClassUtils.getAbbreviatedName(String. class , 5 )); assertEquals( "j.lang.String" , ClassUtils.getAbbreviatedName(String. class , 13 )); assertEquals( "j.lang.String" , ClassUtils.getAbbreviatedName(String. class , 15 )); assertEquals( "java.lang.String" , ClassUtils.getAbbreviatedName(String. class , 20 )); // end snippet }

    我不會(huì)在此顯示原始內(nèi)容,因?yàn)槲ㄒ坏膮^(qū)別是插入了兩個(gè)snippet ...和end snippet行。 這些是SnippetCollector收集它們之間的線并將其存儲(chǔ)在“ snippet store”(沒有什么神秘的東西,實(shí)際上是一個(gè)很大的哈希圖)中的觸發(fā)器。

    定義一個(gè)細(xì)分

    真正有趣的部分是如何修改JavaDoc。 在本文開頭,我已經(jīng)介紹了今天的完整代碼。 新版本是:

    /** * Gets the abbreviated class name from a {@code String}. * * The string passed in is assumed to be a class name - it is not checked. * * The abbreviation algorithm will shorten the class name, usually without * significant loss of meaning. * The abbreviated class name will always include the complete package hierarchy. * If enough space is available, rightmost sub-packages will be displayed in full * length. * * ** you can write manually anything here, the code generator will update it when you start it up * <table><caption>Examples</caption> <tbody> <tr> <td>className</td> <td>len</td> <td>return</td> <!-- snip test_getAbbreviatedName_Class regex=" replace='/~s*assertEquals~((.*?)~s*,~s*ClassUtils~.getAbbreviatedName~((.*?)~s*,~s*(~d+)~)~);/* </tr><tr> <td>{@code $2}</td> <td>$3</td> <td>{@code $1}</td> </tr> /' escape='~'" --><!-- end snip --> </tbody> </table> * @param className the className to get the abbreviated name for, may be {@code null} * @param len the desired length of the abbreviated name * @return the abbreviated name or an empty string * @throws IllegalArgumentException if len <= 0 * @since 3.4 */

    重要的部分是15…20行的位置。 (您會(huì)看到,有時(shí)對(duì)代碼段行進(jìn)行編號(hào)很重要。)第15行表示段開始。 段的名稱為test_getAbbreviatedName_Class并且在沒有其他定義的情況下,該段還將用作要插入其中的代碼段的名稱。 但是,在插入代碼段之前,它會(huì)由SnippetRegex生成器進(jìn)行轉(zhuǎn)換。 它將替換正則表達(dá)式的每個(gè)匹配項(xiàng)

    \s*assertEquals\((.*?)\s*,\s*ClassUtils\.getAbbreviatedName\((.*?)\s*,\s*(\d+)\)\);

    與字符串

    * {@code $2}$3{@code $1}

    由于這些正則表達(dá)式位于字符串內(nèi),因此也需要\\\\而不是單個(gè)\ 。 那會(huì)使我們的正則表達(dá)式看起來很糟糕。 因此,可以將生成器SnippetRegex配置為使用我們選擇的其他一些字符,這種字符不太容易出現(xiàn)籬笆現(xiàn)象。 在此示例中,我們使用波浪號(hào)字符,并且通常可以使用。 當(dāng)我們運(yùn)行它時(shí),最終結(jié)果是:

    <!-- snip test_getAbbreviatedName_Class regex=" replace='/~s*assertEquals~((.*?)~s*,~s*ClassUtils~.getAbbreviatedName~((.*?)~s*,~s*(~d+)~)~);/* < tr > <td>{@code $2}< /td > <td>$3< /td > <td>{@code $1}< /td > < /tr > / ' escape=' ~'" --> * {@code (Class) null}1{@code "" } * {@code String.class}1{@code "jlString" } * {@code String.class}5{@code "jlString" } * {@code String.class}13{@code "j.lang.String" } * {@code String.class}15{@code "j.lang.String" } * {@code String.class}20{@code "java.lang.String" } <!-- end snip -->

    摘要/外賣

    文檔更新可以自動(dòng)化。 首先,這有點(diǎn)麻煩。 開發(fā)人員不必復(fù)制和重新格式化文本,而是必須設(shè)置新的單元測(cè)試,標(biāo)記代碼段,標(biāo)記段并使用正則表達(dá)式構(gòu)造轉(zhuǎn)換。 但是,完成后,任何更新都是自動(dòng)的。 單元測(cè)試更改后,不能忘記更新文檔。

    這與創(chuàng)建單元測(cè)試時(shí)遵循的方法相同。 首先,創(chuàng)建單元測(cè)試而不是只是臨時(shí)地調(diào)試和運(yùn)行代碼,然后查看調(diào)試器,以查看其是否確實(shí)如我們預(yù)期的那樣,這有點(diǎn)麻煩。 但是,完成后會(huì)自動(dòng)檢查所有更新。 當(dāng)影響舊代碼的代碼發(fā)生更改時(shí),就不會(huì)忘記檢查舊功能。

    我認(rèn)為文檔維護(hù)應(yīng)與測(cè)試一樣自動(dòng)化。 通常,任何可以在軟件開發(fā)中自動(dòng)化的東西都必須自動(dòng)化,以節(jié)省工作量并減少錯(cuò)誤。

    翻譯自: https://www.javacodegeeks.com/2019/09/tools-keep-javadoc-date.html

    總結(jié)

    以上是生活随笔為你收集整理的使JavaDoc保持最新状态的工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    成人在线网站观看 | 中文在线a天堂 | 色香蕉视频 | 国内成人精品2018免费看 | 久久久久免费视频 | av线上看| 国产在线黄 | 亚洲一级在线观看 | 国产中文字幕在线视频 | 在线观看黄色免费视频 | 国产成人一区二区三区影院在线 | 综合在线亚洲 | 久久久久久久久久久国产精品 | 日韩欧美在线高清 | 亚洲精品国产电影 | 亚洲小视频在线 | 另类五月激情 | 在线观看av免费观看 | 就要色综合 | 色播激情五月 | 国产精品久久久久久久久蜜臀 | 精品国产一区二区三区日日嗨 | 欧美一区三区四区 | 婷婷av电影 | 88av色| 国产日韩欧美精品在线观看 | 免费视频成人 | 久久99精品国产99久久6尤 | 丰满少妇在线 | 日韩午夜精品福利 | 国产成人免费网站 | 亚洲一级黄色大片 | 久久久久成人精品免费播放动漫 | 久久九九免费 | 精品国产a | 日韩最新在线 | 国产h在线观看 | 午夜久久久久久久久久久 | 夜夜爽88888免费视频4848 | 亚洲欧美在线综合 | 久久视频这里有久久精品视频11 | 婷婷新五月 | 国产精品午夜久久 | 国产一级免费片 | 久久99精品波多结衣一区 | 一级一片免费视频 | 亚洲第一中文网 | 天堂va在线高清一区 | 五月天中文在线 | 国产精品久久久久一区二区 | 日日干日日 | 日韩电影久久 | 久久99国产精品二区护士 | 日本久久91| 中文字幕乱码日本亚洲一区二区 | 美女啪啪图片 | 精品久久久久久亚洲综合网站 | 中文字幕丝袜一区二区 | 国产精品v欧美精品v日韩 | 日本精品中文字幕 | 91麻豆精品国产91久久久久久 | 97在线观看| 日韩中文字幕亚洲一区二区va在线 | 中文字幕免费观看全部电影 | 一本一道久久a久久精品 | 成年人视频在线免费 | 免费在线一区二区 | 狠狠色伊人亚洲综合网站色 | 亚洲做受高潮欧美裸体 | 天天操天天操天天操 | 日韩精品一卡 | 日日碰夜夜爽 | 亚洲视频www | 999亚洲国产996395 | 午夜视频在线观看一区 | 九九热在线精品视频 | 国产日韩精品欧美 | 日日干天天爽 | 亚洲激情一区二区三区 | 亚洲在线精品 | 免费视频久久久 | 少妇av片 | 国产精品美女 | 免费看的黄色片 | 人人超在线公开视频 | 久久欧美精品 | 免费看十八岁美女 | 色欧美日韩 | 99中文字幕在线观看 | 久久无码精品一区二区三区 | 亚洲播播| 久二影院| 国产精品大尺度 | 91成人在线观看高潮 | 菠萝菠萝在线精品视频 | 国产一区二区三区免费视频 | 中文字幕观看av | 国产91精品在线观看 | 中文字幕有码在线观看 | 免费在线观看不卡av | 91字幕| 黄色aaa毛片 | 亚洲国产精品人久久电影 | 在线不卡a | 亚洲成人国产精品 | 99tvdz@gmail.com| 亚洲精品综合一二三区在线观看 | 中文字幕在线播放视频 | 日韩免费不卡视频 | 欧美三级在线播放 | 久久亚洲综合国产精品99麻豆的功能介绍 | 成片免费| 91视视频在线直接观看在线看网页在线看 | av片在线观看| 免费在线国产黄色 | 亚洲v欧美v国产v在线观看 | 国产精品视频大全 | 日韩大片在线免费观看 | 国产精品女人久久久久久 | 丝袜美腿在线播放 | 色婷婷色 | 久草在线最新视频 | 高清免费在线视频 | 久久免费视频在线观看6 | 91精品伦理 | 欧美91精品久久久久国产性生爱 | 国产91粉嫩白浆在线观看 | 天天舔夜夜操 | 国产精品自产拍在线观看蜜 | 9999在线观看 | 欧美激情精品久久久久久免费 | 亚洲免费av片 | 国产精品99久久久久久久久久久久 | 日本久久免费视频 | av资源免费在线观看 | 亚洲黄色片在线 | 99精品免费视频 | 日韩免费 | 亚洲视频在线免费看 | 久久免费观看视频 | 欧美片网站yy | 国产精品久久久久一区 | a在线播放| 色射色| 国产精品剧情在线亚洲 | 亚洲人在线视频 | 日韩a级黄色片 | www黄免费| 美女网站色 | 天天草天天插 | 国内久久看 | 久久综合久久综合久久 | 三级视频日韩 | 亚洲欧美精品一区二区 | 国产在线不卡精品 | 国产精品视频地址 | 91久久国产露脸精品国产闺蜜 | 正在播放久久 | 久久精品视频18 | 91看片网址| 精品国产伦一区二区三区免费 | 日韩专区一区二区 | 日本久久综合网 | 国产日韩精品一区二区在线观看播放 | 久久久久久蜜桃一区二区 | 美女精品在线 | 免费中午字幕无吗 | av中文字幕在线播放 | 国产精品原创 | 午夜国产在线 | 欧美日韩一区二区三区不卡 | 欧美日韩国产在线精品 | 国产区精品视频 | 国语自产偷拍精品视频偷 | 欧美一区二区精品在线 | 黄av资源| 国产超碰97 | 亚洲欧美激情精品一区二区 | 在线观影网站 | 国产麻豆精品95视频 | 日韩xxxx视频 | 国产精品第54页 | 久久亚洲免费 | 久久精品久久99 | 最近免费观看的电影完整版 | 人人插人人搞 | av一级片在线观看 | 日韩特黄av | 97人人超 | 91成版人在线观看入口 | 欧美久久综合 | 麻豆久久久| 91精品国产乱码在线观看 | 在线观看视频黄色 | 久久综合福利 | 丁香婷婷色综合亚洲电影 | 久久免费视频7 | 日韩欧美在线综合网 | 97人人艹 | 日韩精品视频在线免费观看 | 欧美精品一二三 | 国产一区在线看 | 最近久乱中文字幕 | 亚洲a成人v| 久久不射影院 | 成人亚洲精品国产www | 欧美色图亚洲图片 | 人人爽人人爽av | 人人揉人人揉人人揉人人揉97 | 国产在线观看免费观看 | 国产精品在线看 | 国产黄在线观看 | 国产91全国探花系列在线播放 | 亚洲国产播放 | 五月香婷| 久久久免费少妇 | 91午夜精品 | 91精品对白一区国产伦 | 最近日韩免费视频 | 亚洲午夜久久久综合37日本 | 亚洲国产成人精品电影在线观看 | 国产专区视频在线观看 | 亚洲人成精品久久久久 | 国产露脸91国语对白 | 肉色欧美久久久久久久免费看 | 91亚洲视频在线观看 | 久久久久免费精品 | 伊人精品影院 | 九九九九精品九九九九 | 亚洲闷骚少妇在线观看网站 | 国产婷婷视频在线 | 欧美激情视频在线观看免费 | 久久久久久综合网天天 | av久久久| 日韩免费一区 | 99精品毛片 | 天天操天天操天天操天天操 | 欧美电影在线观看 | 国产日韩视频在线观看 | 国产成人一区二区三区电影 | 丁香av在线 | 九九九热精品免费视频观看 | 亚洲va欧美va人人爽 | 国产一级做a爱片久久毛片a | 国产日产精品久久久久快鸭 | 国产精品亚州 | 99热都是精品 | 免费精品在线 | 国产福利中文字幕 | 九九在线国产视频 | 国产精品久久网站 | 日韩两性视频 | 91视频a | 日日夜夜人人天天 | 久久精品欧美 | 九九久久久久99精品 | 国色天香在线 | 色婷婷激情电影 | 国产精品久久久久久久久搜平片 | 久久久久久久影院 | 国产精品永久免费观看 | 美女网站视频一区 | 丁香免费视频 | 日韩激情一二三区 | 欧美性生爱 | 色多多视频在线观看 | 日韩激情一二三区 | 午夜美女av | 国产日本高清 | 日本少妇高清做爰视频 | 日本三级人妇 | 久久综合婷婷综合 | 国产美女精品视频 | 国产香蕉97碰碰碰视频在线观看 | 婷婷五月在线视频 | 精品国产视频在线 | 岛国精品一区二区 | 久久婷婷开心 | 99re国产视频 | 麻豆久久久久 | 亚洲欧美精品一区二区 | 伊人中文字幕在线 | 性色xxxxhd | 综合在线观看色 | 国产精品成人国产乱 | 色婷婷久久久综合中文字幕 | 欧美一级艳片视频免费观看 | 久久免费精品国产 | 国产一级电影网 | 在线成人小视频 | 一区三区视频在线观看 | 久久精品人 | 97超碰色 | 国产福利av | 最新av电影网址 | 色999五月色 | 日韩二三区| 日日精品 | 中文字幕在线免费播放 | 超级碰碰免费视频 | 99久久99视频只有精品 | 爱爱av网站| 久久深爱网 | 亚洲精品小视频 | 日韩二区精品 | 欧美性成人 | 激情导航 | 欧美视屏一区二区 | 国产高清av | 免费高清影视 | 久草9视频 | 欧美激情精品久久久久 | 成人va在线观看 | 四季av综合网站 | av免费在线网 | 中文字幕亚洲综合久久五月天色无吗'' | 中文av字幕在线观看 | 亚洲四虎在线 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 91色吧| 国产在线不卡视频 | 欧美精品成人在线 | 中文字幕资源在线 | 色丁香婷婷 | 香蕉在线播放 | 麻豆91精品 | 国产 成人 久久 | 婷婷在线资源 | 日韩欧美一区二区三区视频 | 午夜精品一区二区国产 | 久久视频免费看 | 日韩毛片在线播放 | 国产麻豆剧传媒免费观看 | 97av色 | 国产字幕在线看 | 国产在线精品一区二区三区 | 欧美成人手机版 | 午夜在线资源 | 中文字幕在线看片 | 欧美日韩中文在线视频 | 欧美美女一级片 | 亚洲天堂激情 | 久草视频中文在线 | 国产一区二区在线视频观看 | 97视频在线免费播放 | 久久亚洲欧美日韩精品专区 | 亚洲精品一区二区三区在线观看 | 综合在线色 | 97超碰在线资源 | 日韩电影在线观看一区二区三区 | 色婷婷a | 毛片网在线播放 | 精品黄色视 | 成人av影院在线观看 | 国产超碰在线观看 | 欧美在线观看视频 | 91成人在线免费观看 | 美女网站在线播放 | 成人免费大片黄在线播放 | 欧美日韩精品在线一区二区 | 国产精品久久久久久久av电影 | 欧美成人精品三级在线观看播放 | 日韩在线短视频 | 久久香蕉一区 | 精品福利网站 | 青春草免费在线视频 | 麻豆一精品传二传媒短视频 | 欧美精品一二 | h动漫中文字幕 | 成人黄色小说网 | 99在线热播 | 中文字幕av在线播放 | 亚洲专区一二三 | 精品99999| 91成人免费 | 在线99热| 国产乱码精品一区二区蜜臀 | 久久婷婷精品 | 色在线国产 | 黄av资源 | av免费电影在线观看 | 亚洲国产精品视频在线观看 | 天天色天天干天天色 | 国产99精品| 欧美精品xxx | 日韩黄色软件 | 精品国产一区二区三区蜜臀 | 91在线小视频 | 毛片一级免费一级 | 免费在线激情电影 | 五月婷丁香 | 在线观看黄色的网站 | 五月在线视频 | 欧美日韩一区二区视频在线观看 | 日韩黄视频 | 国产成人三级 | av在线免费播放 | 少妇视频在线播放 | 99久久精品免费视频 | 91在线看网站| 亚洲综合欧美精品电影 | 中文字幕免费观看 | 久久综合精品国产一区二区三区 | 亚洲欧美成人 | 亚洲精品乱码久久久久久按摩 | 亚洲成年人免费网站 | 99视频精品全国免费 | 蜜臀av性久久久久av蜜臀三区 | 日韩伦理一区二区三区av在线 | 亚洲一区二区91 | 久久99精品久久久久蜜臀 | 精品一二三区 | 中国一级片视频 | 久久国产精品精品国产色婷婷 | 久久公开免费视频 | 在线观看视频免费播放 | 九九日九九操 | av视屏在线播放 | 久久黄色影院 | 国产精品第一视频 | 美女黄视频免费看 | 中文在线资源 | www.人人干 | 亚洲国产欧美在线看片xxoo | 国产精品久久久久久电影 | 高潮久久久久久 | 青草视频免费观看 | 韩日精品中文字幕 | 国产精品久久久久久麻豆一区 | 日韩在线观看一区二区 | 美女免费视频一区二区 | 国产精品男女 | 久久99热精品这里久久精品 | 欧美做受高潮1 | 国产美女网 | 337p西西人体大胆瓣开下部 | 成人av在线看| 最新av在线免费观看 | 91看片淫黄大片一级在线观看 | 伊人永久在线 | 91成人免费 | 久久国产手机看片 | 欧美色综合天天久久综合精品 | 免费高清在线视频一区· | 午夜精品久久久久久99热明星 | 在线观看视频精品 | 国产精品久久久久一区二区 | 五月激情电影 | 天堂av高清 | 中文字幕在线观看视频一区二区三区 | 欧美在线1区 | 五月天婷婷狠狠 | 久久久久久久久久久久久久av | 五月天狠狠操 | 精品国产一区二区三区在线 | 日韩在线观看中文字幕 | 免费视频成人 | 国产xxxx做受性欧美88 | 亚洲高清视频在线播放 | 99视频久 | 亚洲精品中文在线资源 | 亚洲视频在线观看网站 | 中文字幕综合在线 | 久久久免费电影 | 久久亚洲私人国产精品va | 久久综合久久久久88 | 人人射人人澡 | 中文字幕av免费在线观看 | 久久这里只有精品视频99 | 久久三级毛片 | 国产久草在线观看 | 国产免费又粗又猛又爽 | 国产一区福利在线 | 亚洲综合欧美日韩狠狠色 | 欧美精品乱码久久久久久 | 国产精品无 | 国产一级在线播放 | 激情久久五月 | 在线免费观看黄色小说 | 伊人天天狠天天添日日拍 | 在线免费视频你懂的 | 免费合欢视频成人app | 日韩美视频 | 国产免费一区二区三区最新 | 黄色精品国产 | 成人午夜久久 | 97手机电影网 | 久久综合九色综合久久久精品综合 | 亚洲少妇激情 | 欧美影院久久 | 国产永久免费观看 | 国产精品久久一区二区三区, | 伊人干综合| 日韩手机在线 | 日韩欧美99 | 色婷婷精品大在线视频 | 波多野结衣一区二区三区中文字幕 | 一区二区av | 国产精品白浆 | 成人午夜电影网 | 婷婷视频在线播放 | 97成人在线视频 | 精品国产免费久久 | 成人午夜在线电影 | 国偷自产中文字幕亚洲手机在线 | 国产精品成人av电影 | 天堂va在线高清一区 | 精品国产诱惑 | 久久手机在线视频 | 国产精品永久在线 | 久久伊人精品一区二区三区 | 天天干天天插 | 激情在线网站 | 超碰成人av | 国模视频一区二区三区 | 婷婷网在线 | 美女一二三区 | 欧美日韩不卡一区二区三区 | 日韩av综合网站 | 日韩成人精品一区二区三区 | 欧美片网站yy | 婷婷激情av | 成年人在线观看免费视频 | 在线看的毛片 | 日日躁夜夜躁aaaaxxxx | 狠狠色丁香九九婷婷综合五月 | 麻豆一区在线观看 | 国产一区二区手机在线观看 | 久久国产精品久久国产精品 | 97国产精品亚洲精品 | 久久亚洲欧美 | av三区在线 | avwww在线| 日韩在线观看视频中文字幕 | 色婷婷骚婷婷 | 国模一二三区 | 99精品久久99久久久久 | 国产一区二区久久精品 | 亚洲精品免费观看 | 美女中文字幕 | 激情综合色播五月 | 亚洲区精品视频 | 欧美性色xo影院 | 国产精品久久久久久久久久三级 | 久久成人视屏 | 国产v在线播放 | 成人一区不卡 | 高清av中文字幕 | 天天色天天综合 | 天天射天天干天天 | 麻豆久久一区 | 麻豆91精品91久久久 | 国产理伦在线 | 91成人看片| 国产精品观看在线亚洲人成网 | 婷婷六月在线 | 免费成人av | 视频直播国产精品 | 欧美91精品久久久久国产性生爱 | 久草视频中文 | 成人av一区二区兰花在线播放 | 狠狠成人| 夜色资源站国产www在线视频 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 国产精品热视频 | 欧美久久电影 | 中文字幕一区二区三区四区视频 | 国产精品视频免费 | 国产精品午夜免费福利视频 | 99精品视频在线 | 婷婷色九月 | 日韩免费一区二区三区 | 久久亚洲私人国产精品 | 欧美乱熟臀69xxxxxx | 综合网五月天 | 欧美尹人 | 日韩精品免费在线 | 香蕉视频网站在线观看 | 久久久久国产精品午夜一区 | 美女在线观看av | 国产免费区 | 一级黄色片在线播放 | 日韩精品一区二区三区在线视频 | 97色婷婷成人综合在线观看 | 亚洲激情电影在线 | 最新国产一区二区三区 | 天堂麻豆 | 中文十次啦 | 一级淫片在线观看 | 久草久热 | 91最新视频在线观看 | 国产在线播放不卡 | 国产精品久久久久久高潮 | 韩日三级在线 | 婷婷成人亚洲综合国产xv88 | 亚洲天堂网站视频 | 色婷婷综合久久久久中文字幕1 | 最近日本字幕mv免费观看在线 | 91av视频在线免费观看 | 国产自在线观看 | 国产日韩欧美视频在线观看 | 97看片| 91日韩精品视频 | www.久久色 | 伊甸园永久入口www 99热 精品在线 | 免费看成人av| 亚洲涩涩网 | 一区二区三区在线免费观看 | 成 人 免费 黄 色 视频 | 懂色av一区二区在线播放 | 精品在线一区二区 | 人人爱人人做人人爽 | 青青河边草免费直播 | 国产免费a| 国产成人免费网站 | 99热在线观看 | 97国产小视频 | 亚洲一区视频在线播放 | 久久久精品在线观看 | 成人av电影在线观看 | 日韩激情免费视频 | 久草香蕉在线视频 | 激情网五月天 | 91九色在线观看 | 国产男女爽爽爽免费视频 | 国产精品v欧美精品 | 娇妻呻吟一区二区三区 | 亚洲国产高清在线观看视频 | 黄色电影在线免费观看 | www黄色大片 | 亚洲aⅴ在线| 亚洲精品男人的天堂 | 91精品国产成人www | 在线亚洲精品 | 美女一区网站 | 激情五月婷婷综合 | 97视频免费看 | 一区免费视频 | 免费观看的黄色片 | 日韩精品久久久久久中文字幕8 | 992tv成人免费看片 | 亚洲综合视频网 | 国产亚洲欧美日韩高清 | 国产黄色视 | 亚洲va欧美 | 国产精品1区2区在线观看 | 在线观看你懂的网址 | 国产精品欧美一区二区 | 日韩欧美视频免费在线观看 | 天堂在线一区二区 | 国产美女黄网站免费 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 精品96久久久久久中文字幕无 | 婷婷丁香视频 | 一区二区三区影院 | 久久成人国产精品入口 | 国产区精品视频 | 中文字幕在线视频免费播放 | 黄色在线免费观看网站 | 一区二区三区 亚洲 | 亚洲永久精品一区 | 高潮久久久 | 四虎在线观看精品视频 | av天天草| 日韩一区在线播放 | 国产精品视频免费观看 | 日韩av偷拍 | av超碰免费在线 | 午夜a区 | 久草精品视频在线观看 | 久久久午夜精品理论片中文字幕 | av不卡网站 | 99视| 2022中文字幕在线观看 | 日韩视频中文 | 24小时日本在线www免费的 | 欧美精品九九99久久 | 九九日韩| 五月激情av| 国产精品成人av久久 | 亚洲精品黄色 | 在线视频一区二区 | 一级免费看视频 | 麻豆视频一区二区 | 新版资源中文在线观看 | 操操操夜夜操 | 全黄网站 | 黄色资源在线观看 | 国产精品久久久久一区二区三区 | 麻豆视频入口 | 免费国产在线观看 | 成人午夜久久 | 蜜臀av性久久久久av蜜臀妖精 | 免费看一级一片 | 国内精品久久天天躁人人爽 | 久久亚洲私人国产精品va | 国产涩涩在线观看 | 日本三级在线观看中文字 | 韩日精品视频 | 四虎永久免费网站 | 欧美精品二区 | 91精品国产91p65 | 成人精品一区二区三区电影免费 | 欧美一区日韩精品 | 激情丁香 | 99精品免费久久久久久久久日本 | 一区二区三区国产精品 | 亚洲精品99久久久久久 | 久久精品三级 | 91亚色视频在线观看 | 精品一二三四在线 | 激情影院在线 | 欧美少妇xx | 国产精品久久久区三区天天噜 | 精品久久久久久久久久久久久久久久久久 | 在线影视 一区 二区 三区 | 亚洲国产精品人久久电影 | 亚洲人成影院在线 | 黄色成人小视频 | 国产青春久久久国产毛片 | 国模精品一区二区三区 | 日日干美女 | 国产精品美女久久久 | 亚洲精品乱码久久久久久蜜桃欧美 | 亚洲视频www | 国产精品免费小视频 | 911国产| 精品一二三区视频 | 91精品国产综合久久福利不卡 | 一区二区三区四区精品 | 久久中文欧美 | 在线看av网址 | 美女国内精品自产拍在线播放 | 99久久久久久国产精品 | 五月天婷亚洲天综合网精品偷 | 色网av| 久久影院精品 | 亚洲国产午夜 | 久久午夜色播影院免费高清 | 精品欧美乱码久久久久久 | 久av电影 | 特黄特黄的视频 | 免费在线观看av不卡 | 精品国产一区二区三区噜噜噜 | 日韩最新在线 | 日韩免费一区 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 亚洲人视频在线 | www黄com| 久久久久国产精品www | 婷婷国产在线 | 亚洲天堂网在线播放 | 久久手机免费视频 | 福利网在线 | 日本一区二区不卡高清 | 欧美贵妇性狂欢 | 日韩首页| 一区二区三区韩国免费中文网站 | 五月婷婷中文网 | 最新精品视频在线 | 精品久久久久久久久中文字幕 | 色噜噜日韩精品一区二区三区视频 | 久久精品爱视频 | 欧美国产日韩一区二区三区 | 国产一线天在线观看 | 99热在线观看| 在线免费av网站 | 激情婷婷亚洲 | 欧美日韩亚洲第一页 | 国产精品毛片一区二区三区 | 国产精品美女在线 | 成人黄色小说在线观看 | 99综合电影在线视频 | 久草精品视频在线看网站免费 | 中文字幕在线观看视频网站 | 国产视频一区精品 | 欧美精品久久久久久久久久丰满 | 右手影院亚洲欧美 | 欧美精品久久人人躁人人爽 | 日韩在线视频网站 | 国产韩国日本高清视频 | 97看片网 | 国产精品自拍av | 超碰人人在线观看 | 精品一区二区三区四区在线 | 色播五月激情五月 | 亚洲视频资源在线 | 久久影视中文字幕 | 久久综合九色综合97_ 久久久 | 男女视频久久久 | 成人黄色毛片视频 | 91精彩视频| 久久久久婷 | 人人干人人超 | 久久视频免费在线 | 五月婷综合 | 国产99视频在线观看 | 三级av免费看 | 亚洲激情五月 | 狠狠干,狠狠操 | 亚洲电影久久 | 久久久国产精品亚洲一区 | 精品av在线播放 | 色综合天天综合网国产成人网 | 亚洲激情一区二区三区 | 在线观看亚洲成人 | 日本爱爱片| 成人av一区二区兰花在线播放 | www.夜夜操.com | 国产成人一区二区精品非洲 | 久久久五月婷婷 | 五月综合激情网 | 人人爱爱人人 | 亚洲少妇xxxx | 草久中文字幕 | 91香蕉视频黄 | 国产精品麻豆99久久久久久 | 久草网站在线观看 | 欧美韩日在线 | 国产精品免费视频观看 | 一区二区精品视频 | 久艹视频在线观看 | 亚洲精品xxxx | 一区二区不卡在线观看 | 成年人av在线播放 | 欧美综合在线视频 | 国产一区二区三区免费在线观看 | 天天干一干 | 成人一级影视 | 成人在线免费视频观看 | 欧美日韩69| 免费三级骚 | 91干干干 | 欧美aa一级 | sesese图片| av网站免费看 | 久久黄色免费 | 中文av在线播放 | 日韩av在线资源 | 国产视频精品久久 | 欧洲成人av | 国产精品12| 亚洲国产精品成人精品 | 日韩欧美视频 | 成人免费视频免费观看 | 片黄色毛片黄色毛片 | 国产精品视频资源 | 成人免费观看a | 日韩中文字幕国产 | 一区二区三区四区五区六区 | 中文字幕免费高清在线观看 | 亚洲va欧美va国产va黑人 | 国产人成免费视频 | 午夜精品影院 | 久久a免费视频 | 久久99久久99久久 | 亚洲伦理一区二区 | 国产视频 亚洲视频 | 久久夜色精品国产欧美一区麻豆 | 国产免费成人 | 麻豆av一区二区三区在线观看 | 国产99一区视频免费 | 久久躁日日躁aaaaxxxx | 国产精彩视频一区二区 | 久久人91精品久久久久久不卡 | 亚洲色视频| 69精品久久久 | 92精品国产成人观看免费 | 国产高清av免费在线观看 | 啪啪免费视频网站 | 黄色三级网站在线观看 | 天天干天天射天天爽 | 99精品视频免费观看 | 丝袜av一区 | 日韩精品一区二区电影 | 亚洲成年人在线播放 | 狠狠色丁香婷婷 | 国产视频欧美视频 | 最新超碰| 国产精品区在线观看 | 九九久久免费 | 免费亚洲视频在线观看 | 久久av影视| 天天爱av导航 | 69av在线播放 | 美女网站在线看 | 成人黄色大片网站 | 亚洲aⅴ乱码精品成人区 | 久久久久久久久久久久久国产精品 | 日韩中文在线视频 | av中文字幕在线观看网站 | 五月天天av | 黄色大片日本免费大片 | 国产亚洲综合性久久久影院 | 日韩精品无码一区二区三区 | 久草电影免费在线观看 | 久久综合中文色婷婷 | www.国产高清| av大片网站 | 色欧美88888久久久久久影院 | 国产一区二区三区黄 | 蜜桃av久久久亚洲精品 | 成人a级大片 | 一级a毛片高清视频 | 99热官网 | 亚洲国产激情 | 国产色一区 | 日韩一区二区免费视频 | 国产专区在线播放 | 在线日韩视频 | 免费av在线网站 | 欧洲精品码一区二区三区免费看 | 亚洲电影网站 | 一区二区三区在线观看免费 | 国产成人在线精品 | 日韩免费在线观看 | 日本久久久久久科技有限公司 | 丰满少妇一级 | 色全色在线资源网 | 91九色国产在线 | 狠狠色丁香 | 天堂av网在线 | 福利视频午夜 | 免费av网站在线看 | 伊人久久精品久久亚洲一区 | 免费观看www7722午夜电影 | 福利二区视频 | 99精品小视频 | 手机av网站 | 欧美日韩有码 | 婷婷久操| 91成人午夜 | 久久免费黄色大片 | 亚洲人人爱 | 婷婷综合影院 | 天堂网av 在线 | 欧美一级欧美一级 | 中文字幕综合在线 | 91中文字幕视频 | 久久av网 | 国产色视频一区 | 天堂av中文字幕 | 99在线精品视频观看 | 91夜夜夜| 成人精品99| 天天操天天操天天操天天操天天操 | 欧美一区二区精美视频 | 精品视频一区在线观看 | 亚洲精品免费在线播放 | 成人aⅴ视频 | 午夜国产在线观看 | 美女国产网站 | 日韩中文字幕免费视频 | 又黄又刺激又爽的视频 | 久久99视频免费观看 | 麻豆传媒视频在线播放 | 国产精品久久久久久99 | 日韩欧在线 | 在线之家免费在线观看电影 | 在线日韩 | 日日草天天草 | 成年人视频在线观看免费 | 成人一区二区三区中文字幕 | 手机在线视频福利 | 欧美精品成人在线 | 天天色官网| 色婷婷狠狠18 | 成人全视频免费观看在线看 | 欧美大码xxxx | 欧美精品免费在线观看 | 一级国产视频 | 不卡的av在线 | 亚洲 欧美变态 另类 综合 | 久久免费试看 | 不卡电影一区二区三区 | 中文字幕av影院 | 99热国产精品 | 国产精品久久久久永久免费 | 亚洲成人免费观看 | 亚洲 成人 一区 | 中文av一区二区 | 最新91在线视频 | 狠狠干夜夜 | 国产一级电影免费观看 | 2022国产精品视频 | 色欲综合视频天天天 | 久久久久看片 | 国产免费中文字幕 | 中文字幕免费在线 | 91丨porny丨九色 | 在线免费色视频 | 国产一区在线视频播放 | 婷婷六月天丁香 | 99婷婷狠狠成为人免费视频 | 日韩av不卡在线观看 | 在线看国产一区 | 国产五月天婷婷 | 黄色成人免费电影 |