精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

提前在開發(fā)階段暴露代碼問題,攜程Alchemy代碼質(zhì)量平臺(tái)

開發(fā) 新聞
在本文中,我們介紹了Alchemy平臺(tái)提供的代碼靜態(tài)分析,代碼探索以及通過與Gitlab CI/CD集成帶來的持續(xù)集成能力,可以在開發(fā)階段暴露出更多的代碼潛在問題和風(fēng)險(xiǎn),并及時(shí)反饋給相關(guān)人員。

一、背景

隨著敏捷開發(fā),DevOps開發(fā)模式的流行,代碼質(zhì)量分析作為研發(fā)質(zhì)量保證體系的重要組成部分,不僅能有效的降低因頻繁迭代帶來的故障風(fēng)險(xiǎn),而且對(duì)整個(gè)工程團(tuán)隊(duì)的效能提升有著巨大的價(jià)值。

攜程很久以前就已經(jīng)開始進(jìn)行DevOps的建設(shè),通過Gitlab CI/CD在開發(fā)提交代碼觸發(fā)的流水線pipeline中引入靜態(tài)掃描、單元測(cè)試、集成測(cè)試等流程,在開發(fā)過程中打造了一套閉環(huán)的代碼質(zhì)量保障體系。其中,在靜態(tài)代碼分析階段引入了SonarQube,并且通過對(duì)原有SonarQube代碼規(guī)范庫中的規(guī)范進(jìn)行篩選和擴(kuò)展,形成了自己的代碼規(guī)范庫。但是在實(shí)際應(yīng)用過程中,我們發(fā)現(xiàn)仍然有一些問題需要優(yōu)化解決:

  • 在開發(fā)過程中,代碼規(guī)范只能通過開發(fā)人員自我約束,缺少統(tǒng)一的平臺(tái)對(duì)各應(yīng)用代碼的潛在風(fēng)險(xiǎn)問題統(tǒng)一進(jìn)行分析,且問題難以定位到開發(fā)人員進(jìn)行治理。
  • 代碼單元測(cè)試通過率和代碼覆蓋率都很高,但仍然存在一些在單元測(cè)試階段應(yīng)被發(fā)現(xiàn)的問題未暴露出來,導(dǎo)致上線后出現(xiàn)bug,單元測(cè)試用例的質(zhì)量缺乏有效性及可靠性保證。
  • 隨著項(xiàng)目的發(fā)展,開發(fā)人員為了避免影響已有功能,在開發(fā)過程中大量復(fù)制粘貼,導(dǎo)致出現(xiàn)很多難以維護(hù)的重復(fù)代碼,且程序邏輯結(jié)構(gòu)過于復(fù)雜,修改邏輯牽一發(fā)而動(dòng)全身,可維護(hù)性差。
  • 代碼中充斥著大量的sql拼接,以及一些不規(guī)范的寫法導(dǎo)致潛在的問題,需要對(duì)此類代碼進(jìn)行治理

二、平臺(tái)介紹

Alchemy平臺(tái)是一個(gè)代碼質(zhì)量分析平臺(tái),提供Infer分析、代碼分析、自定義掃描、代碼搜索等功能,其中代碼質(zhì)量分析內(nèi)容包含代碼行,sonar問題, infer問題,UT規(guī)則,重復(fù)代碼以及圈復(fù)雜度等。用戶可以根據(jù)自己的需求在平臺(tái)上進(jìn)行掃描項(xiàng)配置,并查看應(yīng)用的代碼質(zhì)量分析結(jié)果。

為了及時(shí)獲得對(duì)提交代碼變更的質(zhì)量反饋,作為DevOps中重要的一環(huán),Alchemy平臺(tái)與Gitlab CI/CD相結(jié)合,將靜態(tài)代碼分析提前至開發(fā)提交或合并代碼階段。開發(fā)人員提交代碼至Gitlab,觸發(fā)流水線相關(guān)任務(wù)執(zhí)行,任務(wù)執(zhí)行完成之后可以對(duì)某些指標(biāo)(如增量代碼引入的空指針)設(shè)置紅線進(jìn)行卡點(diǎn),如果指標(biāo)在指定范圍內(nèi),允許合并代碼并發(fā)布,如果指標(biāo)超過了紅線設(shè)置范圍,則不允許合并代碼,開發(fā)人員修復(fù)問題后再次提交代碼進(jìn)行流水線的集成發(fā)布。掃描分析結(jié)果可以在Gitlab或者Alchemy平臺(tái)上展示,幫助開發(fā)人員在快速迭代的同時(shí)保證代碼質(zhì)量。

