精品欧美一区二区三区在线观看 _久久久久国色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)

91九色偷拍| 日韩精品一区二| 欧美日韩综合精品| 中文字幕av在线免费观看| 欧美国产一区二区三区激情无套| 制服丝袜av成人在线看| 福利在线一区二区| 国产一区二区影视| 久久99国产精品成人| 欧美成人精品一区二区三区| 男人的天堂影院| 奇米777日韩| 亚洲猫色日本管| 精品一区久久久| 中文字幕视频免费观看| 狠久久av成人天堂| 中文字幕日韩精品在线观看| 中文字幕第六页| 999福利在线视频| 国产精品电影一区二区三区| 国精产品99永久一区一区| 中文字幕免费视频观看| 国产精品porn| 中文字幕亚洲一区二区三区| 污污免费在线观看| 95精品视频| 色婷婷精品大在线视频 | 俄罗斯嫩小性bbwbbw| 日韩综合小视频| 久久久久久com| 黄大色黄女片18免费| 精品淫伦v久久水蜜桃| 欧美久久久一区| 99蜜桃臀久久久欧美精品网站| 黄网址在线观看| 国产午夜亚洲精品羞羞网站| 成人欧美一区二区三区视频xxx| 成人黄色免费网| 国产亚洲毛片在线| 欧美疯狂性受xxxxx另类| 一级片黄色录像| 日韩影视高清在线观看| 日韩美一区二区三区| 国产精品亚洲二区在线观看| 96av在线| 亚洲大片免费看| 超碰10000| 国产福利在线播放麻豆| 国产精品午夜在线| 日日夜夜精品网站| 精品av中文字幕在线毛片| 成人h动漫精品一区二区| 91传媒视频在线观看| 一区二区日韩在线观看| 国产精品美女久久久浪潮软件| 欧美日韩黄色大片| 狠狠精品干练久久久无码中文字幕| 美丽的姑娘在线观看免费动漫| 成人精品电影在线观看| 懂色中文一区二区三区在线视频| 国产精品久久久久久久久久久久久久久久久久 | 欧美视频综合| av一本久道久久综合久久鬼色| 97在线资源站| 精品国精品国产自在久不卡| 国产经典欧美精品| 99理论电影网| 精品久久在线观看| 国产成人亚洲精品青草天美| 91日韩久久| 亚洲精品视频网| 国产91精品露脸国语对白| 99国产精品久久久久老师| 亚洲第一精品网站| 成人av资源站| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久蜜柚 | 中文字幕中文字幕中文字幕亚洲无线| 日韩免费三级| 在线观看麻豆蜜桃| 亚洲视频在线一区二区| 高清无码一区二区在线观看吞精| jizz一区二区三区| 精品久久久久久久久中文字幕| 欧美三级一级片| 欧美日韩视频免费观看| 欧美日韩亚洲丝袜制服| 图片区乱熟图片区亚洲| 51亚洲精品| 亚洲国产精品99| 91网站免费视频| 97精品视频| 欧美日韩成人网| 午夜毛片在线观看| 美女视频网站久久| 97av自拍| 九色在线视频| 亚洲色图欧美激情| 波多野结衣家庭教师在线| 色尼玛亚洲综合影院| 69av一区二区三区| 免费的av网站| 91亚洲一区| 久久久噜久噜久久综合| 欧美一区二区三区久久久| 精品在线观看免费| 精品不卡在线| 国产三级在线播放| 狠狠躁18三区二区一区| www.色就是色.com| 欧美影院天天5g天天爽| 色妞一区二区三区| 日韩高清免费av| 美女一区二区久久| 久久精品国产99精品国产亚洲性色| av网站在线播放| 亚洲国产精品一区二区久久| 黄色在线视频网| 精品国产影院| 久久亚洲精品网站| 五月天激情四射| 国产成人免费网站| 日韩中文一区二区三区| 大香伊人中文字幕精品| 精品视频色一区| 免费的av网站| 欧美日韩影院| 国产日本欧美一区二区三区在线| 一卡二卡三卡在线观看| 成人黄色777网| 在线观看欧美一区| 玛雅亚洲电影| 亚洲人成无码www久久久| 中文字幕在线视频区| 亚洲成人综合在线| 在线黄色免费看| 免费一区二区三区视频导航| 久久久久国产视频| www.黄色一片| 1000部国产精品成人观看| 妞干网在线免费视频| 大奶在线精品| 久久99精品国产99久久6尤物| 亚洲视屏在线观看| 久久精品欧美日韩| 国产91在线免费| 欧美三级电影在线| 久久久久久免费精品| 亚洲不卡免费视频| 亚洲欧美激情在线| 久久久久久综合网| 91精品久久久久久久久久不卡| 国产精品久久中文| 性xxxx视频播放免费| 婷婷丁香久久五月婷婷| 日本天堂在线播放| 国语精品一区| 国产精品入口免费| www.综合| 亚洲精品美女在线观看| 色婷婷在线观看视频| av网站一区二区三区| 欧美成人高潮一二区在线看| 激情亚洲另类图片区小说区| 国产综合在线看| 欧美一区二区三区黄片| 黄色精品一区二区| av黄色免费网站| 视频一区免费在线观看| 欧洲一区二区日韩在线视频观看免费 | 日本免费福利视频| 亚洲视频大全| 欧美一区三区二区在线观看| 精品欧美一区二区三区在线观看| 在线观看国产欧美| 亚洲一级av毛片| 中文字幕亚洲综合久久菠萝蜜| 男人添女人下面免费视频| 国产高清欧美| 国产精品久久久久久久久久尿| 2021av在线| 91精品国产一区二区三区| a在线视频播放观看免费观看| 欧美成人性战久久| 国产精品老女人精品视频| 亚洲aaa在线观看| 91精品1区2区| 中国美女黄色一级片| 国产一区视频在线看| 伊人再见免费在线观看高清版| 国产精品传媒| 日韩美女视频中文字幕| 日韩在线观看www| 欧美成人乱码一区二区三区| 在线观看黄网站| 日本一二三不卡| 中文字幕剧情在线观看| 欧美三级在线| 欧美日韩综合精品| 99精品国产九九国产精品| 国内久久久精品| 国产区在线视频| 日韩午夜激情电影| 人妻丰满熟妇av无码区| 亚洲女子a中天字幕| 日本少妇色视频| 极品美女销魂一区二区三区免费| 可以看毛片的网址| 成人羞羞网站| 激情欧美一区二区三区中文字幕| 99久久综合国产精品二区| 色综合久久天天综线观看| 激情小视频在线| 日韩欧美一二三区| 久久久久亚洲视频| 亚洲va欧美va天堂v国产综合| av电影在线不卡| 成人晚上爱看视频| 日韩一区二区三区久久| 亚洲视频www| 国产美女作爱全过程免费视频| 国产a久久精品一区二区三区 | 久久高清无码视频| 中文字幕欧美日韩一区| 成人性生活免费看| 国产一区二区三区不卡在线观看 | 91国产在线播放| 成人日韩在线观看| 91精品国产色综合| av免费在线免费观看| 色吧影院999| 九色在线播放| 日韩经典第一页| 亚洲精品免费在线观看视频| 欧美一区二区三区四区五区| 亚洲精品毛片一区二区三区| 精品国产精品三级精品av网址| www.xxxx日本| 国产精品乱码久久久久久| 中文字幕人妻一区二区| 波多野结衣91| 性高潮免费视频| 国产精品亚洲综合一区在线观看| 一区二区xxx| 欧美aaa在线| 中文字幕第21页| 天堂影院一区二区| 人妻内射一区二区在线视频 | 国产亚洲高清一区| 国产精品视频免费在线| 欧美日韩国产网站| 国产成人精品日本亚洲| 97成人资源| 欧美资源在线观看| 永久免费毛片在线播放| 97视频免费看| 无遮挡爽大片在线观看视频 | 蜜臀精品一区二区三区在线观看| 国语对白做受xxxxx在线中国 | 中文字幕一区二区三区四区在线视频| 免费亚洲婷婷| 国产男女激情视频| 狂野欧美性猛交xxxx巴西| 成年人视频在线免费| 日日夜夜免费精品视频| 亚洲成人av免费看| 美女性感视频久久| 欧美在线a视频| 高清久久久久久| 亚洲一级av无码毛片精品| 97久久精品人人澡人人爽| 国产肥白大熟妇bbbb视频| 国产精品天天摸av网| 九九热久久免费视频| 一区二区三区日本| 日韩欧美高清在线观看| 色老汉一区二区三区| 亚洲天堂视频网| 日韩欧美国产精品| 午夜黄色小视频| 一区二区欧美在线| 黄av在线播放| 午夜精品蜜臀一区二区三区免费| 亚洲国产福利| 国产精品中文字幕在线| 亚洲超碰在线观看| 久久精品国产理论片免费| 日韩av密桃| 欧美一级免费播放| 久久青草久久| 亚洲综合伊人久久| 暴力调教一区二区三区| 精品国产成人亚洲午夜福利| 亚洲人精品午夜| 国产免费观看av| 欧美日韩高清一区| 国产综合无码一区二区色蜜蜜| 亚洲乱码国产乱码精品精| 午夜在线视频| 韩国精品久久久999| 日韩一区二区三区免费视频| 亚洲最大福利视频| 国产日产精品_国产精品毛片| 国产精品美女在线播放| 一本色道精品久久一区二区三区| 岛国毛片在线播放| 97久久人人超碰| 欧美精品色哟哟| 欧美午夜在线观看| 欧美自拍偷拍一区二区| 日韩中文在线不卡| 欧美久久天堂| 91手机在线观看| 欧美一区三区| 欧美 日韩 国产 高清| 精彩视频一区二区| wwwwxxxx国产| 亚洲一级二级三级在线免费观看| 中文字幕一区二区免费| 亚洲精品在线观看www| 午夜成年人在线免费视频| 国产精品久久色| 蜜桃精品噜噜噜成人av| 97干在线视频| 韩国三级电影一区二区| 高清国产在线观看| 福利一区视频在线观看| 亚洲第一成人av| 久久久精品欧美| 精品176极品一区| 欧美日韩免费精品| 妖精视频成人观看www| 中文字幕久久久久久久| 亚洲欧洲在线观看av| 中文字幕第31页| 亚洲天堂免费观看| 超级碰碰久久| 精品国产一区二区三区日日嗨 | 北条麻妃在线一区二区| 日韩成人亚洲| 蜜桃传媒一区二区| 国产欧美日韩一级| 好男人香蕉影院| 亚洲高清视频的网址| www.桃色av嫩草.com| 美女av一区二区| 亚洲人成777| 亚洲午夜精品久久久中文影院av| 美女国产精品| 国产一二三四五区| 色八戒一区二区三区| 久久精品a一级国产免视看成人| 69av视频在线播放| 婷婷综合一区| 成人羞羞国产免费网站| 久久五月婷婷丁香社区| 天堂а√在线中文在线新版 | 四虎影院在线域名免费观看| 91国内揄拍国内精品对白| 红杏成人性视频免费看| 日本一道本久久| 久久麻豆一区二区| 男操女视频网站| 日韩在线视频网站| 精品一区视频| 中国丰满熟妇xxxx性| 不卡的av电影在线观看| 欧美一区二区激情视频| 亚洲欧美在线x视频| 日韩一区精品| 在线无限看免费粉色视频| 国产寡妇亲子伦一区二区| 国产小视频在线观看免费| 亚洲成人aaa| 电影一区二区三| 亚洲高清精品中出| 国产综合久久久久影院| 国产真人真事毛片| 亚洲欧美制服丝袜| 欧美另类激情| 成人av在线播放观看| av不卡在线播放| 亚洲精品一区二三区| 久久精品国产精品亚洲| 风间由美性色一区二区三区四区| 成人网站免费观看入口| 国产亚洲精品免费| 国产日韩一级片| 91地址最新发布| 日韩中文在线电影| 91九色蝌蚪porny| 欧美在线免费观看视频| 高清免费电影在线观看| 精品综合久久| 麻豆国产欧美日韩综合精品二区| 久久在线视频精品| 亚洲香蕉成人av网站在线观看| 国产麻豆一区二区三区| 北条麻妃在线视频观看| 国产精品乱码人人做人人爱| 黑人操亚洲女人|