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

    基于代碼行變更指數(shù)的異味類排序方法

    2021-03-23 09:38:30位歡歡吳海濤高建華
    關(guān)鍵詞:開發(fā)人員異味代碼

    位歡歡,吳海濤,高建華

    (上海師范大學(xué) 信息與機(jī)電工程學(xué)院,上海 200234)

    0 引 言

    代碼異味[1]的出現(xiàn)給軟件質(zhì)量和可維護(hù)性帶來了很大的隱患。而解決它們的有效方式是進(jìn)行重構(gòu),但是由于重構(gòu)的成本相對(duì)較高,對(duì)所有的異味進(jìn)行重構(gòu)是不現(xiàn)實(shí)且不必要的,因?yàn)椴煌愇额惖漠愇冻潭炔⒉皇窍嗟鹊腫2]。因此,需要對(duì)異味類進(jìn)行排序,著重關(guān)注那些有較大概率出現(xiàn)異味的代碼。

    Vidal等[3]提出了一種基于3個(gè)標(biāo)準(zhǔn)的半自動(dòng)化的異味類排序方法。Fontana等[4]采用度量值與閾值的比較結(jié)果(強(qiáng)度值)來對(duì)代碼異味進(jìn)行排序。Natthawute等[5]基于開發(fā)人員的角度來研究代碼異味的排序,研究表明開發(fā)人員是通過代碼的耦合程度以及組件的重要性來對(duì)代碼異味進(jìn)行篩選和排序的。Anshul Rani等[6]則是通過對(duì)不同異味類之間的耦合程度計(jì)算出每個(gè)類的影響因子,并根據(jù)影響因子的大小對(duì)代碼異味進(jìn)行排序。Mcintosh等[7]通過在 5ESS? 軟件項(xiàng)目上進(jìn)行研究,發(fā)現(xiàn)代碼變更的規(guī)模與軟件出現(xiàn)錯(cuò)誤的概率具有相關(guān)性。Charalampidou等[8]的研究表明代碼變更的規(guī)模與軟件易錯(cuò)性發(fā)生的概率存在正相關(guān)關(guān)系,即代碼變更規(guī)模越大的類,出現(xiàn)異常和錯(cuò)誤的概率越大。

    本文基于代碼變更與軟件易錯(cuò)性存在正相關(guān)關(guān)系,通過研究在歷史代碼變更信息中各個(gè)類的代碼行數(shù)動(dòng)態(tài)變化情況,提出基于代碼行變更指數(shù)的異味類排序方法(CLCI)。并在開源項(xiàng)目HospitalAutomationWithJavaEE上進(jìn)行實(shí)證分析,實(shí)驗(yàn)結(jié)果表明,本文提出的異味類排序方法可以使后續(xù)異味類重構(gòu)更加容易,從而為項(xiàng)目開發(fā)和維護(hù)節(jié)約成本。

    1 相關(guān)工作

    1.1 異味類排序

    Vidal等[3]提出了一種半自動(dòng)化的方法,用于在決定對(duì)代碼異味進(jìn)行適當(dāng)重構(gòu)之前先對(duì)異味類進(jìn)行優(yōu)先級(jí)排序,該排序方法主要基于以下3個(gè)標(biāo)準(zhǔn):發(fā)生異味的代碼的穩(wěn)定性、開發(fā)人員是否使用常規(guī)標(biāo)準(zhǔn)來對(duì)每種異味進(jìn)行主觀評(píng)估,以及相關(guān)的可修改性場(chǎng)景。通過在兩個(gè)案例研究中進(jìn)行實(shí)驗(yàn)驗(yàn)證,結(jié)果表明建議的代碼異味順序?qū)﹂_發(fā)人員是有用的。其研究結(jié)果表明代碼異味排序?qū)τ趯?shí)際的程序開發(fā)是有效的。

    Fontana等[4]提出基于強(qiáng)度因子來對(duì)代碼異味進(jìn)行排序,強(qiáng)度因子是表示代碼異味強(qiáng)度情況的指標(biāo),通過對(duì)靜態(tài)度量值與閾值的比較并計(jì)算得出的。實(shí)驗(yàn)研究是在Qua-litas Corpus上的74個(gè)開源項(xiàng)目上進(jìn)行,實(shí)驗(yàn)使用自己研發(fā)的工具JcodeOdor,通過對(duì)6種代碼異味進(jìn)行一些靜態(tài)度量值測(cè)量來建立實(shí)驗(yàn)?zāi)P汀5?,?qiáng)度因子的實(shí)驗(yàn)過程相對(duì)復(fù)雜,不利于開發(fā)人員的實(shí)際應(yīng)用。

    Natthawute等[5]通過對(duì)10個(gè)專業(yè)開發(fā)人員在異味的選擇和排序需要考慮哪些因素進(jìn)行問卷調(diào)查,把開發(fā)人員對(duì)于異味的看法分為15個(gè)類別,以此來判斷開發(fā)人員在異味選擇時(shí)最關(guān)注的因素。實(shí)驗(yàn)結(jié)果表明,開發(fā)人員在選擇異味時(shí),工作相關(guān)性是首先被考慮的,其次是異味的嚴(yán)重性;在開發(fā)人員對(duì)代碼異味排序時(shí),模塊重要性是普遍被優(yōu)先關(guān)注的,其次是項(xiàng)目相關(guān)性。但是,其研究并沒有為開發(fā)人員在代碼異味排序提供具體的定量指標(biāo)。

    Anshul Rani等[6]的研究是基于類間的耦合性來對(duì)異味進(jìn)行排序的。實(shí)驗(yàn)共分為兩個(gè)部分,第一部分為檢測(cè)代碼異味,得到異味類列表;第二部分是基于異味影響因子來對(duì)異味類進(jìn)行排序,影響因子越大表示異味越嚴(yán)重。實(shí)驗(yàn)結(jié)果表明,根據(jù)排序列表進(jìn)行重構(gòu)的結(jié)果,明顯好于隨機(jī)進(jìn)行重構(gòu)的結(jié)果,作者的研究為開發(fā)人員提供新的異味類排序方法。

    1.2 代碼變更與軟件易錯(cuò)率的相關(guān)性

    Mcintosh等[7]通過在5ESS?軟件項(xiàng)目上進(jìn)行實(shí)證研究,得出代碼變更的規(guī)模與軟件出現(xiàn)錯(cuò)誤的概率具有相關(guān)性。通過建立預(yù)測(cè)模型,研究得出隨著代碼變更次數(shù)、代碼變更行數(shù)的增加和相關(guān)聯(lián)的子系統(tǒng)數(shù)目的增加,軟件出現(xiàn)錯(cuò)誤的可能性也會(huì)相對(duì)增加。此外,不同類型的代碼變更對(duì)于軟件系統(tǒng)出錯(cuò)率的影響是不同的,新增加的代碼出現(xiàn)錯(cuò)誤的概率要比修復(fù)缺陷的代碼變更容易出現(xiàn)錯(cuò)誤,因?yàn)樾迯?fù)代碼的變更相對(duì)規(guī)模較小。

    Charalampidou等[8]通過使用代碼異味出現(xiàn)概率來對(duì)常見的TD代碼中的代碼異味進(jìn)行評(píng)估分析,分析異味出現(xiàn)概率與模塊的變化傾向的關(guān)系。案例研究的結(jié)果表明,比起不易變更模塊中代碼異味出現(xiàn)的概率,代碼異味顯然更易集中在具有變更傾向的模塊中。這些研究結(jié)果對(duì)研究人員和實(shí)踐者都是有用的,可以為后續(xù)研究重構(gòu)策略和重構(gòu)的優(yōu)先級(jí)提供方向。

    陳芝菲[9]通過對(duì)大規(guī)模數(shù)據(jù)集的歷史維護(hù)信息進(jìn)行分析,發(fā)現(xiàn)出現(xiàn)代碼異味和沒有出現(xiàn)代碼異味的類發(fā)生變更或錯(cuò)誤的次數(shù)存在較大的差異。為了進(jìn)一步探索軟件變更與代碼異味出現(xiàn)的關(guān)系,建立負(fù)二項(xiàng)回歸模型來對(duì)其進(jìn)行研究,研究表明代碼變更是軟件發(fā)生易錯(cuò)性的最重要因素,尤其是代碼行等自變量。

    Luca Gazzola等[10]通過在軟件系統(tǒng)交互時(shí)存在故障和程序不穩(wěn)定問題的研究中,發(fā)現(xiàn)代碼的大量變更容易導(dǎo)致項(xiàng)目出現(xiàn)錯(cuò)誤,并提供統(tǒng)計(jì)數(shù)據(jù)來支持其聲明,更進(jìn)一步提出應(yīng)避免對(duì)超過25%的現(xiàn)有代碼進(jìn)行更改,對(duì)于此類情況建議重新編碼而不是修改。上述研究均表明代碼變更規(guī)模越大,越容易導(dǎo)致項(xiàng)目出現(xiàn)錯(cuò)誤,給項(xiàng)目后期的維護(hù)帶來負(fù)擔(dān)。

    本文基于代碼變更規(guī)模與代碼出現(xiàn)異味的概率存在正相關(guān)關(guān)系,通過關(guān)注代碼行數(shù)在整個(gè)開發(fā)過程中的動(dòng)態(tài)變化來定量描述代碼變更的規(guī)模,并把代碼變更的規(guī)模定義為代碼行變更指數(shù),根據(jù)其值的大小來對(duì)異味類進(jìn)行降序排序。

    2 代碼行變更指數(shù)排序方法

    在軟件項(xiàng)目的開發(fā)過程中,隨著項(xiàng)目需求的變更、錯(cuò)誤代碼的修正、軟件項(xiàng)目的優(yōu)化、測(cè)試案例的選擇和后期項(xiàng)目的維護(hù),開發(fā)人員需要對(duì)代碼進(jìn)行增加、刪除、修改操作。但是,代碼變更不可以不計(jì)其規(guī)模而進(jìn)行,若軟件項(xiàng)目的變更大于項(xiàng)目代碼總數(shù)的25%時(shí),修改代碼所花費(fèi)的成本將大于重新編譯該項(xiàng)目[10]。設(shè)計(jì)良好的項(xiàng)目結(jié)構(gòu)其類的穩(wěn)定性相對(duì)較高,面臨上述情況時(shí),其代碼變更規(guī)模相對(duì)較小,相反,若是一個(gè)類的代碼行數(shù)頻繁變更,則其代碼的結(jié)構(gòu)設(shè)計(jì)越糟糕,出現(xiàn)異味的概率越大。此前,對(duì)于代碼行數(shù)的研究大多基于靜態(tài)的最終代碼行數(shù),而本文主要關(guān)注在一個(gè)項(xiàng)目開發(fā)周期中代碼行數(shù)的動(dòng)態(tài)變化,即每個(gè)開發(fā)人員每次提交的代碼變更信息中代碼行數(shù)的變化,并用代碼行變更指數(shù)(CLCI)來表示該變化,CLCI值越大表示該類的代碼變更規(guī)模越大,則該類出現(xiàn)異味的概率越大。本文的實(shí)驗(yàn)是基于類的代碼行變更指數(shù)(CLCI)來對(duì)異味類進(jìn)行排序,以此減少后期維護(hù)成本。實(shí)驗(yàn)的整體流程如圖1所示,共分為3步,描述如下:

    圖1 整體流程

    (1)檢測(cè)階段:在檢測(cè)過程中,本文使用開源檢測(cè)工具JDeodorant,它是eclipse的免費(fèi)開源插件,檢測(cè)的異味為feature envy,Duplicate code,Type checking,Long Method,God Class,根據(jù)檢測(cè)結(jié)果得到異味類列表;

    (2)計(jì)算階段:收集項(xiàng)目開發(fā)過程中每個(gè)開發(fā)人員每次提交的代碼變更信息,統(tǒng)計(jì)同一異味類每次代碼變更前后的代碼行數(shù),計(jì)算其差值為該次代碼變更的行數(shù);之后,把代碼行變更指數(shù)與最終代碼行數(shù)的比值之和稱為代碼行變更倍數(shù)(Times),并對(duì)其進(jìn)行sigmoid函數(shù)歸一化,得到的值即為代碼行變更指數(shù)(CLCI),分別計(jì)算各個(gè)異味類的CLCI值,得到所有異味類的代碼行變更指數(shù)列表;

    (3)排序階段:根據(jù)異味類的代碼變更指數(shù)(CLCI)值的大小對(duì)檢測(cè)到的異味類進(jìn)行排序,CLCI值越大的異味類則表示其代碼變更規(guī)模越大,出現(xiàn)代碼異味的概率相對(duì)較高,反之,則表示該異味類出現(xiàn)異味的概率相對(duì)較低。

    2.1 檢測(cè)工具的選擇

    許多學(xué)者已經(jīng)對(duì)代碼異味的檢測(cè)進(jìn)行研究[11-14],而本文主要研究代碼異味的排序方式,對(duì)于代碼異味的檢測(cè)傾向于選擇開源且易于操作的代碼異味檢測(cè)工具。本文通過對(duì)代碼異味檢測(cè)工具的分析和研究,最終選擇JDeodorant作為本文代碼異味檢測(cè)的工具,見表1。選擇JDeodorant工具的優(yōu)勢(shì):

    (1)JDeodorant工具是eclipse軟件的一個(gè)開源插件,且操作簡(jiǎn)單;

    (2)JDeodorant工具可以自動(dòng)識(shí)別java程序中本次實(shí)驗(yàn)需要檢測(cè)的所有異味類型;

    (3)JDeodorant工具可以向開發(fā)人員提供多種重構(gòu)建議并自動(dòng)實(shí)施開發(fā)人員所選擇的重構(gòu)建議。

    表1 異味檢測(cè)工具

    2.2 代碼變更指數(shù)的計(jì)算

    大量研究表明,代碼變更規(guī)模與軟件易錯(cuò)率存在正相關(guān)關(guān)系[7-10],本文正是基于代碼變更規(guī)模的大小來判斷哪些類更容易出現(xiàn)異常和錯(cuò)誤,代碼變更規(guī)模較大的異味類出現(xiàn)異味的概率相對(duì)較大。而此前的研究主要關(guān)注每個(gè)類最終的靜態(tài)代碼行數(shù),而忽略在整個(gè)項(xiàng)目開發(fā)中每個(gè)類的代碼行數(shù)隨著每次開發(fā)人員提交代碼而發(fā)生動(dòng)態(tài)變化的情況。本文基于每次代碼變更前后代碼行數(shù)的變化情況來對(duì)異味類進(jìn)行排序,其中代碼變更次數(shù)相對(duì)較多,每次代碼行數(shù)變化相對(duì)較大的類,則其出現(xiàn)異味的概率也相對(duì)較大。因此,本文為了描述代碼行在整個(gè)項(xiàng)目開發(fā)周期中的動(dòng)態(tài)變化,定義了代碼行變更指數(shù)(CLCI)。代碼行變更指數(shù)是指在項(xiàng)目開發(fā)周期中,每次開發(fā)人員提交代碼時(shí),該異味類代碼行數(shù)發(fā)生變化的總和是最終代碼行數(shù)的倍數(shù)Times,并對(duì)其進(jìn)行sigmoid函數(shù)歸一化。代碼行變更指數(shù)(CLCI)的計(jì)算公式如下

    (1)

    (2)

    其中,k表示代碼變更總次數(shù),CR(i)(Code Row) 為異味類第i次代碼變更后的代碼行數(shù),其中CR(0)=0,則CR(i)-CR(i-1) 為第i次代碼變更時(shí),發(fā)生變化的代碼行數(shù),在除以最終代碼行數(shù)(LCR)并求和,并對(duì)求和結(jié)果進(jìn)行sigmoid函數(shù)歸一化,使其值范圍屬于(0,1)之間。計(jì)算代碼行變更指數(shù)的偽代碼設(shè)計(jì)如下:

    算法1: CLCI計(jì)算過程

    輸入: 代碼提交行數(shù)CR,代碼變更次數(shù)k,最終代碼行數(shù)LCR

    輸出: CLCI值

    (1) CLCI←0,CR(0)←0

    (2) Fori←1 tokDo

    (3) If CR(i)≥CR(i-1) Then

    (4) CCR(i)←CR(i)-CR(i-1)

    (5) Else

    (6) CCR(i)←CR(i-1)-CR(i)

    (7) End if

    (8) Times←Times+CCR(i)/LCR

    (9) End for

    2.3 異味類排序

    通過上述方式對(duì)異味類進(jìn)行計(jì)算得出所有異味類的代碼行變更指數(shù),CLCI的值越大,則表示在項(xiàng)目開發(fā)過程中該類的代碼變更規(guī)模越大,即該類出現(xiàn)異味的概率越大。反之,CLCI的值越小,則該類出現(xiàn)異味的概率越小。最后,根據(jù)CLCI值的大小來對(duì)異味類進(jìn)行降序排序,從而得到排序后的異味類列表。

    3 實(shí)驗(yàn)研究

    為驗(yàn)證依據(jù)代碼行變更指數(shù)對(duì)異味類排序的有效性,本文以HospitalAutomationWithJavaEE[6]系統(tǒng)作為測(cè)試背景,計(jì)算該項(xiàng)目所有異味類的代碼行變更指數(shù),并依據(jù)代碼行變更指數(shù)值的大小進(jìn)行排序,最終得到排序后的異味類列表。實(shí)驗(yàn)主要尋求以下幾個(gè)問題的解答:

    Q1:使用CLCI排序方式進(jìn)行重構(gòu),前序異味類重構(gòu)之后能否使后續(xù)需要重構(gòu)的異味類數(shù)量減少?

    Q2:使用CLCI排序方式進(jìn)行重構(gòu),重構(gòu)后總體異味類剩余數(shù)量是否減少?

    Q3:使用CLCI排序方式進(jìn)行重構(gòu),比基于類間耦合性[6]進(jìn)行排序,異味剩余率是否減少更快?

    3.1 實(shí)驗(yàn)準(zhǔn)備

    本文實(shí)證研究是在java開源項(xiàng)目上進(jìn)行的,項(xiàng)目名稱為HospitalAutomationWithJavaEE[6],此項(xiàng)目共有49個(gè)類,58次代碼變更記錄信息,選擇此項(xiàng)目的原因?yàn)椋孩僭谄渌撐闹惺褂肹6],具有一定的可信度;②有很高的錯(cuò)誤比例(36%),給代碼異味的排序供了實(shí)例。檢測(cè)代碼異味的工具為自動(dòng)化檢測(cè)工具JDeodorant,主要檢測(cè)的代碼異味為feature envy,Duplicate code,Type checking,Long Method,God Class,該工具操作簡(jiǎn)單且具有重構(gòu)功能,能夠?yàn)楹笃谥貥?gòu)節(jié)約成本。

    3.2 數(shù)據(jù)預(yù)處理

    實(shí)驗(yàn)所需的初始數(shù)據(jù)為項(xiàng)目歷史記錄信息,項(xiàng)目歷史記錄信息可以在公共的開發(fā)倉(cāng)庫(kù)獲得,如CSV,GitHub,對(duì)于公司內(nèi)部項(xiàng)目,開發(fā)人員更改代碼的記錄可以從項(xiàng)目日志中獲得。本文實(shí)驗(yàn)數(shù)據(jù)是從github項(xiàng)目倉(cāng)庫(kù)中獲得,實(shí)驗(yàn)項(xiàng)目的歷史記錄信息為每次代碼變更提交的commit記錄。項(xiàng)目歷史記錄信息包含的內(nèi)容較多,但本次實(shí)驗(yàn)并不需要所有的數(shù)據(jù)信息,因此,根據(jù)本文實(shí)驗(yàn)要求從歷史記錄信息中提取實(shí)驗(yàn)所需代碼變更信息,舉例如圖2所示。

    圖2 代碼變更信息舉例

    代碼變更信息中包含類、配置文件以及網(wǎng)頁的變更信息,基于本文的實(shí)驗(yàn)要求,首先需要對(duì)代碼變更信息進(jìn)行數(shù)據(jù)選取,即保留類的變更信息,清除其它不必要的變更信息,進(jìn)行數(shù)據(jù)選取時(shí),可以依據(jù)提交主題中的關(guān)鍵詞進(jìn)行快速數(shù)據(jù)選??;其次,依據(jù)類名對(duì)代碼變更信息進(jìn)行分類匯總,得到每個(gè)類的代碼變更信息;最后,對(duì)分類信息進(jìn)行統(tǒng)計(jì)整理,記錄每個(gè)類的代碼變更hash值、代碼變更作者、代碼變更時(shí)間、代碼變更行數(shù)以及該類的最終代碼行數(shù),此處以SaveAppointmentsService.java類的變更信息為例,見表2。

    表2 SaveAppointmentsService.java類代碼行變更信息

    3.3 檢測(cè)與計(jì)算結(jié)果

    通過對(duì)HospitalAutomationWithJavaEE項(xiàng)目的49個(gè)類,58次代碼變更記錄信息進(jìn)行異味類檢測(cè)與代碼行變更指數(shù)計(jì)算,檢測(cè)與計(jì)算的結(jié)果見表3,該表采用代碼行變更指數(shù)遞減的順序排列。檢測(cè)階段的結(jié)果表明,在該項(xiàng)目中Duplicate Code異味較為常見,其次為Feature Envy與God Class異味。計(jì)算階段的結(jié)果表明,當(dāng)CLCI值大于0.9時(shí),出現(xiàn)代碼異味的概率較大。

    表3 檢測(cè)與計(jì)算階段結(jié)果

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

    根據(jù)檢測(cè)階段和計(jì)算階段的實(shí)驗(yàn)結(jié)果,逐一回答前文提到的Q1、Q2、Q3問題。

    Q1:為驗(yàn)證使用CLCI的排序方式進(jìn)行重構(gòu),前序異味類重構(gòu)之后能否使后續(xù)需要重構(gòu)的異味類數(shù)量減少,本文采用JDeodorant工具對(duì)異味類按照代碼行變更指數(shù)降序排序的順序?qū)Ξ愇额愡M(jìn)行重構(gòu),并在一個(gè)異味類重構(gòu)之后觀測(cè)后續(xù)異味類的數(shù)量是否減少。通過實(shí)驗(yàn)觀測(cè)發(fā)現(xiàn),Service/AvailableAppointmentsService.java與Service/DoctorService.java均為Duplicate Code異味,它們的代碼行變更指數(shù)分別0.7311和0.7714,根據(jù)上述重構(gòu)規(guī)則需要優(yōu)先對(duì)Service/DoctorService.java異味類進(jìn)行重構(gòu),但是在重構(gòu)過程中發(fā)現(xiàn)這兩個(gè)異味類具有相同的代碼片段,兩個(gè)異味類的相同代碼片段如圖3所示。使用重構(gòu)工具JDeodorant提取重復(fù)代碼片段定義為新的類KlinikerEqualClinic.java,則在service/DoctorService.java異味類被檢測(cè)出來后,使用JDeodorant插件按照開發(fā)人員選擇的重構(gòu)建議進(jìn)行重構(gòu)之后,service/AvailableAppointmentsService.java類的異味隨之自動(dòng)解決;此外,對(duì)Controller/GetDoctors.java進(jìn)行God Class重構(gòu)后,Controller/GetHospital.java類的異味也自動(dòng)消失。研究結(jié)果表明異味類之間具有相關(guān)性,一個(gè)異味類重構(gòu)以后會(huì)使后續(xù)需要重構(gòu)的異味類數(shù)量減少,從而減少重構(gòu)成本。

    圖3 異味類重復(fù)代碼片段

    Q2:為驗(yàn)證使用CLCI的排序方式進(jìn)行重構(gòu),重構(gòu)后總體異味類剩余數(shù)量是否減少,本文采用對(duì)照實(shí)驗(yàn),把項(xiàng)目復(fù)制成內(nèi)容相同的兩份,實(shí)驗(yàn)組采用優(yōu)先對(duì)代碼行變更指數(shù)較大的異味類進(jìn)行重構(gòu);對(duì)照組采用隨機(jī)方式對(duì)異味類進(jìn)行重構(gòu)。為了判斷重構(gòu)后異味類的剩余情況,本文采用異味剩余率(CML,即“code smell left %”)作為評(píng)價(jià)指標(biāo),異味剩余率為重構(gòu)后的異味類剩余數(shù)量占總異味類數(shù)量的比例,其公式如下所示

    (3)

    異味剩余率(CML)值越小則表示使用該代碼異味排序方式重構(gòu)后的異味數(shù)量越少,即該代碼異味排序方式更優(yōu)。本文使用JDeodorant工具,并分別采用兩種不同的排序方式來對(duì)相同項(xiàng)目的代碼異味進(jìn)行重構(gòu),重構(gòu)剩余率對(duì)比如圖4所示,從圖4可以看出當(dāng)對(duì)前10個(gè)異味類采用本文的排序方式進(jìn)行重構(gòu)后的異味類剩余數(shù)量?jī)H占總異味類數(shù)量的25%,則使用隨機(jī)排序方式進(jìn)行重構(gòu)后的剩余異味類數(shù)量占總異味類數(shù)量的50%;使用本文的排序方式,代碼異味的剩余率減少速度比隨機(jī)排序方式快,說明采用本文的排序方式可以使重構(gòu)后的總體異味類剩余數(shù)量減少,從而減少重構(gòu)成本。

    圖4 CLCI與隨機(jī)排序重構(gòu)后異味剩余率對(duì)比

    Q3:為驗(yàn)證使用CLCI的排序方式進(jìn)行重構(gòu),比基于類間耦合性[11]進(jìn)行排序,異味剩余率是否減少更快。本文采用Q2的對(duì)照實(shí)驗(yàn),實(shí)驗(yàn)組為基于代碼行變更指數(shù)的異味類排序方式,對(duì)照組為基于類間耦合性的異味類排序方式,并采用異味剩余率來對(duì)其結(jié)果進(jìn)行比較。其中,基于類間耦合性的異味類排序方式的計(jì)算公式如下

    (4)

    具體計(jì)算公式,可以參考文獻(xiàn)[11]。在整個(gè)實(shí)驗(yàn)過程中,分別記錄對(duì)照組采用基于類間耦合性排序方式進(jìn)行重構(gòu),重構(gòu)后的前10個(gè)異味類的異味剩余率變化過程和實(shí)驗(yàn)組采用基于代碼行變更指數(shù)排序方式進(jìn)行重構(gòu),重構(gòu)后的前10個(gè)異味類的異味剩余率變化過程,見表4。

    表4 類間耦合與CLCI排序重構(gòu)后剩余率

    從表4可以看出,當(dāng)CLCI指數(shù)較大的7個(gè)異味類被重構(gòu)之后,異味剩余率下降開始減緩,此時(shí),該CLCI值開始小于0.9。而基于耦合性的排序方式在整個(gè)重構(gòu)過程中,異味剩余率下降較為平穩(wěn),但整體效果比起CLCI值下降更少,如圖5所示。

    圖5 CLCI與耦合性排序重構(gòu)后的異味剩余率

    4 結(jié)束語

    本文依據(jù)代碼變更規(guī)模與軟件發(fā)生錯(cuò)誤的概率存在正相關(guān)關(guān)系,定義代碼行變更指數(shù)來描述軟件開發(fā)過程中,代碼發(fā)生變更時(shí)代碼行的動(dòng)態(tài)變化,并以此來對(duì)異味類進(jìn)行排序,實(shí)驗(yàn)結(jié)果表明,使用代碼行變更指數(shù)來對(duì)異味類進(jìn)行排序可以使后續(xù)的重構(gòu)更容易,從而提高重構(gòu)的效率。在未來的工作中,將會(huì)在以下幾個(gè)方面展開:

    (1)持續(xù)研究代碼變更中其它因素,如代碼變更的原因以及發(fā)生變更的代碼重要程度對(duì)于異味排序的作用。

    (2)通過研究異味類之間的相關(guān)關(guān)系,改進(jìn)基于代碼行變更指數(shù)的異味類排序方法。

    猜你喜歡
    開發(fā)人員異味代碼
    Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
    基于4G技術(shù)的VOCs及異味檢測(cè)系統(tǒng)
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    用這些告別異味吧!夏天就要清清爽爽過!
    PIC-408系列采用育種技術(shù)控制公豬異味
    讓W(xué)indows 10進(jìn)入開發(fā)者模式
    電腦迷(2015年12期)2015-04-29 23:22:51
    后悔了?教你隱藏開發(fā)人員選項(xiàng)
    電腦愛好者(2015年6期)2015-04-03 01:20:56
    91午夜精品亚洲一区二区三区| 麻豆乱淫一区二区| 女人久久www免费人成看片| 美女主播在线视频| 免费黄网站久久成人精品| 中文字幕最新亚洲高清| 久久久a久久爽久久v久久| 亚洲av电影在线观看一区二区三区| 国产成人精品无人区| 亚洲,欧美精品.| 久久久久久久大尺度免费视频| 久久99热这里只频精品6学生| 国产黄色免费在线视频| 肉色欧美久久久久久久蜜桃| 亚洲国产欧美日韩在线播放| 日日撸夜夜添| 国产又爽黄色视频| 亚洲欧美精品综合一区二区三区 | 哪个播放器可以免费观看大片| 看十八女毛片水多多多| 久久久a久久爽久久v久久| 亚洲成av片中文字幕在线观看 | 下体分泌物呈黄色| 精品久久久久久电影网| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 久久热在线av| 18禁裸乳无遮挡动漫免费视频| 亚洲av.av天堂| 汤姆久久久久久久影院中文字幕| 国产精品不卡视频一区二区| 久久精品国产a三级三级三级| 好男人视频免费观看在线| 啦啦啦在线观看免费高清www| 亚洲经典国产精华液单| 久久精品国产a三级三级三级| 亚洲欧洲日产国产| www.av在线官网国产| 久久精品国产亚洲av天美| 免费观看性生交大片5| 男人操女人黄网站| 国产老妇伦熟女老妇高清| 国产精品亚洲av一区麻豆 | 亚洲五月色婷婷综合| 一本色道久久久久久精品综合| 肉色欧美久久久久久久蜜桃| 亚洲三级黄色毛片| 亚洲精品第二区| 久久热在线av| 亚洲国产欧美在线一区| 麻豆av在线久日| 精品视频人人做人人爽| 麻豆精品久久久久久蜜桃| 国产免费视频播放在线视频| 婷婷色综合大香蕉| 亚洲欧美精品自产自拍| 精品亚洲乱码少妇综合久久| av网站免费在线观看视频| 日韩制服丝袜自拍偷拍| 在现免费观看毛片| 亚洲,一卡二卡三卡| 人人澡人人妻人| 自拍欧美九色日韩亚洲蝌蚪91| 大香蕉久久成人网| 亚洲av日韩在线播放| 国产精品香港三级国产av潘金莲 | 午夜免费男女啪啪视频观看| 999精品在线视频| 一级毛片电影观看| 亚洲精品自拍成人| 成年女人在线观看亚洲视频| 久久久久久人人人人人| 丝袜脚勾引网站| a级毛片黄视频| 日韩 亚洲 欧美在线| 三级国产精品片| 国产日韩欧美在线精品| 亚洲中文av在线| 婷婷色麻豆天堂久久| 欧美bdsm另类| 大码成人一级视频| 免费在线观看黄色视频的| 国产精品秋霞免费鲁丝片| 亚洲美女视频黄频| 多毛熟女@视频| 久久精品国产综合久久久| 成人二区视频| 巨乳人妻的诱惑在线观看| 久久精品人人爽人人爽视色| 视频在线观看一区二区三区| 亚洲精品乱久久久久久| 如日韩欧美国产精品一区二区三区| 制服诱惑二区| 色婷婷av一区二区三区视频| 精品一区二区三区四区五区乱码 | 大码成人一级视频| 国产有黄有色有爽视频| 亚洲精品美女久久久久99蜜臀 | 香蕉国产在线看| 美女脱内裤让男人舔精品视频| 精品国产超薄肉色丝袜足j| 亚洲精品av麻豆狂野| 少妇被粗大猛烈的视频| 五月开心婷婷网| 亚洲男人天堂网一区| 少妇熟女欧美另类| 久久久久精品性色| 亚洲av电影在线观看一区二区三区| 日日撸夜夜添| 国产黄色免费在线视频| a级片在线免费高清观看视频| 国产精品久久久久久精品电影小说| 日韩一卡2卡3卡4卡2021年| 国产av精品麻豆| 精品一区二区三卡| av线在线观看网站| 青春草国产在线视频| 日日摸夜夜添夜夜爱| 国产亚洲午夜精品一区二区久久| 一级,二级,三级黄色视频| 91午夜精品亚洲一区二区三区| 成人国产av品久久久| 国产精品久久久久久精品电影小说| 亚洲综合精品二区| 亚洲欧美一区二区三区国产| 老司机亚洲免费影院| av国产久精品久网站免费入址| 国产精品久久久久久av不卡| 老司机影院成人| 一区二区三区乱码不卡18| 水蜜桃什么品种好| 一区二区三区激情视频| 亚洲av综合色区一区| 韩国精品一区二区三区| 精品人妻一区二区三区麻豆| 亚洲精品一区蜜桃| 一个人免费看片子| 一级爰片在线观看| 国产又爽黄色视频| 美女午夜性视频免费| 亚洲精品久久成人aⅴ小说| 赤兔流量卡办理| 赤兔流量卡办理| 熟女av电影| 久久久久精品人妻al黑| 中文字幕另类日韩欧美亚洲嫩草| 亚洲成人av在线免费| 亚洲精品日韩在线中文字幕| 欧美日韩成人在线一区二区| 午夜av观看不卡| 少妇人妻久久综合中文| 国产极品粉嫩免费观看在线| 国产黄频视频在线观看| 免费女性裸体啪啪无遮挡网站| 国产男女超爽视频在线观看| 国产又色又爽无遮挡免| 久久精品熟女亚洲av麻豆精品| 蜜桃在线观看..| 国产色婷婷99| 精品人妻熟女毛片av久久网站| 国产又色又爽无遮挡免| 久久婷婷青草| 另类亚洲欧美激情| 日韩一区二区视频免费看| 老女人水多毛片| 久久人人爽人人片av| 九色亚洲精品在线播放| 在线观看免费高清a一片| 搡老乐熟女国产| 国产精品三级大全| 免费观看性生交大片5| 国产精品熟女久久久久浪| 国产精品久久久久成人av| 中文字幕av电影在线播放| 国产精品久久久久久av不卡| av国产精品久久久久影院| xxxhd国产人妻xxx| 在线观看国产h片| 中文字幕人妻熟女乱码| 国产女主播在线喷水免费视频网站| 最近中文字幕2019免费版| 精品一品国产午夜福利视频| 国产又爽黄色视频| av在线app专区| 免费黄网站久久成人精品| 美女视频免费永久观看网站| 国产成人欧美| 国产爽快片一区二区三区| 黄网站色视频无遮挡免费观看| 免费在线观看视频国产中文字幕亚洲 | 青春草国产在线视频| 美国免费a级毛片| 免费日韩欧美在线观看| 美女xxoo啪啪120秒动态图| 天堂8中文在线网| 免费观看a级毛片全部| 亚洲一区二区三区欧美精品| 永久免费av网站大全| 狠狠婷婷综合久久久久久88av| 国产精品二区激情视频| 国产免费又黄又爽又色| 久久精品国产鲁丝片午夜精品| 午夜福利视频在线观看免费| 精品99又大又爽又粗少妇毛片| 亚洲精品国产av蜜桃| 黄色怎么调成土黄色| 亚洲av男天堂| 桃花免费在线播放| 日韩av不卡免费在线播放| 美女高潮到喷水免费观看| 亚洲国产日韩一区二区| 黄色配什么色好看| 夫妻性生交免费视频一级片| 成人国语在线视频| 日本午夜av视频| 黄色配什么色好看| 精品亚洲乱码少妇综合久久| 青春草国产在线视频| 国产片特级美女逼逼视频| 五月天丁香电影| 天美传媒精品一区二区| 国产成人av激情在线播放| 看免费av毛片| 观看美女的网站| 国语对白做爰xxxⅹ性视频网站| 成人18禁高潮啪啪吃奶动态图| 国产综合精华液| 欧美成人午夜精品| 亚洲美女搞黄在线观看| 精品人妻一区二区三区麻豆| 亚洲第一av免费看| 久久久国产欧美日韩av| 久久国产精品男人的天堂亚洲| 成人午夜精彩视频在线观看| 精品少妇黑人巨大在线播放| 亚洲一码二码三码区别大吗| 成人毛片a级毛片在线播放| 精品国产乱码久久久久久男人| 亚洲第一青青草原| 国产又色又爽无遮挡免| 国产白丝娇喘喷水9色精品| 国产av精品麻豆| 成年美女黄网站色视频大全免费| 天堂中文最新版在线下载| 国产成人精品无人区| 波多野结衣一区麻豆| 最新的欧美精品一区二区| av在线观看视频网站免费| 制服诱惑二区| 国产一区二区三区av在线| 国产福利在线免费观看视频| 欧美亚洲 丝袜 人妻 在线| av福利片在线| 成人影院久久| 丰满饥渴人妻一区二区三| 亚洲第一青青草原| 这个男人来自地球电影免费观看 | 在线天堂中文资源库| 国产成人精品久久久久久| 人成视频在线观看免费观看| 久久精品亚洲av国产电影网| 精品午夜福利在线看| 国产男人的电影天堂91| 青青草视频在线视频观看| 最近中文字幕高清免费大全6| 久久精品夜色国产| av在线老鸭窝| 夫妻性生交免费视频一级片| 久久精品亚洲av国产电影网| √禁漫天堂资源中文www| 王馨瑶露胸无遮挡在线观看| 热re99久久精品国产66热6| 国产午夜精品一二区理论片| 国产精品.久久久| 免费观看av网站的网址| 日韩中字成人| 男女国产视频网站| 亚洲国产色片| 国产亚洲av片在线观看秒播厂| 在线观看免费视频网站a站| 黄色配什么色好看| 国产黄频视频在线观看| 男女高潮啪啪啪动态图| a级毛片黄视频| 天天躁夜夜躁狠狠躁躁| 欧美变态另类bdsm刘玥| 蜜桃在线观看..| 欧美老熟妇乱子伦牲交| 国产福利在线免费观看视频| 少妇人妻 视频| 日本爱情动作片www.在线观看| 五月天丁香电影| 亚洲少妇的诱惑av| 欧美最新免费一区二区三区| 狠狠婷婷综合久久久久久88av| 成人免费观看视频高清| 亚洲欧美精品自产自拍| 亚洲美女黄色视频免费看| 精品午夜福利在线看| 色播在线永久视频| 亚洲欧美日韩另类电影网站| 欧美亚洲日本最大视频资源| 国产淫语在线视频| av有码第一页| 最近最新中文字幕大全免费视频 | √禁漫天堂资源中文www| 国产高清国产精品国产三级| 91精品国产国语对白视频| 三级国产精品片| 人妻 亚洲 视频| 国产白丝娇喘喷水9色精品| 亚洲激情五月婷婷啪啪| 亚洲精品久久久久久婷婷小说| 国产欧美日韩综合在线一区二区| 精品一区在线观看国产| av国产久精品久网站免费入址| 狂野欧美激情性bbbbbb| 777久久人妻少妇嫩草av网站| 在线观看一区二区三区激情| 99re6热这里在线精品视频| 免费观看无遮挡的男女| 精品国产超薄肉色丝袜足j| 久久国产精品男人的天堂亚洲| 国产女主播在线喷水免费视频网站| 菩萨蛮人人尽说江南好唐韦庄| 我的亚洲天堂| 丝袜脚勾引网站| 自线自在国产av| 免费在线观看完整版高清| 男女免费视频国产| 一级片免费观看大全| 黄片无遮挡物在线观看| 99久久中文字幕三级久久日本| 一二三四中文在线观看免费高清| 97精品久久久久久久久久精品| 久久婷婷青草| 国产成人精品久久久久久| 精品一区在线观看国产| 男人爽女人下面视频在线观看| 亚洲精品一区蜜桃| www.av在线官网国产| 在线观看免费日韩欧美大片| 国产亚洲午夜精品一区二区久久| 少妇熟女欧美另类| 久热这里只有精品99| 久久免费观看电影| 久久久精品94久久精品| 国产精品久久久久成人av| 国产深夜福利视频在线观看| 成人免费观看视频高清| 成人手机av| 王馨瑶露胸无遮挡在线观看| 欧美日韩亚洲高清精品| 精品国产一区二区三区四区第35| 天堂中文最新版在线下载| 看非洲黑人一级黄片| 搡老乐熟女国产| 最近的中文字幕免费完整| 少妇被粗大的猛进出69影院| 一级,二级,三级黄色视频| 免费av中文字幕在线| 在线免费观看不下载黄p国产| 久久鲁丝午夜福利片| 99香蕉大伊视频| 亚洲国产欧美网| 日韩制服丝袜自拍偷拍| 午夜福利网站1000一区二区三区| 日韩一卡2卡3卡4卡2021年| 日本猛色少妇xxxxx猛交久久| 人妻少妇偷人精品九色| 一区二区日韩欧美中文字幕| 久久久亚洲精品成人影院| 久久ye,这里只有精品| 五月天丁香电影| 久久这里有精品视频免费| 色94色欧美一区二区| 亚洲伊人久久精品综合| 午夜91福利影院| 国产xxxxx性猛交| 老鸭窝网址在线观看| 国产日韩一区二区三区精品不卡| 妹子高潮喷水视频| 久久久久精品人妻al黑| 亚洲天堂av无毛| 国产亚洲最大av| 国产乱来视频区| 亚洲精华国产精华液的使用体验| 欧美精品一区二区免费开放| 美女xxoo啪啪120秒动态图| 午夜精品国产一区二区电影| 人人妻人人澡人人爽人人夜夜| 精品一区二区三区四区五区乱码 | 午夜福利视频精品| 97在线人人人人妻| 一级毛片黄色毛片免费观看视频| 亚洲国产欧美在线一区| 久久久久精品性色| h视频一区二区三区| 精品人妻偷拍中文字幕| 精品久久蜜臀av无| 久久久久久免费高清国产稀缺| 少妇被粗大的猛进出69影院| 国产黄色免费在线视频| 成人18禁高潮啪啪吃奶动态图| 啦啦啦啦在线视频资源| 精品亚洲乱码少妇综合久久| 亚洲av中文av极速乱| 国产视频首页在线观看| 国产 精品1| 国产成人精品福利久久| av免费在线看不卡| 国产精品久久久久久精品电影小说| 免费看不卡的av| 国产极品粉嫩免费观看在线| 99九九在线精品视频| 久久国产精品男人的天堂亚洲| 老鸭窝网址在线观看| www.精华液| 蜜桃国产av成人99| 久久国产精品大桥未久av| 国产男女内射视频| 熟妇人妻不卡中文字幕| 国产福利在线免费观看视频| 人人澡人人妻人| 亚洲美女搞黄在线观看| 制服丝袜香蕉在线| av一本久久久久| 97精品久久久久久久久久精品| 中文字幕人妻丝袜一区二区 | a级片在线免费高清观看视频| 91午夜精品亚洲一区二区三区| 成人影院久久| 丝瓜视频免费看黄片| 免费黄频网站在线观看国产| 国产女主播在线喷水免费视频网站| 国产激情久久老熟女| 丰满饥渴人妻一区二区三| 国产高清不卡午夜福利| 国产高清国产精品国产三级| 97在线人人人人妻| 大香蕉久久成人网| 一本久久精品| 国产在线一区二区三区精| 日本-黄色视频高清免费观看| 青青草视频在线视频观看| 亚洲第一av免费看| 亚洲精品视频女| 亚洲成国产人片在线观看| 成年人午夜在线观看视频| 成年女人在线观看亚洲视频| 一级片免费观看大全| 久久国内精品自在自线图片| 国产欧美亚洲国产| 欧美另类一区| www.自偷自拍.com| 电影成人av| 啦啦啦在线免费观看视频4| 成人午夜精彩视频在线观看| 少妇人妻 视频| 亚洲欧美日韩另类电影网站| 欧美激情高清一区二区三区 | 久久久久久久久久久久大奶| 精品卡一卡二卡四卡免费| 青春草视频在线免费观看| 国产精品一国产av| 免费日韩欧美在线观看| 黄色配什么色好看| 伦理电影免费视频| 国产成人欧美| 男女免费视频国产| 亚洲精品av麻豆狂野| 亚洲成av片中文字幕在线观看 | 色视频在线一区二区三区| av在线老鸭窝| 最黄视频免费看| 欧美成人午夜精品| av.在线天堂| 日日摸夜夜添夜夜爱| 久久狼人影院| av免费在线看不卡| 建设人人有责人人尽责人人享有的| 美女脱内裤让男人舔精品视频| 久久热在线av| 亚洲国产看品久久| 久久久久国产一级毛片高清牌| 亚洲国产精品国产精品| 国产极品天堂在线| 97人妻天天添夜夜摸| 色网站视频免费| 免费观看无遮挡的男女| 久久久久精品人妻al黑| 国产激情久久老熟女| 亚洲av电影在线进入| 青青草视频在线视频观看| 国产xxxxx性猛交| 久久久久精品久久久久真实原创| 久久精品夜色国产| 亚洲欧美一区二区三区黑人 | 精品亚洲成a人片在线观看| av福利片在线| 久热久热在线精品观看| 久久久久精品久久久久真实原创| 女人被躁到高潮嗷嗷叫费观| 亚洲一区二区三区欧美精品| av国产久精品久网站免费入址| 欧美激情极品国产一区二区三区| 欧美精品av麻豆av| 久久精品熟女亚洲av麻豆精品| 日本wwww免费看| 韩国av在线不卡| 高清黄色对白视频在线免费看| 啦啦啦在线免费观看视频4| 国产精品国产av在线观看| 亚洲综合色网址| 亚洲美女搞黄在线观看| 亚洲熟女精品中文字幕| 九色亚洲精品在线播放| 狠狠婷婷综合久久久久久88av| 午夜91福利影院| 波野结衣二区三区在线| 丰满迷人的少妇在线观看| 男女无遮挡免费网站观看| 日本wwww免费看| 自线自在国产av| 国产一区二区三区av在线| 一级a爱视频在线免费观看| 国产福利在线免费观看视频| av电影中文网址| 人人妻人人澡人人爽人人夜夜| av在线播放精品| 尾随美女入室| 中文字幕最新亚洲高清| 一级爰片在线观看| 最近最新中文字幕免费大全7| 在线亚洲精品国产二区图片欧美| 久久99蜜桃精品久久| 99热全是精品| 纵有疾风起免费观看全集完整版| 国产免费一区二区三区四区乱码| 欧美人与善性xxx| 国产精品女同一区二区软件| 少妇被粗大的猛进出69影院| 高清av免费在线| 天堂俺去俺来也www色官网| 久久久久久久久久久免费av| 日韩成人av中文字幕在线观看| 欧美变态另类bdsm刘玥| 男女免费视频国产| 色视频在线一区二区三区| 人妻一区二区av| 久久人人爽av亚洲精品天堂| 久久久欧美国产精品| 日韩三级伦理在线观看| 一级爰片在线观看| 亚洲国产欧美在线一区| 国产爽快片一区二区三区| 免费播放大片免费观看视频在线观看| 婷婷色av中文字幕| 如日韩欧美国产精品一区二区三区| 女的被弄到高潮叫床怎么办| 91国产中文字幕| 女人被躁到高潮嗷嗷叫费观| 人人妻人人澡人人看| 久久久国产欧美日韩av| 国产精品免费大片| 尾随美女入室| 在线观看免费高清a一片| 欧美最新免费一区二区三区| 又黄又粗又硬又大视频| 精品国产一区二区三区久久久樱花| videossex国产| 中文字幕另类日韩欧美亚洲嫩草| 9191精品国产免费久久| 一级毛片黄色毛片免费观看视频| 男人爽女人下面视频在线观看| 亚洲激情五月婷婷啪啪| 日韩中文字幕欧美一区二区 | 丝瓜视频免费看黄片| 日韩中文字幕视频在线看片| 国产一区有黄有色的免费视频| 各种免费的搞黄视频| 久久婷婷青草| 精品第一国产精品| videosex国产| 欧美人与性动交α欧美软件| 一级片免费观看大全| 一级a爱视频在线免费观看| 久久99精品国语久久久| 18禁动态无遮挡网站| 国产成人免费观看mmmm| 成年动漫av网址| 黄片播放在线免费| 国产白丝娇喘喷水9色精品| 国产精品熟女久久久久浪| 精品人妻熟女毛片av久久网站| 美女福利国产在线| 国产白丝娇喘喷水9色精品| 99re6热这里在线精品视频| 国产麻豆69| 十八禁高潮呻吟视频| 99久久中文字幕三级久久日本| 波多野结衣av一区二区av| 大码成人一级视频| 精品人妻在线不人妻| 多毛熟女@视频| 80岁老熟妇乱子伦牲交| 国产亚洲最大av| 另类亚洲欧美激情| 中文精品一卡2卡3卡4更新| 久久国产精品男人的天堂亚洲| 有码 亚洲区| 精品人妻在线不人妻| 成人18禁高潮啪啪吃奶动态图| 久久久久国产网址| 美女福利国产在线| 90打野战视频偷拍视频|