圖片

靜態(tài)代碼掃描流程

三、系統(tǒng)架構(gòu)

Alchemy平臺(tái)包含Alchemy-client、Alchemy-service和Alchemy-web。其中,Alchemy-client為掃描腳本,包含Infer分析,UT掃描,重復(fù)代碼掃描、自定義掃描等功能,集成到Docker鏡像中,Alchemy-service提供數(shù)據(jù)存儲(chǔ)、分析等后臺(tái)服務(wù),且依賴代碼搜索服務(wù)CodeSearch-Service實(shí)現(xiàn)代碼搜索功能,Alchemy-web負(fù)責(zé)頁面交互。

開發(fā)人員提交代碼,觸發(fā)Gitlab CI/CD中靜態(tài)代碼分析job在GitRunner中執(zhí)行,執(zhí)行時(shí)先從Docker倉庫下載鏡像,啟動(dòng)容器后執(zhí)行Alchemy-client腳本,腳本會(huì)根據(jù)平臺(tái)配置來執(zhí)行相應(yīng)的掃描任務(wù),掃描完成后,將結(jié)果上傳至Alchemy-service,存儲(chǔ)到mongodb數(shù)據(jù)庫,最終在前端頁面展示分析結(jié)果。

圖片

Alchemy架構(gòu)圖

四、功能

4.1 Infer分析

Infer是Facebook出品的一個(gè)靜態(tài)分析工具,可以分析Java、Objective-c或者C代碼,報(bào)告潛在的問題,包括空指針,資源泄漏等。Alchemy平臺(tái)將Infer引入代碼靜態(tài)分析階段,目前已支持全量和增量分析兩種模式。

全量模式需分析應(yīng)用倉庫中的所有代碼,能分析出所有代碼引入的潛在問題,對(duì)于代碼量較大的應(yīng)用,由于需要分析所有代碼文件,掃描時(shí)間比較長(zhǎng),在一定程度上影響開發(fā)發(fā)布進(jìn)度,且對(duì)未修改的代碼進(jìn)行了非必要的重復(fù)分析,在代碼修改量較少的情況下造成資源浪費(fèi)。因此,我們嘗試加入緩存機(jī)制,并引入了增量分析模式,增量模式需要獲取本次提交修改的文件,在分析階段只針對(duì)這些改動(dòng)文件進(jìn)行分析,能大大節(jié)省分析時(shí)間。Infer分析流程如下:

圖片

Infer分析流程圖

在分析過程中,首先判斷是否為第一次分析,如果沒有分析歷史記錄,則系統(tǒng)默認(rèn)采用全量模式,否則需判斷Infer掃描配置,若配置為全量模式,則分析此代碼工程的全部文件,若配置為增量模式,需獲取此次提交修改的文件列表,編譯過程完成之后,在分析階段指定文件列表進(jìn)行分析。獲取到分析出的問題列表后,判斷問題所在的行是否為修改行,如果是,則記錄為本次修改導(dǎo)致的新增問題,否則為歷史遺留的全量問題。

在實(shí)際應(yīng)用中,針對(duì)封裝的判空方法,通過添加@TrueOnNull或@FalseOnNull注解,可識(shí)別對(duì)象的判空操作。但對(duì)于第三方包的判空方法,如CollectionUtils.isEmpty(), 由于未添加注解,即使添加判空方法,仍會(huì)被誤識(shí)別為空引用。因此,Alchemy平臺(tái)加入了忽略操作,針對(duì)此類問題進(jìn)行二次確認(rèn),避免重復(fù)誤判。

圖片

Infer誤判結(jié)果

4.2 UT規(guī)則掃描

單元測(cè)試是DevOps流程中一個(gè)非常重要的環(huán)節(jié),我們可以利用通過率和代碼覆蓋率等指標(biāo)來衡量單元測(cè)試用例的完整程度,卻很難保證用例的有效性。阿里巴巴java開發(fā)手冊(cè)規(guī)定,單元測(cè)試不允許使用System.out來進(jìn)行人肉驗(yàn)證,必須使用斷言assert來驗(yàn)證。

