• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于抽象語法樹的數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)研究

    2017-03-01 04:32:05劉宏韜胡志剛
    關(guān)鍵詞:泥團(tuán)自動(dòng)檢測(cè)源代碼

    劉宏韜 劉 偉,2 胡志剛

    1(中南大學(xué)軟件學(xué)院 湖南 長(zhǎng)沙 410075)2(湖南中醫(yī)藥大學(xué)管理與信息工程學(xué)院 湖南 長(zhǎng)沙 410208)

    基于抽象語法樹的數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)研究

    劉宏韜1劉 偉1,2胡志剛1

    1(中南大學(xué)軟件學(xué)院 湖南 長(zhǎng)沙 410075)2(湖南中醫(yī)藥大學(xué)管理與信息工程學(xué)院 湖南 長(zhǎng)沙 410208)

    數(shù)據(jù)泥團(tuán)是一種常見的代碼味道,它將帶來重復(fù)代碼和維護(hù)難度增加等問題。針對(duì)大部分已有的代碼味道自動(dòng)檢測(cè)工具無法檢測(cè)數(shù)據(jù)泥團(tuán),且檢測(cè)類型不全面等問題,提出一種基于抽象語法樹的數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)方法。該方法在已有檢測(cè)工具的基礎(chǔ)上,增加了新的數(shù)據(jù)泥團(tuán)類型,并加入了剔除冗余數(shù)據(jù)泥團(tuán)和提取子數(shù)據(jù)泥團(tuán)等步驟。通過對(duì)4個(gè)開源項(xiàng)目進(jìn)行數(shù)據(jù)泥團(tuán)實(shí)驗(yàn),結(jié)果表明方法具有較高的精確率,與Stench Blossom、inFusion等工具的數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)功能相比,能夠檢測(cè)出一些其他工具無法檢測(cè)的數(shù)據(jù)泥團(tuán)。同時(shí),該方法具有較好的性能,執(zhí)行時(shí)間與系統(tǒng)規(guī)模成正比。

    代碼味道 數(shù)據(jù)泥團(tuán) 抽象語法樹 源代碼解析 重構(gòu)

    0 引 言

    代碼味道是指源代碼中存在的一些不良實(shí)現(xiàn)方案。軟件工程大師Martin Fowler和Kent Beck在文獻(xiàn)[1]中初次使用“代碼味道”一詞來描述這些不良實(shí)現(xiàn)方案,文獻(xiàn)中定義了22種常見的代碼味道,包括數(shù)據(jù)泥團(tuán)、重復(fù)代碼、霰彈式修改等。此后,一些新的代碼味道[2]被學(xué)者和研究人員陸續(xù)提出。檢測(cè)、去除代碼味道對(duì)于提高代碼質(zhì)量具有非常重要的意義[3],去除代碼味道能夠改善代碼的可維護(hù)性,因此應(yīng)當(dāng)對(duì)程序代碼中的代碼味道進(jìn)行檢測(cè)和合理重構(gòu),在不改變程序外部行為的前提下改善代碼的質(zhì)量。

    開發(fā)人員往往在對(duì)代碼味道進(jìn)行重構(gòu)之前,人工審查代碼、檢測(cè)代碼味道,這樣的方式效率低下,且正確率不高。近年來,自動(dòng)檢測(cè)代碼味道已成為軟件工程領(lǐng)域的一個(gè)研究熱點(diǎn)。Liu等人[4-5]對(duì)泛化重構(gòu)機(jī)會(huì)檢測(cè)進(jìn)行了研究,并基于概念關(guān)系、實(shí)現(xiàn)相似性等開發(fā)了一款重構(gòu)時(shí)機(jī)檢測(cè)工具。Maneerat等人[6]提出了從軟件設(shè)計(jì)模型的角度檢測(cè)代碼味道,將7種機(jī)器學(xué)習(xí)的算法運(yùn)用于數(shù)項(xiàng)代碼味道數(shù)據(jù)集,并根據(jù)27個(gè)度量指標(biāo)檢測(cè)7種代碼味道,并對(duì)各種機(jī)器學(xué)習(xí)算法在代碼優(yōu)化方面的性能進(jìn)行了評(píng)估。此外,針對(duì)檢測(cè)代碼味道這一問題也誕生了一些自動(dòng)化工具。PMD[7]可以檢查源代碼中存在的過大類、重復(fù)代碼等代碼味道,它允許用戶自定義檢測(cè)這些代碼味道的閾值;CheckStyle[8]能夠探測(cè)代碼大小是否違規(guī)、類的設(shè)計(jì)是否良好,也能找出過長(zhǎng)函數(shù)、過長(zhǎng)參數(shù)列等代碼味道。

    本文將以源代碼中數(shù)據(jù)泥團(tuán)代碼味道為研究對(duì)象,提出了一種精確率及性能俱佳的數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)算法,有助于軟件開發(fā)人員快速精準(zhǔn)地發(fā)現(xiàn)項(xiàng)目中存在的數(shù)據(jù)泥團(tuán)代碼味道,為進(jìn)一步的數(shù)據(jù)泥團(tuán)重構(gòu)提供有力支持。

    1 數(shù)據(jù)泥團(tuán)和抽象語法樹

    1.1 數(shù)據(jù)泥團(tuán)

    數(shù)據(jù)泥團(tuán)[1]是22種常見代碼味道之一,它指代那些經(jīng)常捆綁出現(xiàn)的數(shù)據(jù),如多個(gè)類中出現(xiàn)了相同的數(shù)個(gè)屬性,或多個(gè)方法中出現(xiàn)了相同的數(shù)個(gè)參數(shù)。對(duì)于類屬性數(shù)據(jù)泥團(tuán),應(yīng)當(dāng)使用提煉類,將數(shù)據(jù)提煉到一個(gè)獨(dú)立對(duì)象;對(duì)于方法參數(shù)數(shù)據(jù)泥團(tuán),應(yīng)當(dāng)使用引入?yún)?shù)對(duì)象。數(shù)據(jù)泥團(tuán)的存在將增加系統(tǒng)的耦合度,自動(dòng)檢測(cè)并重構(gòu)數(shù)據(jù)泥團(tuán),對(duì)數(shù)據(jù)實(shí)施集中式管理,可以提高代碼的可維護(hù)性和可復(fù)用性,進(jìn)而增強(qiáng)系統(tǒng)內(nèi)聚性,降低耦合度,并提高代碼的可讀性、可擴(kuò)展性等。Fontana等人[9]對(duì)現(xiàn)有的代碼味道自動(dòng)檢測(cè)工作進(jìn)行研究,發(fā)現(xiàn)對(duì)于數(shù)據(jù)泥團(tuán)這一代碼味道,目前僅有inFusion[10]和Stench Blossom[11]兩款工具能作出自動(dòng)檢測(cè)。

    1.2 抽象語法樹

    數(shù)據(jù)泥團(tuán)的檢測(cè)工作基于對(duì)抽象語法樹AST(Abstract Syntax Tree)的分析,將指定項(xiàng)目源代碼轉(zhuǎn)換成抽象語法樹之后,再收集數(shù)據(jù)泥團(tuán)檢測(cè)的相關(guān)信息。抽象語法樹是一種常用的程序代碼的中間表示形式。

    本文使用Java語言為例,Eclipse JDT提供了Eclipse AST[12]用于將Java源代碼解析為抽象語法樹,并能對(duì)其進(jìn)行節(jié)點(diǎn)的創(chuàng)建、修改。Eclipse AST中ASTNode類作為所有Java語法結(jié)構(gòu)節(jié)點(diǎn)的父類,它的子類如TypeDeclaration(類聲明)、MethodDeclaration(方法聲明)等都對(duì)相應(yīng)的語法結(jié)構(gòu)進(jìn)行了明確地描述,并提供了大量的方法用于訪問該節(jié)點(diǎn)的屬性,如類名、方法參數(shù)列表等。此外,還提供了一個(gè)ASTVisitor類用于定義AST的抽象訪問者,在該類中聲明了一組訪問各類AST節(jié)點(diǎn)的方法,用于對(duì)各種類型的節(jié)點(diǎn)實(shí)施相應(yīng)的操作。

    2 數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)算法

    考慮到檢測(cè)數(shù)據(jù)泥團(tuán)后的重構(gòu)流程,本文所檢測(cè)的單個(gè)數(shù)據(jù)泥團(tuán)將包含兩部分:

    (1) 數(shù)據(jù)集 (Datum) 單個(gè)數(shù)據(jù)泥團(tuán)所包含的數(shù)據(jù)。

    (2) 位置集 (Location) 該數(shù)據(jù)泥團(tuán)出現(xiàn)的位置。

    本文主要針對(duì)數(shù)據(jù)類型、名稱(部分包括初始值)完全相同的情況,數(shù)據(jù)泥團(tuán)中的數(shù)據(jù)將以如表1格式的字符串進(jìn)行存儲(chǔ)。

    表1 數(shù)據(jù)字符串格式

    數(shù)據(jù)集來自對(duì)類屬性和方法參數(shù)的收集、計(jì)算和篩選,其中篩選主要依據(jù)以下兩項(xiàng)度量指標(biāo):

    (1) 重復(fù)度 (Repeat) 數(shù)據(jù)泥團(tuán)出現(xiàn)的次數(shù)。

    (2) 規(guī)模 (Size) 數(shù)據(jù)泥團(tuán)的大小。

    考慮到使用者檢測(cè)數(shù)據(jù)泥團(tuán)需求的不同,數(shù)據(jù)泥團(tuán)的重復(fù)度下限(minRepeat)和規(guī)模下限(minSize)兩項(xiàng)閾值將作為參數(shù)傳入,若一候選數(shù)據(jù)泥團(tuán)重復(fù)度和規(guī)模均不小于重復(fù)度下限和規(guī)模下限(即Repeat≥minRepeat & Size≥minSize),則將其判定為一個(gè)數(shù)據(jù)泥團(tuán),使用者可以根據(jù)需求自定義重復(fù)度和規(guī)模閾值以查找所需的數(shù)據(jù)泥團(tuán)。

    圖1 數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)流程圖

    數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)流程如圖1所示,其中步驟解釋如下:

    (1) 將源代碼解析為AST。

    (2) 收集數(shù)據(jù)信息 遍歷AST中每一個(gè)類節(jié)點(diǎn)(TypeDeclaration)、匿名類節(jié)點(diǎn)(AnonymousClassDeclaration)和方法節(jié)點(diǎn)(MethodDeclaration),對(duì)符合規(guī)模下限的類屬性和方法參數(shù)進(jìn)行整理,得到數(shù)據(jù)信息列表。數(shù)據(jù)信息包含數(shù)據(jù)集和位置兩部分,數(shù)據(jù)集即所對(duì)應(yīng)的類屬性或方法參數(shù)以表1中的字符串格式存儲(chǔ)的字符串集合,位置即所對(duì)應(yīng)的類或方法所在的位置。

    (3) 構(gòu)建候選數(shù)據(jù)泥團(tuán)集 對(duì)數(shù)據(jù)信息列表中的每?jī)蓚€(gè)數(shù)據(jù)信息p和q進(jìn)行集合運(yùn)算,將符合規(guī)模下限的結(jié)果存儲(chǔ)為數(shù)據(jù)泥團(tuán)A,得到候選數(shù)據(jù)泥團(tuán)集。其中A.datum = p.datum ∩ q.datum。之后需對(duì)候選數(shù)據(jù)泥團(tuán)集按照數(shù)據(jù)集的規(guī)模,從大到小排序,以確保規(guī)模較大的數(shù)據(jù)泥團(tuán)優(yōu)先被檢測(cè)。

    (4) 合并重復(fù)數(shù)據(jù)泥團(tuán) 對(duì)于候選數(shù)據(jù)泥團(tuán)集中的每?jī)蓚€(gè)候選數(shù)據(jù)泥團(tuán)A和B,如果A和B兩者數(shù)據(jù)集相同,則將B的位置集合并到A的位置集中,并從候選數(shù)據(jù)泥團(tuán)集中刪除B。

    (5) 剔除冗余數(shù)據(jù)泥團(tuán) 假設(shè)候選數(shù)據(jù)泥團(tuán)集中存在{a, b}和{b, c},它們都存在于方法func(a, b, c),若將{a, b}確定為數(shù)據(jù)泥團(tuán)并封裝為數(shù)據(jù)類A,則原參數(shù)列表將被修改為func(A, c),參數(shù)列表中將不再存在數(shù)據(jù)泥團(tuán){b, c},因此需要從候選數(shù)據(jù)泥團(tuán)中刪除{b, c}。

    (6) 提取子數(shù)據(jù)泥團(tuán) 假設(shè)重復(fù)度閾值為2,func(a, b, c)中存在的數(shù)據(jù)泥團(tuán){a, b}被封裝成數(shù)據(jù)類A,原參數(shù)列表將被修改為func(A, c),若{A, c}仍為滿足閾值要求的數(shù)據(jù)泥團(tuán)并被封裝為類B,則需將{a, b}作為{A, c}的子數(shù)據(jù)泥團(tuán),即在重構(gòu)時(shí)B繼承A,且原參數(shù)列表修改為func(B)。

    (7) 篩選數(shù)據(jù)泥團(tuán) 根據(jù)輸入的規(guī)模下限和重復(fù)度下限對(duì)候選數(shù)據(jù)泥團(tuán)集進(jìn)行篩選,以得到最終數(shù)據(jù)泥團(tuán)檢測(cè)結(jié)果。

    數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)算法偽代碼如表2所示。

    表2 自動(dòng)檢測(cè)算法偽代碼

    該算法根據(jù)所處理內(nèi)容的不同,可劃分為兩個(gè)部分進(jìn)行時(shí)間復(fù)雜度的分析。第一部分為數(shù)據(jù)信息的收集,該部分主要將代碼源文件轉(zhuǎn)換到抽象語法樹并進(jìn)行遍歷進(jìn)而收集數(shù)據(jù)信息,因此不難得知數(shù)據(jù)信息收集過程的時(shí)間復(fù)雜度為O(n),n為源代碼文件的數(shù)量,即理論上運(yùn)行時(shí)間隨著源代碼文件數(shù)量的增加而線性增加。第二部分為數(shù)據(jù)泥團(tuán)的檢測(cè),該部分主要針對(duì)第一部分中所收集的數(shù)據(jù)信息進(jìn)行集合運(yùn)算等一系列的處理,根據(jù)算法分析可知時(shí)間復(fù)雜度基本為O(n2),n為第一部分中所收集的數(shù)據(jù)信息的數(shù)量,即理論上運(yùn)行時(shí)間與數(shù)據(jù)信息數(shù)的平方成正比。

    3 實(shí)驗(yàn)結(jié)果分析

    本文算法已嵌入到前期研究工作所開發(fā)的一款Eclipse插件SCORT[13]中。為了測(cè)試數(shù)據(jù)泥團(tuán)的自動(dòng)檢測(cè)效果,本文選取了同樣具有數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)功能的工具inFusion和Stench Blossom與SCORT進(jìn)行比較,三款工具檢測(cè)效果如表3所示。

    表3 數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)工具對(duì)比

    由檢測(cè)效果可知:Stench Blossom[14]作為Eclipse插件,其檢測(cè)結(jié)果實(shí)時(shí)呈現(xiàn)在編輯器中,效率較慢,且只能針對(duì)當(dāng)前編譯單元(即當(dāng)前打開的文件)進(jìn)行檢測(cè),檢測(cè)效果一般;inFusion作為一款定期升級(jí)的商業(yè)軟件,檢測(cè)效果較好,且能針對(duì)整個(gè)工程進(jìn)行檢測(cè),與SCORT檢測(cè)效果相近,SCORT所檢測(cè)的數(shù)據(jù)泥團(tuán)類型更為全面。為了驗(yàn)證本文所述數(shù)據(jù)泥團(tuán)的自動(dòng)檢測(cè)算法的執(zhí)行效率和正確性,本文選取四個(gè)開源項(xiàng)目進(jìn)行實(shí)驗(yàn),并為了與檢測(cè)效果相近的inFusion工具對(duì)比,因此使用與inFusion相同的閾值(即minRepeat=3、minSize=5)。本文選取了四個(gè)開源Java 項(xiàng)目,這四個(gè)項(xiàng)目規(guī)模和類型不一,基本信息如表4所示。

    表4 待測(cè)項(xiàng)目基本信息

    3.1 數(shù)據(jù)泥團(tuán)檢測(cè)算法執(zhí)行效率實(shí)驗(yàn)

    實(shí)驗(yàn)首先使用SCORT工具對(duì)四個(gè)項(xiàng)目進(jìn)行數(shù)據(jù)泥團(tuán)的檢測(cè),并對(duì)算法執(zhí)行時(shí)間進(jìn)行分析。對(duì)于每一個(gè)項(xiàng)目,數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)算法均執(zhí)行5次,然后分別計(jì)算算法兩個(gè)部分的平均時(shí)間。數(shù)據(jù)泥團(tuán)檢測(cè)實(shí)驗(yàn)在一臺(tái)安裝Windows 7操作系統(tǒng)的PC機(jī)上進(jìn)行,其配置為:雙核2.00 GHz,2 GB DDR2 RAM。數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)算法包括數(shù)據(jù)信息的收集和數(shù)據(jù)泥團(tuán)的檢測(cè)兩個(gè)部分,表4中四個(gè)待測(cè)項(xiàng)目的數(shù)據(jù)信息收集平均時(shí)間如表5所示。

    表5 數(shù)據(jù)信息收集平均時(shí)間

    由表5可知,隨著系統(tǒng)規(guī)模的增大(源文件數(shù)量的增加),數(shù)據(jù)信息收集的平均執(zhí)行時(shí)間也逐步增加,以源代碼文件數(shù)為X軸,數(shù)據(jù)信息收集程序的執(zhí)行時(shí)間為Y軸,可得圖2所示源文件數(shù)-數(shù)據(jù)信息收集執(zhí)行時(shí)間圖。

    圖2 源文件數(shù)-數(shù)據(jù)信息收集執(zhí)行時(shí)間圖

    圖2中虛線為對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行擬合的線性趨勢(shì)線,擬合方程為y=6.3957x+574.97,R2=0.9996。在數(shù)據(jù)信息收集部分,主要是將項(xiàng)目中的所有源文件轉(zhuǎn)換為抽象語法樹,并在抽象語法樹中根據(jù)條件收集數(shù)據(jù)信息,因此該部分執(zhí)行時(shí)間與源文件數(shù)量關(guān)系密切。因此從圖2中可以看到,執(zhí)行時(shí)間與系統(tǒng)規(guī)模(源文件數(shù)量)成正比,隨系統(tǒng)規(guī)模的增大執(zhí)行時(shí)間增加,整體呈現(xiàn)線性關(guān)系,算法具有良好的性能。

    考慮到數(shù)據(jù)泥團(tuán)的檢測(cè)部分算法執(zhí)行速度較快,因此該部分實(shí)驗(yàn)將時(shí)間精確到納秒進(jìn)行統(tǒng)計(jì),并在表4中四個(gè)項(xiàng)目的基礎(chǔ)上追加六個(gè)開源項(xiàng)目,總共十個(gè)開源項(xiàng)目的數(shù)據(jù)泥團(tuán)檢測(cè)部分執(zhí)行時(shí)間如表6所示。

    表6 數(shù)據(jù)泥團(tuán)檢測(cè)平均時(shí)間

    由表6可知,隨著算法第一部分所收集的數(shù)據(jù)信息的數(shù)量增加,數(shù)據(jù)泥團(tuán)檢測(cè)的平均執(zhí)行時(shí)間也逐步增加,以數(shù)據(jù)信息數(shù)為X軸,數(shù)據(jù)泥團(tuán)檢測(cè)程序的執(zhí)行時(shí)間為Y軸,可得圖3所示數(shù)據(jù)信息數(shù)-數(shù)據(jù)泥團(tuán)檢測(cè)執(zhí)行時(shí)間圖。

    圖3 數(shù)據(jù)信息數(shù)-數(shù)據(jù)泥團(tuán)檢測(cè)執(zhí)行時(shí)間圖

    圖3中虛線為對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行擬合的線性趨勢(shì)線,擬合方程為y=263.87x2+218990x+6E+06,R2=0.9719。在數(shù)據(jù)泥團(tuán)檢測(cè)部分,主要是對(duì)前段算法所收集的數(shù)據(jù)信息進(jìn)行集合運(yùn)算,因此執(zhí)行時(shí)間與該項(xiàng)目所收集的數(shù)據(jù)信息關(guān)系密切。從圖3中的趨勢(shì)線可以看到,執(zhí)行時(shí)間與數(shù)據(jù)信息數(shù)的平方成正比??傮w看來,本文中的數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)算法執(zhí)行效率與系統(tǒng)規(guī)模成正比,執(zhí)行時(shí)間隨著系統(tǒng)規(guī)模的增加而增加,算法具有較好的執(zhí)行效率。

    3.2 數(shù)據(jù)泥團(tuán)檢測(cè)算法性能實(shí)驗(yàn)

    為了更好地評(píng)價(jià)數(shù)據(jù)泥團(tuán)檢測(cè)結(jié)果,本文使用精確率(Precision)和召回率(Recall)來分析算法的性能,并結(jié)合人工審查判斷檢測(cè)結(jié)果是否正確,精確率和召回率分別表示為:

    Precision=TP/(TP+FP)

    (1)

    Recall=TP/(TP+FN)

    (2)

    其中,真陽性TP(True Positive)表示工具檢測(cè)到的正確數(shù)據(jù)泥團(tuán)數(shù)量;假陽性FP(False Positive)表示工具檢測(cè)到的錯(cuò)誤數(shù)據(jù)泥團(tuán)數(shù)量,即人工審查后發(fā)現(xiàn)檢測(cè)出的數(shù)據(jù)泥團(tuán)是錯(cuò)誤的;假陰性FN(False Negative)表示工具沒有檢測(cè)到,但人工審查后發(fā)現(xiàn)應(yīng)當(dāng)作為數(shù)據(jù)泥團(tuán)檢測(cè)的數(shù)量。通過對(duì)檢測(cè)出的數(shù)據(jù)泥團(tuán)進(jìn)行逐個(gè)審查可以得到TP和FP值。

    而對(duì)于FN值,由于人工查找正確的數(shù)據(jù)泥團(tuán)難度較大,因此,實(shí)驗(yàn)將既有成熟的代碼檢測(cè)工具inFusion檢測(cè)結(jié)果視為人工查找到的正確的數(shù)據(jù)泥團(tuán)。SCORT和inFusion對(duì)表4中四個(gè)項(xiàng)目的數(shù)據(jù)泥團(tuán)檢測(cè)結(jié)果如表7所示。

    表7 SCORT與inFusion的數(shù)據(jù)泥團(tuán)檢測(cè)結(jié)果

    根據(jù)表7得到TP、FP和FN值,并計(jì)算出相應(yīng)的精確率和召回率,結(jié)果如表8所示。

    表8 數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)精確率與召回率

    對(duì)于SCORT和inFusion兩款工具檢測(cè)結(jié)果的差異,以及召回率進(jìn)行分析。表7中,兩款工具對(duì)于項(xiàng)目TinyUML的檢測(cè)結(jié)果相同;在項(xiàng)目Ice Hockey Manager的檢測(cè)結(jié)果中,SCORT檢測(cè)到了2個(gè)類屬性數(shù)據(jù)泥團(tuán),而inFusion由于沒有該項(xiàng)功能,因此沒有檢測(cè)結(jié)果;項(xiàng)目Abbot的檢測(cè)結(jié)果中,SCORT檢測(cè)到7個(gè)數(shù)據(jù)泥團(tuán),剔除了4個(gè)inFusion結(jié)果中存在的冗余數(shù)據(jù)泥團(tuán),另外檢測(cè)出3個(gè)來自于重寫方法的數(shù)據(jù)泥團(tuán),這些方法所在的類存在于同一繼承樹;項(xiàng)目Robocode的檢測(cè)結(jié)果中,SCORT檢測(cè)到13個(gè)數(shù)據(jù)泥團(tuán),剔除了3個(gè)inFusion結(jié)果中存在的冗余數(shù)據(jù)泥團(tuán),另外檢測(cè)出1個(gè)來自于重寫方法的數(shù)據(jù)泥團(tuán),以及1個(gè)類屬性數(shù)據(jù)泥團(tuán)。

    經(jīng)分析發(fā)現(xiàn),檢測(cè)結(jié)果存在差異的主要原因?yàn)镾CORT與inFusion工具所使用的算法的目的和對(duì)“數(shù)據(jù)泥團(tuán)”概念的認(rèn)識(shí)不一。inFusion工具目的在于度量和評(píng)估軟件的質(zhì)量,且它所檢測(cè)的數(shù)據(jù)泥團(tuán)僅為方法參數(shù);SCORT目的在于檢測(cè)重構(gòu)時(shí)機(jī),便于日后的重構(gòu)工作,因此將冗余數(shù)據(jù)泥團(tuán)情況進(jìn)行處理,并且SCORT所檢測(cè)的數(shù)據(jù)泥團(tuán)包括了方法參數(shù)和類成員屬性。對(duì)于來自同一繼承樹的類成員屬性,以及來自重寫方法的參數(shù),本文都認(rèn)為是需重構(gòu)的數(shù)據(jù)泥團(tuán)。SCORT相較于inFusion所檢測(cè)的數(shù)據(jù)泥團(tuán)類型更為全面,更符合數(shù)據(jù)泥團(tuán)的定義。

    4 結(jié) 語

    代碼味道的自動(dòng)探測(cè)與優(yōu)化對(duì)于提高軟件質(zhì)量具有重要意義,但針對(duì)“數(shù)據(jù)泥團(tuán)”這一代碼味道的檢測(cè)算法和工具較少。本文研究了一套基于抽象語法樹的數(shù)據(jù)泥團(tuán)自動(dòng)檢測(cè)算法,該算法在以往研究成果的基礎(chǔ)上增加了檢測(cè)類成員屬性所組成的數(shù)據(jù)泥團(tuán),并提出剔除冗余數(shù)據(jù)泥團(tuán)、提取子數(shù)據(jù)泥團(tuán),為日后的自動(dòng)重構(gòu)工作做好鋪墊。

    通過對(duì)4個(gè)開源項(xiàng)目進(jìn)行數(shù)據(jù)泥團(tuán)檢測(cè)實(shí)驗(yàn),結(jié)果表明,該方法精確率非常高,能夠正確檢測(cè)出源代碼中所有的數(shù)據(jù)泥團(tuán),實(shí)驗(yàn)項(xiàng)目的數(shù)據(jù)泥團(tuán)檢測(cè)精確率可達(dá)100%,并消除了所有的假陽性實(shí)例,與已有方法相比,其結(jié)果更全面;算法執(zhí)行效率較高,執(zhí)行時(shí)間與系統(tǒng)規(guī)模成正比,適用于各種規(guī)模的系統(tǒng)。

    本文算法將類成員屬性與方法參數(shù)分開處理,且以字符串形式完全匹配而進(jìn)行數(shù)據(jù)泥團(tuán)的檢測(cè),但在實(shí)際軟件開發(fā)過程中有著同時(shí)存在于屬性和參數(shù)的數(shù)據(jù)泥團(tuán),或變量名并不完全相同的數(shù)據(jù)泥團(tuán),在后續(xù)工作中,將逐步改進(jìn)上述問題。此外,還將實(shí)現(xiàn)對(duì)數(shù)據(jù)泥團(tuán)的自動(dòng)重構(gòu),例如將其自動(dòng)封裝為數(shù)據(jù)類。

    [1] Fowler M. Refactoring: improving the design of existing code[M]. Massachusetts: Addison-Wesley, 1999.

    [2] Kerievsky J. Refactoring to patterns[M]. Massachusetts: Addison-Wesley, 2004.

    [3] Emden E V, Moonen L. Java quality assurance by detecting code smells[C]//Proceedings of the Ninth Working Conference on Reverse Engineering (WCRE' 02), 2002: 97-106.

    [4] Liu H, Ma Z, Shao W, et al. Schedule of bad smell detection and resolution: a new way to save effort[J]. IEEE Transactions on Software Engineering, 2012, 38(1): 220-235.

    [5] Liu H, Niu Z, Ma Z, et al. Identification of generalization refactoring opportunities[J]. Automated Software Engineering, 2013, 20(1): 81-110.

    [6] Maneerat N, Muenchaisri P. Bad-smell prediction from software design model using machine learning techniques[C]//Computer Science and Software Engineering (JCSSE), 2011 Eighth International Joint Conference on. IEEE, 2011: 331-336.

    [7] Dangel A, Pelisse R. PMD[CP/OL]. (2013-05-01) [2013-05-04]. http://sourceforge.net/projects/pmd/.

    [8] Burn O. CheckStyle[CP/OL]. (2012-10-12) [2013-05-04]. http://sourceforge.net/projects/checkstyle/.

    [9] Fontana F A, Braione P, Zanoni M. Automatic detection of bad smells in code: An experimental assessment[J]. Journal of Object Technology, 2012, 11(2): 1-38.

    [10] Intooitus SRL. inFusion[CP/OL]. (2012-10-31) [2013-05-04]. http://www.intooitus.com/products/infusion.

    [11] Murphy-Hill E. Stench Blossom[CP/OL]. http://people.engr.ncsu.edu/ermurph3/tools.html.

    [12] Thomas K, Eye M G, Olivier T. Eclipse corner article: abstract syntax tree[EB/OL]. (2006-11-20) [2013-05-04]. http:// www.eclipse.org/articles/article.php?file=Article-JavaCodeManipulation_AST/index.html.

    [13] 劉偉, 劉宏韜, 胡志剛. 代碼缺陷與代碼味道的自動(dòng)探測(cè)與優(yōu)化研究[J]. 計(jì)算機(jī)應(yīng)用研究, 2014, 31(1): 170-176.

    [14] Murphy-Hill E, Black A P. An interactive ambient visualization for code smells[C]//Proceedings of the 5th International Symposium on Software Visualization. ACM, 2010: 5-14.

    RESEARCH OF AUTOMATIC DETECTION FOR DATA CLUMPS BASED ON ABSTRACT SYNTAX TREE

    Liu Hongtao1Liu Wei1,2Hu Zhigang11(SchoolofSoftware,CentralSouthUniversity,Changsha410075,Hunan,China)

    2(SchoolofManagementandInformationEngineering,HunanUniversityofChineseMedicine,Changsha410208,Hunan,China)

    Data Clumps is a common code smell, it will lead to issues such as duplicated code and increased difficulty in maintenance. As most existing code smell automatic detection tools fail to detect data clumps, and the detection type is not complete, a data clumps automatic detection based on abstract syntax tree is proposed. On the basis of existing detection tools, adding new types of data clumps to the algorithm, with some new steps as redundant data elimination and sub-data clumps extraction. Experiments are executed on 4 open source projects. Results show that the approach has high accuracy, and it is able to detect data clumps which other tools failed to detect, such as Stench Blossom, inFusion, etc. In addition, this approach has good efficiency and the execution time is directly proportionate to the size of system.

    Code smell Data clumps Abstract syntax tree Source code parsing Refactoring

    2015-12-03。國(guó)家自然科學(xué)基金項(xiàng)目(61272148)。劉宏韜,碩士生,主研領(lǐng)域:軟件工程。劉偉,高工。胡志剛,教授。

    TP311.5

    A

    10.3969/j.issn.1000-386x.2017.01.003

    猜你喜歡
    泥團(tuán)自動(dòng)檢測(cè)源代碼
    人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
    基于TXL的源代碼插樁技術(shù)研究
    千萬不要把我當(dāng)經(jīng)典
    ——俑的自述
    基于STM32的室內(nèi)有害氣體自動(dòng)檢測(cè)與排風(fēng)系統(tǒng)
    電子制作(2018年19期)2018-11-14 02:36:50
    光電傳感器在自動(dòng)檢測(cè)和分揀中的應(yīng)用
    電子制作(2018年9期)2018-08-04 03:30:58
    軟件源代碼非公知性司法鑒定方法探析
    基于TestStand的自動(dòng)檢測(cè)程序開發(fā)
    初學(xué)陶藝
    K-F環(huán)自動(dòng)檢測(cè)系統(tǒng)設(shè)計(jì)
    蝴蝶
    404 Not Found

    404 Not Found


    nginx
    中文字幕精品免费在线观看视频| 国产精品av久久久久免费| 中文字幕av电影在线播放| 免费av中文字幕在线| 99久久国产精品久久久| 美女高潮到喷水免费观看| 亚洲欧美色中文字幕在线| 黑人巨大精品欧美一区二区mp4| 日日摸夜夜添夜夜添小说| 精品久久蜜臀av无| 国产熟女午夜一区二区三区| av有码第一页| 他把我摸到了高潮在线观看| 999久久久国产精品视频| 欧美日韩精品网址| 午夜免费鲁丝| 久久久国产一区二区| 成人黄色视频免费在线看| 国产伦人伦偷精品视频| 久久中文看片网| 亚洲精品国产区一区二| 黑人巨大精品欧美一区二区mp4| 免费日韩欧美在线观看| 淫妇啪啪啪对白视频| 久久精品国产99精品国产亚洲性色 | 欧美成狂野欧美在线观看| 99国产精品免费福利视频| 亚洲熟女毛片儿| 一级毛片高清免费大全| 国产单亲对白刺激| 国产成人精品无人区| 高清视频免费观看一区二区| 欧美日韩亚洲高清精品| 国产亚洲精品一区二区www | 91字幕亚洲| 下体分泌物呈黄色| 一本综合久久免费| 国产精品 欧美亚洲| bbb黄色大片| 亚洲黑人精品在线| 久久精品人人爽人人爽视色| 老汉色av国产亚洲站长工具| 国产日韩欧美亚洲二区| 亚洲精品国产区一区二| 精品国产国语对白av| 久久久久精品国产欧美久久久| 国产欧美日韩综合在线一区二区| 亚洲熟妇中文字幕五十中出 | 国产成+人综合+亚洲专区| 两个人看的免费小视频| 国产日韩一区二区三区精品不卡| 国产精品一区二区免费欧美| 日本wwww免费看| 久久亚洲真实| 亚洲精品美女久久av网站| 久热这里只有精品99| 精品亚洲成a人片在线观看| 在线观看66精品国产| www日本在线高清视频| 成年人黄色毛片网站| 免费观看人在逋| 99在线人妻在线中文字幕 | 国产淫语在线视频| 美女福利国产在线| 校园春色视频在线观看| 午夜老司机福利片| 又大又爽又粗| 99国产综合亚洲精品| 狠狠婷婷综合久久久久久88av| 色94色欧美一区二区| 欧美激情极品国产一区二区三区| 天堂动漫精品| 久久精品国产清高在天天线| 欧美黑人精品巨大| 免费少妇av软件| 久久国产乱子伦精品免费另类| 日韩欧美国产一区二区入口| 999久久久国产精品视频| 男人舔女人的私密视频| 美女视频免费永久观看网站| 国产精品亚洲一级av第二区| 人人妻人人添人人爽欧美一区卜| 亚洲综合色网址| 亚洲免费av在线视频| 国产欧美日韩综合在线一区二区| 另类亚洲欧美激情| 91字幕亚洲| 国产精品久久久久久精品古装| 亚洲午夜精品一区,二区,三区| 亚洲精品av麻豆狂野| 欧洲精品卡2卡3卡4卡5卡区| 欧美成人免费av一区二区三区 | 女人被狂操c到高潮| 老司机福利观看| 18禁裸乳无遮挡动漫免费视频| 操美女的视频在线观看| 高清毛片免费观看视频网站 | 久久久久久人人人人人| 欧美乱色亚洲激情| av国产精品久久久久影院| 国产精品一区二区在线不卡| 欧美日韩亚洲国产一区二区在线观看 | 国产成人精品久久二区二区91| 露出奶头的视频| 久久久水蜜桃国产精品网| 少妇被粗大的猛进出69影院| 一级a爱片免费观看的视频| 日韩制服丝袜自拍偷拍| 丝袜在线中文字幕| 国产99白浆流出| 精品人妻1区二区| 欧美午夜高清在线| 久久中文字幕人妻熟女| 久久精品亚洲av国产电影网| 欧洲精品卡2卡3卡4卡5卡区| 国产精品一区二区免费欧美| 人妻丰满熟妇av一区二区三区 | 在线十欧美十亚洲十日本专区| 99久久99久久久精品蜜桃| 午夜日韩欧美国产| 亚洲午夜理论影院| 亚洲av片天天在线观看| 亚洲av成人一区二区三| 国产1区2区3区精品| 50天的宝宝边吃奶边哭怎么回事| xxx96com| 精品国产乱子伦一区二区三区| 久久ye,这里只有精品| www.熟女人妻精品国产| 亚洲国产中文字幕在线视频| 婷婷丁香在线五月| 亚洲欧美激情综合另类| 别揉我奶头~嗯~啊~动态视频| 丝袜人妻中文字幕| 色精品久久人妻99蜜桃| 免费女性裸体啪啪无遮挡网站| 久久精品人人爽人人爽视色| 久久久国产精品麻豆| 欧美精品人与动牲交sv欧美| 中文欧美无线码| 99热国产这里只有精品6| 十八禁人妻一区二区| 精品国产亚洲在线| 飞空精品影院首页| 丰满饥渴人妻一区二区三| 亚洲熟女毛片儿| 亚洲全国av大片| 搡老岳熟女国产| 成年动漫av网址| 新久久久久国产一级毛片| 久久精品aⅴ一区二区三区四区| 一本一本久久a久久精品综合妖精| 90打野战视频偷拍视频| 高清黄色对白视频在线免费看| 免费观看a级毛片全部| 久久久国产成人精品二区 | 久久久久久久午夜电影 | 老司机影院毛片| 电影成人av| 久久九九热精品免费| 嫁个100分男人电影在线观看| 亚洲国产欧美一区二区综合| 国产亚洲欧美在线一区二区| 欧美黄色片欧美黄色片| 天天影视国产精品| 999久久久国产精品视频| videos熟女内射| 无遮挡黄片免费观看| 久热这里只有精品99| 成年动漫av网址| 国产高清激情床上av| 久久精品aⅴ一区二区三区四区| 国产在线观看jvid| 国产av一区二区精品久久| 午夜福利乱码中文字幕| 在线观看免费视频网站a站| 国产91精品成人一区二区三区| 在线免费观看的www视频| 男女床上黄色一级片免费看| 欧美激情极品国产一区二区三区| 99在线人妻在线中文字幕 | 操美女的视频在线观看| 国产亚洲欧美98| 女人被狂操c到高潮| 成熟少妇高潮喷水视频| 成人三级做爰电影| 国产成人啪精品午夜网站| 多毛熟女@视频| 免费久久久久久久精品成人欧美视频| 国产精品永久免费网站| 9色porny在线观看| 亚洲情色 制服丝袜| 国产精品一区二区免费欧美| 国产片内射在线| 久久影院123| 亚洲综合色网址| 91麻豆av在线| www.精华液| 精品第一国产精品| 夜夜躁狠狠躁天天躁| 亚洲欧美日韩高清在线视频| 国产成人免费无遮挡视频| 国产1区2区3区精品| 9191精品国产免费久久| 在线观看舔阴道视频| 又黄又粗又硬又大视频| 免费一级毛片在线播放高清视频 | 热re99久久精品国产66热6| 又紧又爽又黄一区二区| 国产精品免费视频内射| 国产精品免费视频内射| 一级a爱视频在线免费观看| 侵犯人妻中文字幕一二三四区| 久久香蕉精品热| 天堂俺去俺来也www色官网| 国产成人欧美| 亚洲 国产 在线| 十八禁高潮呻吟视频| 久久国产乱子伦精品免费另类| 精品一品国产午夜福利视频| 亚洲国产毛片av蜜桃av| 少妇被粗大的猛进出69影院| 两个人免费观看高清视频| 丝袜在线中文字幕| 一二三四在线观看免费中文在| 在线播放国产精品三级| √禁漫天堂资源中文www| 久久ye,这里只有精品| 亚洲在线自拍视频| 真人做人爱边吃奶动态| 免费观看精品视频网站| 亚洲中文日韩欧美视频| 欧美日韩瑟瑟在线播放| 亚洲欧美精品综合一区二区三区| 久久香蕉精品热| 国产成人欧美| 新久久久久国产一级毛片| 美女午夜性视频免费| av欧美777| 亚洲片人在线观看| 日韩欧美三级三区| 国产成人精品在线电影| 最近最新中文字幕大全免费视频| 电影成人av| 99香蕉大伊视频| 欧美黄色淫秽网站| 丰满人妻熟妇乱又伦精品不卡| 精品国产乱子伦一区二区三区| 在线观看免费高清a一片| 韩国av一区二区三区四区| 激情在线观看视频在线高清 | 人人妻人人澡人人爽人人夜夜| 天天添夜夜摸| 国产伦人伦偷精品视频| 一级,二级,三级黄色视频| 国产成人免费观看mmmm| 欧美另类亚洲清纯唯美| 久久人人爽av亚洲精品天堂| 亚洲av片天天在线观看| 免费高清在线观看日韩| 国产不卡av网站在线观看| 亚洲熟妇中文字幕五十中出 | 亚洲成人国产一区在线观看| 亚洲精品粉嫩美女一区| 天堂中文最新版在线下载| 成年人黄色毛片网站| 色婷婷av一区二区三区视频| 成人18禁在线播放| 无限看片的www在线观看| 黑人巨大精品欧美一区二区mp4| 久久婷婷成人综合色麻豆| av视频免费观看在线观看| 久久人妻福利社区极品人妻图片| 国产欧美日韩一区二区精品| 亚洲avbb在线观看| 看免费av毛片| 美女国产高潮福利片在线看| 精品电影一区二区在线| 国产主播在线观看一区二区| 久久中文字幕一级| 后天国语完整版免费观看| 久久久久视频综合| 午夜免费鲁丝| 国产精品国产高清国产av | 久久亚洲真实| 国产麻豆69| 中文字幕最新亚洲高清| 久久久久国产精品人妻aⅴ院 | 这个男人来自地球电影免费观看| aaaaa片日本免费| 9色porny在线观看| 超碰成人久久| 好男人电影高清在线观看| 久久久精品免费免费高清| 精品视频人人做人人爽| 午夜福利欧美成人| av欧美777| 五月开心婷婷网| 桃红色精品国产亚洲av| 三级毛片av免费| 黑人猛操日本美女一级片| 一级毛片精品| 手机成人av网站| 久久精品国产a三级三级三级| 精品国产美女av久久久久小说| 久久久久久久午夜电影 | 99在线人妻在线中文字幕 | 成人永久免费在线观看视频| 欧美精品亚洲一区二区| 嫩草影视91久久| 亚洲av成人av| 人成视频在线观看免费观看| 99久久精品国产亚洲精品| 黑人欧美特级aaaaaa片| av电影中文网址| 日韩免费av在线播放| 18禁国产床啪视频网站| 国产伦人伦偷精品视频| 欧美日韩视频精品一区| 狂野欧美激情性xxxx| 久久精品亚洲精品国产色婷小说| 亚洲专区中文字幕在线| 国产又爽黄色视频| 成年动漫av网址| 90打野战视频偷拍视频| 99久久精品国产亚洲精品| 精品午夜福利视频在线观看一区| 成人永久免费在线观看视频| 亚洲欧美激情在线| 村上凉子中文字幕在线| 国产欧美日韩一区二区三| 中文字幕另类日韩欧美亚洲嫩草| 制服诱惑二区| xxx96com| 国产亚洲av高清不卡| 热99久久久久精品小说推荐| 午夜亚洲福利在线播放| 99香蕉大伊视频| 国产片内射在线| 久久久久国产精品人妻aⅴ院 | 亚洲,欧美精品.| 久久久久久久精品吃奶| 精品久久久久久电影网| 成人三级做爰电影| 91在线观看av| 亚洲全国av大片| 高清视频免费观看一区二区| 亚洲精品自拍成人| 亚洲精品国产一区二区精华液| 亚洲av片天天在线观看| 丝袜在线中文字幕| 黄色女人牲交| 国产精品久久久久久人妻精品电影| 狂野欧美激情性xxxx| 一边摸一边抽搐一进一出视频| 国产一区在线观看成人免费| 欧美在线一区亚洲| 国产成人啪精品午夜网站| 又黄又粗又硬又大视频| 新久久久久国产一级毛片| 成人亚洲精品一区在线观看| 99久久国产精品久久久| 在线观看舔阴道视频| 嫩草影视91久久| 成人亚洲精品一区在线观看| 亚洲欧美激情综合另类| 好看av亚洲va欧美ⅴa在| 国产精品久久久av美女十八| 日本a在线网址| 亚洲国产中文字幕在线视频| 成年版毛片免费区| 久久精品国产亚洲av香蕉五月 | 最新美女视频免费是黄的| 搡老熟女国产l中国老女人| 老熟女久久久| 日韩视频一区二区在线观看| 热99re8久久精品国产| 色综合婷婷激情| 久久精品国产a三级三级三级| 久久国产精品大桥未久av| 精品午夜福利视频在线观看一区| 又紧又爽又黄一区二区| 国产av精品麻豆| 亚洲精品国产色婷婷电影| 精品欧美一区二区三区在线| 80岁老熟妇乱子伦牲交| a级片在线免费高清观看视频| 亚洲七黄色美女视频| 精品久久蜜臀av无| 高清欧美精品videossex| 精品亚洲成国产av| 免费高清在线观看日韩| 精品久久久久久电影网| 精品国产国语对白av| 亚洲少妇的诱惑av| 一个人免费在线观看的高清视频| 18禁黄网站禁片午夜丰满| 丁香六月欧美| 大型黄色视频在线免费观看| 国产精品九九99| 99香蕉大伊视频| 亚洲色图综合在线观看| 美女视频免费永久观看网站| 99国产精品免费福利视频| 国产欧美日韩一区二区精品| xxxhd国产人妻xxx| 国产亚洲一区二区精品| 欧美黑人欧美精品刺激| 久久午夜亚洲精品久久| 精品国产乱子伦一区二区三区| 999久久久精品免费观看国产| 亚洲av美国av| 国产av又大| 午夜免费鲁丝| 国产欧美日韩一区二区三区在线| 五月开心婷婷网| 日本wwww免费看| 丝袜美足系列| 亚洲美女黄片视频| 中文字幕人妻丝袜制服| 大码成人一级视频| 亚洲午夜精品一区,二区,三区| 国产主播在线观看一区二区| 日韩人妻精品一区2区三区| 国产高清国产精品国产三级| 在线观看www视频免费| 天堂√8在线中文| 亚洲人成电影免费在线| 国产成人精品久久二区二区免费| 午夜免费成人在线视频| 叶爱在线成人免费视频播放| 最新在线观看一区二区三区| 9热在线视频观看99| 亚洲精品美女久久av网站| 国产成人欧美在线观看 | 亚洲美女黄片视频| 51午夜福利影视在线观看| 亚洲精品国产一区二区精华液| 久久国产精品影院| 亚洲男人天堂网一区| 精品熟女少妇八av免费久了| 亚洲成人手机| 久久久国产欧美日韩av| 久久久久久久久久久久大奶| 免费av中文字幕在线| 91字幕亚洲| 嫁个100分男人电影在线观看| 午夜免费鲁丝| 亚洲第一av免费看| 18禁黄网站禁片午夜丰满| 欧美激情久久久久久爽电影 | 国产精品免费大片| 亚洲熟女毛片儿| 成人亚洲精品一区在线观看| 大码成人一级视频| 在线十欧美十亚洲十日本专区| 国产高清激情床上av| 亚洲七黄色美女视频| av超薄肉色丝袜交足视频| 日日夜夜操网爽| 午夜福利乱码中文字幕| 无人区码免费观看不卡| 午夜激情av网站| 成人亚洲精品一区在线观看| 成熟少妇高潮喷水视频| 亚洲一区中文字幕在线| 91麻豆精品激情在线观看国产 | 日韩大码丰满熟妇| 色综合婷婷激情| 久热这里只有精品99| 精品无人区乱码1区二区| 水蜜桃什么品种好| 精品久久久久久久毛片微露脸| 亚洲在线自拍视频| 啦啦啦免费观看视频1| 精品国产一区二区久久| 久久香蕉精品热| av网站免费在线观看视频| 91大片在线观看| 欧美日韩黄片免| 电影成人av| 亚洲国产精品合色在线| 国产精品av久久久久免费| 亚洲精品久久午夜乱码| 啦啦啦免费观看视频1| 久久性视频一级片| 国产在视频线精品| 亚洲精品美女久久av网站| 亚洲欧洲精品一区二区精品久久久| 嫩草影视91久久| 高清毛片免费观看视频网站 | 十八禁人妻一区二区| 搡老熟女国产l中国老女人| 他把我摸到了高潮在线观看| 国产成人av教育| 亚洲国产精品合色在线| 一二三四社区在线视频社区8| 国产97色在线日韩免费| 建设人人有责人人尽责人人享有的| 久久久国产精品麻豆| 制服人妻中文乱码| 欧美精品高潮呻吟av久久| 精品熟女少妇八av免费久了| 午夜两性在线视频| 90打野战视频偷拍视频| 久久久久视频综合| 好男人电影高清在线观看| 男人操女人黄网站| 午夜两性在线视频| 欧美精品人与动牲交sv欧美| 成人永久免费在线观看视频| 日韩熟女老妇一区二区性免费视频| 久久午夜综合久久蜜桃| 精品视频人人做人人爽| 亚洲免费av在线视频| 日韩制服丝袜自拍偷拍| av福利片在线| 精品国产亚洲在线| 欧美亚洲 丝袜 人妻 在线| 一边摸一边抽搐一进一出视频| 中文字幕另类日韩欧美亚洲嫩草| 中文字幕高清在线视频| 深夜精品福利| 欧美精品av麻豆av| 精品视频人人做人人爽| 国产成人欧美在线观看 | 国产精品二区激情视频| 国产亚洲欧美精品永久| 欧美+亚洲+日韩+国产| 香蕉国产在线看| 一边摸一边做爽爽视频免费| 母亲3免费完整高清在线观看| 欧美 亚洲 国产 日韩一| 免费高清在线观看日韩| 午夜91福利影院| 午夜福利免费观看在线| 精品国内亚洲2022精品成人 | 99riav亚洲国产免费| 欧美精品亚洲一区二区| 精品国产乱码久久久久久男人| 亚洲专区字幕在线| 岛国毛片在线播放| 黄色丝袜av网址大全| 美女午夜性视频免费| 在线观看免费午夜福利视频| 国产精品98久久久久久宅男小说| 日韩欧美免费精品| 国产精品电影一区二区三区 | 国产成人免费观看mmmm| 亚洲全国av大片| 日韩一卡2卡3卡4卡2021年| 久久精品国产a三级三级三级| 18禁黄网站禁片午夜丰满| 丝袜在线中文字幕| 在线观看免费日韩欧美大片| 在线观看免费视频日本深夜| 亚洲一码二码三码区别大吗| 国产免费男女视频| 露出奶头的视频| 免费一级毛片在线播放高清视频 | 我的亚洲天堂| 新久久久久国产一级毛片| 很黄的视频免费| 天天躁夜夜躁狠狠躁躁| 免费在线观看黄色视频的| 国产精品久久久久久精品古装| a在线观看视频网站| 麻豆乱淫一区二区| 男人操女人黄网站| 好男人电影高清在线观看| 人人妻人人澡人人看| 大型黄色视频在线免费观看| 国产精品美女特级片免费视频播放器 | 欧美中文综合在线视频| 日韩精品免费视频一区二区三区| 法律面前人人平等表现在哪些方面| 亚洲片人在线观看| 免费久久久久久久精品成人欧美视频| 国产精品香港三级国产av潘金莲| 国产精品免费大片| 一区二区日韩欧美中文字幕| 高清在线国产一区| 亚洲精品一二三| 久久热在线av| 99精品欧美一区二区三区四区| 亚洲欧美日韩高清在线视频| 80岁老熟妇乱子伦牲交| www.精华液| 国产主播在线观看一区二区| 校园春色视频在线观看| 精品国产一区二区三区四区第35| 精品久久蜜臀av无| 搡老岳熟女国产| 精品欧美一区二区三区在线| 午夜福利欧美成人| 欧美国产精品一级二级三级| 亚洲精品久久成人aⅴ小说| 国产精品免费大片| 国产高清激情床上av| 美女扒开内裤让男人捅视频| 搡老岳熟女国产| √禁漫天堂资源中文www| av欧美777| 国产激情久久老熟女| 国产真人三级小视频在线观看| 国产男女内射视频| 80岁老熟妇乱子伦牲交| 久久国产精品人妻蜜桃| 捣出白浆h1v1| 人人妻人人添人人爽欧美一区卜| 精品视频人人做人人爽| 自拍欧美九色日韩亚洲蝌蚪91| 欧美精品高潮呻吟av久久| 成人三级做爰电影| 欧美黑人精品巨大|