在實(shí)際的開發(fā)過程中,開發(fā)人員把主要的時(shí)間用在寫業(yè)務(wù)邏輯代碼上,在編寫單元測(cè)試用例時(shí),往往容易忽略對(duì)結(jié)果的驗(yàn)證,雖然通過率和代碼覆蓋率很高,但上線后仍然出現(xiàn)未對(duì)接口結(jié)果進(jìn)行驗(yàn)證而導(dǎo)致嚴(yán)重問題的情況。無效的單元測(cè)試用例包含以下幾種:

  • 空函數(shù):函數(shù)體為空;
  • 空斷言:用例中實(shí)現(xiàn)了對(duì)被測(cè)接口的調(diào)用邏輯,但未對(duì)接口返回結(jié)果進(jìn)行驗(yàn)證;
  • 偽斷言:用例中使用類似assertTrue(True)的假斷言。

通過掃描空斷言、空函數(shù)、偽斷言等問題,能判斷該用例是否對(duì)代碼邏輯進(jìn)行必要的驗(yàn)證。Alchemy平臺(tái)支持單元測(cè)試用例的有效性驗(yàn)證,目前,平臺(tái)支持Java、Kotlin、Groovy和Nodejs,同時(shí)也支持全量和增量2種掃描結(jié)果,全量結(jié)果即為所有測(cè)試用例中不滿足規(guī)則的用例,增量結(jié)果為本次提交修改的測(cè)試用例中不滿足規(guī)則的用例。

圖片

UT掃描流程

對(duì)單個(gè)單元測(cè)試文件的掃描流程如圖。首先根據(jù)文件后綴判斷語言類型,然后根據(jù)不同語言類型規(guī)則獲取該文件中的用例信息,包含case名稱、起止行、作者、最近修改時(shí)間、函數(shù)內(nèi)容等,針對(duì)函數(shù)內(nèi)容,先判斷用例是否有斷言,如果有,則判斷是否為偽斷言,如果未斷言或者被判為偽斷言,還需進(jìn)一步根據(jù)用例的起止行,結(jié)合本次提交的改動(dòng)信息,分析該用例是否為增量改動(dòng)的用例,如果是則標(biāo)記為增量問題,最后將結(jié)果推送給gitlab,在合并代碼或發(fā)布時(shí)根據(jù)紅線配置進(jìn)行卡點(diǎn)。掃描結(jié)果如圖所示。

圖片

UT掃描結(jié)果

4.3 重復(fù)代碼掃描

重復(fù)代碼即為重復(fù)或近似的代碼,在開發(fā)過程中,開發(fā)人員為了避免影響現(xiàn)有功能,使用復(fù)制粘貼快速完成開發(fā)任務(wù),導(dǎo)致出現(xiàn)大量的重復(fù)代碼。重復(fù)代碼不僅讓代碼量大增,造成編譯速度慢,而且占用大量存儲(chǔ)空間,如果想要修改其中一段代碼邏輯,則需要同時(shí)修改多個(gè)地方,容易遺漏,可維護(hù)性差。

當(dāng)前市面上有很多代碼檢測(cè)工具,如Simian,PMD-CPD,CloneDR等,由于在實(shí)現(xiàn)算法上有所不同,不同工具所能檢測(cè)的重復(fù)代碼類型也不盡相同。我們利用PMD-CPD掃描代碼倉庫,可以檢測(cè)出單文件或多個(gè)文件中除了空格、注釋、換行以及變量名以外內(nèi)容完全一致的代碼段信息,這些信息包含文件路徑、代碼段內(nèi)容、起止行以及作者信息,詳情結(jié)果如圖所示。

圖片

重復(fù)代碼詳情結(jié)果

4.4 自定義規(guī)則掃描

Alchemy支持對(duì)自定義規(guī)則的掃描,通過配置自定義正則表達(dá)式和掃描范圍,識(shí)別代碼文件中滿足配置規(guī)則的代碼段,可用于掃描代碼中的拼接SQL,敏感詞等,并且可將不合規(guī)的代碼定位到相關(guān)開發(fā)人員。

圖片

自定義掃描流程

單個(gè)文件掃描流程如圖,首先判斷文件是否在掃描范圍內(nèi),若不在則直接跳轉(zhuǎn)掃描下一個(gè)文件,否則讀取文件內(nèi)容,同時(shí)根據(jù)文件類型獲取對(duì)應(yīng)的自定義規(guī)則,匹配滿足規(guī)則的代碼段信息,包含代碼段內(nèi)容、嚴(yán)重程度、起止行、作者等。在某些場(chǎng)景下,需要設(shè)置子規(guī)則進(jìn)行二次匹配,比如掃描update未指定where條件的sql語句,可先根據(jù)規(guī)則找到update語句,然后根據(jù)子規(guī)則判斷是否帶where條件,最終記錄二次匹配的結(jié)果。

4.5 代碼分析

使用不同工具統(tǒng)計(jì)的代碼質(zhì)量指標(biāo)可能分散在不同的平臺(tái),對(duì)這些指標(biāo)進(jìn)行全面分析的過程中難免會(huì)有所遺漏,特別是對(duì)于未設(shè)置發(fā)布卡點(diǎn)的指標(biāo),開發(fā)人員可能并不會(huì)關(guān)注它們,導(dǎo)致代碼存在大量的潛在問題未被分析治理。

Alchemy代碼分析模塊可以對(duì)代碼不同維度的指標(biāo)進(jìn)行統(tǒng)計(jì)分析,包括代碼行、單元測(cè)試、infer問題、Sonar問題、重復(fù)代碼、圈復(fù)雜度等。用戶可以在代碼分析頁面查看各維度問題分布情況,從而對(duì)項(xiàng)目的整體風(fēng)險(xiǎn)指標(biāo)進(jìn)行更全面的分析,可以根據(jù)問題的嚴(yán)重程度設(shè)置優(yōu)先級(jí)進(jìn)行針對(duì)性的治理。

圖片

代碼分析結(jié)果

4.6 代碼搜索

在開發(fā)過程中,對(duì)于一些公共操作如中間件的使用方式,開發(fā)人員可能需要四處尋找接入文檔。Alchemy提供代碼搜索功能,可以幫助開發(fā)人員根據(jù)關(guān)鍵詞來查找收錄項(xiàng)目中的代碼使用示例,用戶可以根據(jù)項(xiàng)目倉庫、代碼語言以及作者等條件進(jìn)行細(xì)分查詢。在編碼過程中,命名規(guī)范是一個(gè)容易被忽視的問題,使用Alchemy的變量命名功能,用戶可以根據(jù)不同語言,搜索中英文關(guān)鍵詞來獲取推薦的規(guī)范命名參考,能極大地提高開發(fā)效率。

圖片?

代碼搜索結(jié)果

五、結(jié)束語

在本文中,我們介紹了Alchemy平臺(tái)提供的代碼靜態(tài)分析,代碼探索以及通過與Gitlab CI/CD集成帶來的持續(xù)集成能力,可以在開發(fā)階段暴露出更多的代碼潛在問題和風(fēng)險(xiǎn),并及時(shí)反饋給相關(guān)人員。目前攜程酒店已接入項(xiàng)目800+,且在開發(fā)提交代碼和發(fā)布階段將分析的潛在問題接入了卡點(diǎn)流程。在后續(xù)的工作中,我們將從以下幾個(gè)方向進(jìn)行進(jìn)一步的優(yōu)化:

  • 在代碼分析層面支持更多語言;
  • 開發(fā)IDE插件,在編碼階段實(shí)時(shí)掃描代碼;
  • 繼續(xù)深挖代碼風(fēng)險(xiǎn)指標(biāo),并引入評(píng)估機(jī)制。
責(zé)任編輯:張燕妮 來源: 攜程技術(shù)
相關(guān)推薦

2023-11-06 09:56:10

研究代碼

2024-01-12 09:31:08

Java代碼

2024-08-08 16:17:29

2022-03-30 18:39:51

TiDBHTAPCDP

2023-08-25 09:51:21

前端開發(fā)

2020-07-07 09:19:28

Android 協(xié)程開發(fā)

2022-07-15 12:58:02

鴻蒙攜程華為

2010-03-01 14:31:04

Java

2024-12-13 09:55:00

2014-03-23 17:11:19

攜程漏洞支付安全CVV碼

2014-12-25 17:51:07

2024-04-26 09:38:36

2011-05-03 09:34:50

Sonar

2023-07-07 12:26:39

攜程開發(fā)

2023-06-28 10:10:31

攜程技術(shù)

2024-12-31 15:00:40

2016-09-04 15:14:09

攜程實(shí)時(shí)數(shù)據(jù)數(shù)據(jù)平臺(tái)

2023-12-29 09:42:28

攜程開發(fā)

2021-07-26 09:00:00

開發(fā)編程工具

2020-09-08 12:51:35

低代碼開 發(fā)代碼平臺(tái)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品久久久久久69| 级毛片内射视频| 九色porny丨国产首页在线| 成人午夜av在线| 国产精品扒开腿做爽爽爽男男| 女人黄色一级片| 精品网站999| 色综合婷婷久久| 视频一区二区视频| 五月婷婷在线观看视频| 久久精品国产亚洲高清剧情介绍| 欧美激情第一页xxx| 欧美黄色一级生活片| 久久gogo国模啪啪裸体| 日本高清不卡视频| 日本免费黄色小视频| 日本一本草久在线中文| 国产一区在线观看麻豆| 日本欧美一级片| 妺妺窝人体色www婷婷| 激情综合网站| 亚洲国产精品va在线看黑人| 奇米影音第四色| 美女av在线免费看| 亚洲精品日日夜夜| 日日噜噜噜噜夜夜爽亚洲精品| 精品久久久中文字幕人妻| 日韩电影在线观看电影| 2019中文字幕全在线观看| 免费精品在线视频| 国产真实有声精品录音| 亚洲第一区第二区| 中文字幕无码毛片免费看| 韩国理伦片久久电影网| 高跟丝袜欧美一区| www.日本三级| 老司机在线永久免费观看| 久久久精品免费网站| 国产伦理久久久| 国产福利视频导航| 久久国产精品99久久久久久老狼| 日韩av电影免费观看高清| 日韩乱码一区二区| 亚洲性感美女99在线| 欧美二区在线播放| 校园春色 亚洲| 亚洲二区三区不卡| 日韩视频免费看| 91麻豆精品久久毛片一级| 少妇精品久久久| 亚洲美女www午夜| 欧美深性狂猛ⅹxxx深喉| 白嫩白嫩国产精品| 欧美精品一区二区在线播放| 精品国产午夜福利在线观看| 成人mm视频在线观看| 色av成人天堂桃色av| 亚洲人成色77777| 中文在线免费视频| 色综合久久久久综合体| 欧美少妇性生活视频| www.成人爱| 色94色欧美sute亚洲13| 国产天堂在线播放| 成人亚洲网站| 欧美日韩国产片| 亚洲免费在线播放视频| 国产精品国产亚洲精品| 日韩精品中文字幕一区二区三区 | 国内偷拍精品视频| 欧美一区二区三区久久精品茉莉花| 久热精品视频在线| 久久久久成人网站| 国产精品美女久久久| 国产精品99久久99久久久二8| 亚洲 小说区 图片区| 久久99国产乱子伦精品免费| 亚洲一区亚洲二区亚洲三区| 韩国av在线免费观看| 91麻豆精东视频| 亚洲精品成人久久久998| 国产原厂视频在线观看| 亚洲午夜激情av| 亚洲熟妇av一区二区三区| 91国内外精品自在线播放| 欧美一级淫片007| 中国极品少妇videossexhd| 国产99亚洲| 不卡av电影院| 久久亚洲精品国产| 紧缚奴在线一区二区三区| 国产乱码精品一区二区三区日韩精品 | 久草成人在线视频| 香蕉久久久久久久av网站| 国产精品爽爽爽| 亚洲精品综合久久| 国产欧美视频在线观看| 欧美黄色免费网址| 成人在线网站| 欧美zozozo| 亚洲一级片在线播放| 好看的av在线不卡观看| 国产精品白丝jk喷水视频一区| 国产精品欧美激情在线| 91在线免费视频观看| 国产91av视频在线观看| 制服丝袜专区在线| 日韩午夜激情免费电影| 色欲狠狠躁天天躁无码中文字幕| 综合久久99| 国产精品欧美一区二区三区奶水 | 国产风韵犹存在线视精品| 欧美二区三区在线| 污视频在线看网站| 欧美日韩一区二区在线视频| av网页在线观看| 午夜欧美在线| 国产精品久久不能| 黄色片一区二区三区| 18成人在线观看| av免费网站观看| www国产精品| 欧美理论电影在线观看| 国模私拍一区二区| 久久美女高清视频| 日韩av高清在线看片| 久久丁香四色| 欧美成人久久久| 在线视频 中文字幕| 国产午夜精品一区二区| 国产视频九色蝌蚪| 99国产精品免费网站| 久久精品人人做人人爽| 中文字幕在线视频第一页| 久久先锋影音av鲁色资源网| 青青草精品视频在线| 日本一区二区三区电影免费观看| 夜夜躁日日躁狠狠久久88av | 日韩av中文在线观看| 国产精品日本一区二区 | 国产精品av电影| 三区在线观看| 日韩欧美中文第一页| 欧美在线一级片| 中文日韩欧美| 久久国产精品一区二区三区| zzzwww在线看片免费| 亚洲成人在线网| 国产成人无码精品| 99国产精品视频免费观看| 91专区在线观看| 日韩极品在线| 国产成人精彩在线视频九色| 欧美在线观看在线观看| 91久久精品国产91性色tv| 女尊高h男高潮呻吟| 丝袜亚洲另类欧美| 亚洲精品国产精品国自产观看| 久久婷婷五月综合色丁香| 色偷偷91综合久久噜噜| 亚洲一级特黄毛片| 亚洲另类在线制服丝袜| 国产乱淫av麻豆国产免费| 亚洲黄色大片| 欧美xxxx黑人又粗又长精品| 亚洲伦乱视频| 日韩视频在线观看免费| 国产三级漂亮女教师| 又紧又大又爽精品一区二区| 九九九久久久久久久| 亚洲国产裸拍裸体视频在线观看乱了中文 | 99蜜桃臀久久久欧美精品网站| 国产免费播放一区二区| 国产精品中文字幕在线观看| 搞黄网站在线观看| 亚洲国产欧美在线成人app| 少妇高潮av久久久久久| 国产精品三级视频| aaaaaaaa毛片| 亚洲影院一区| 自拍视频一区二区三区| 国产精品对白久久久久粗| 欧美一级视频在线观看| 午夜毛片在线| 亚洲电影免费观看高清| 青青国产在线视频| 一区二区三区在线免费播放| 精品夜夜澡人妻无码av| 九九久久精品视频| 成年人午夜免费视频| 日韩激情免费| 国产精品久久精品国产| 日韩在线观看不卡| 色综合色综合网色综合| 国产三级在线看| 日韩欧美在线综合网| 精品免费囯产一区二区三区| 中文字幕在线观看不卡| 好吊一区二区三区视频| 经典三级在线一区| 青青青在线播放| 欧美精品激情| 亚洲高清在线观看一区| 久久久久影视| 成人在线国产精品| 成人免费直播| 欧美黑人极品猛少妇色xxxxx | 中文字幕乱码日本亚洲一区二区 | 久久久女女女女999久久| av基地在线| 国产视频丨精品|在线观看| 国产激情视频在线播放| 欧美主播一区二区三区| 五月婷婷开心网| 亚洲精品国产a久久久久久 | 男人天堂资源在线| 欧美成人一区二区三区在线观看| 日本一区二区三区久久| 狠狠色狠狠色综合日日小说| 青青青在线视频| 综合欧美亚洲日本| 国产又黄又粗的视频| www欧美成人18+| 老司机午夜免费福利| 国产伦精品一区二区三区视频青涩| 毛片av免费在线观看| 国产日韩欧美一区在线| 成人免费在线网| 女生裸体视频一区二区三区| 亚洲欧美日韩精品久久久 | 欧美 另类 交| 久久综合成人| 亚洲一区二区三区精品动漫| 国产精品免费不| 久久亚裔精品欧美| 免费看成人人体视频| 97se国产在线视频| 日韩激情欧美| 99re在线| 丁香5月婷婷久久| 国内精品**久久毛片app| 99精品中文字幕在线不卡| 91传媒视频免费| 欧美第一在线视频| 99视频国产精品免费观看| 国产精品一区三区在线观看| 国产在线观看精品| 国产欧美88| 99伊人久久| 国产成人一二片| 精品国产乱码久久久久软件 | 久久精品亚洲麻豆av一区二区| av网站有哪些| 国产亚洲欧洲997久久综合| 国产精品成人一区二区三区电影毛片 | 精品欧美一区二区在线观看视频| 卡通动漫国产精品| 欧美日韩一区综合| 欧洲美女日日| 久久免费视频2| 欧美激情麻豆| 可以在线看的av网站| 六月婷婷一区| 中文字幕有码av| 国精产品一区一区三区mba视频 | 久久久久久久久久久福利| 免费在线日韩av| 一区二区xxx| 国产精品小仙女| 亚洲一级av无码毛片精品 | 国产精品19乱码一区二区三区| 亚洲福利电影网| 在线观看 亚洲| 欧美日韩免费观看一区三区| 99精品在线视频观看| 亚洲成人久久久| 99视频在线观看地址| 欧美老女人在线视频| 自拍网站在线观看| 成人h猎奇视频网站| 精品国产18久久久久久洗澡| 日韩成人av电影在线| 999久久久亚洲| cao在线观看| 男女男精品视频| 极品白嫩的小少妇| 国产欧美一区二区三区鸳鸯浴 | 在线日韩av片| 精品人妻午夜一区二区三区四区 | 欧美乱妇20p| 色婷婷av一区二区三区之e本道| 亚洲午夜未删减在线观看 | 欧美激情一区二区三区p站| 久久嫩草精品久久久精品| 午夜精品一区二区三级视频| 偷窥少妇高潮呻吟av久久免费| 亚洲欧美日韩一区二区三区四区| 日韩午夜中文字幕| 成av人电影在线观看| 高清欧美一区二区三区| 欧美视频免费看| 女女同性女同一区二区三区91| 欧美99在线视频观看| 国产成人综合一区| k8久久久一区二区三区| 亚洲精品久久久久久国| 色悠悠亚洲一区二区| 性生活视频软件| 日韩中文字幕在线| 最新欧美电影| 国产在线一区二区三区欧美| 五月天久久久| 亚欧在线免费观看| 久久亚洲一区二区三区四区| 国产精品suv一区二区| 69堂精品视频| 91大神xh98hx在线播放| 欧美一级视频免费在线观看| 超碰精品在线观看| 在线观看17c| 久久av资源网| 美国黄色特级片| 欧美性videosxxxxx| 日本国产在线| 97人人模人人爽人人喊中文字| 日本一区二区三区电影免费观看| 亚洲精品日韩在线观看| 日精品一区二区| 成都免费高清电影| 欧美午夜美女看片| 色吊丝在线永久观看最新版本| 久久久久久国产精品美女| 老司机亚洲精品一区二区| 日本特级黄色大片| 另类人妖一区二区av| 91动漫免费网站| 欧美丰满少妇xxxxx高潮对白| 黄色在线视频观看网站| 欧美一区三区三区高中清蜜桃| 久久99国产精品久久99大师 | 欧美精品一区二区三区高清aⅴ| 在线免费观看污| ts人妖另类在线| 影音先锋中文字幕一区| 四季av综合网站| 天天射综合影视| 久久这里精品| 国产精品第一视频| 成人高清电影网站| 三区视频在线观看| 一区二区三区精品视频在线| 亚洲av色香蕉一区二区三区| 久久久视频精品| 亚洲另类春色校园小说| 十八禁视频网站在线观看| 欧美激情在线一区二区三区| 国内av在线播放| 日韩在线视频导航| 欧美日韩黄色| 麻豆tv在线播放| 久久久久久久久蜜桃| 69视频免费看| 久久精品在线视频| 大奶在线精品| 亚洲爆乳无码专区| 一区精品在线播放| 国产xxxx孕妇| 6080yy精品一区二区三区| 国产成人精品免费视| 亚洲视频第二页| 亚洲综合在线五月| 四虎在线观看| 成人网在线视频| 黑人一区二区| 波多野吉衣中文字幕| 欧美日免费三级在线| www免费视频观看在线| 国产呦系列欧美呦日韩呦| 日本色综合中文字幕| 国产一二三四区| 日韩黄在线观看| 欧美日韩va| 久久精品国产精品亚洲色婷婷| 日本一区二区三区四区| av官网在线观看| 日韩免费观看高清| 国内揄拍国内精品久久| 波多野结衣片子| 精品捆绑美女sm三区| 电影亚洲一区| 人妻av中文系列| 最新国产成人在线观看| 视频国产在线观看| 91久久精品国产91性色| 另类av一区二区| 久草视频免费在线播放| 中文字幕免费国产精品| 欧美aaaaa级| 国产又粗又猛大又黄又爽| 一本一道综合狠狠老|