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

    一種半監(jiān)督學習的代碼自動生成性能評估方法

    2021-03-22 01:39:08張曉江
    小型微型計算機系統(tǒng) 2021年3期
    關鍵詞:程序員類別代碼

    張曉江,姜 瑛

    (昆明理工大學 云南計算機技術應用重點實驗室, 昆明 650500) (昆明理工大學 信息工程與自動化學院, 昆明 650500)

    1 引 言

    如何有效地提高軟件開發(fā)的效率和質(zhì)量,是軟件工程領域關心的核心問題.一直以來,許多研究者都通過改善軟件開發(fā)方法和運用技術手段來提高軟件開發(fā)的自動化水平.其中,代碼自動生成技術指利用某些技術自動地生成軟件源代碼,達到根據(jù)程序員的需求自動編程的目的.代碼自動生成技術被認為是提高軟件開發(fā)自動化程度和質(zhì)量的重要方法,受到學術界和工業(yè)界的廣泛關注.

    以 GitHub 和 Stack Overflow 為代表的開源網(wǎng)站和開源社區(qū)的發(fā)展,給研究人員提供了大量高質(zhì)量的源代碼.這些代碼中隱含著許多知識,將這些知識用于軟件開發(fā)中,使得大規(guī)模代碼的學習成為可能.通過使計算機理解源代碼中的語義信息和結(jié)構(gòu)信息,并借助計算能力的增長和深度神經(jīng)網(wǎng)絡,代碼補全、基于功能描述的代碼自動生成、基于輸入輸出的代碼自動生成等成為當前的研究熱點[1].

    目前,代碼自動生成技術的部分研究已應用到實際開發(fā)中,依據(jù)某種代碼生成方法實現(xiàn)的代碼自動生成工具通常以插件的形式嵌入到集成開發(fā)環(huán)境中.例如,IntelliJ IDEA、Eclipse、PyCharm等集成開發(fā)環(huán)境都支持嵌入的代碼自動生成插件,以幫助程序員提高開發(fā)效率.在應用代碼自動生成工具編程的過程中,需要程序員和代碼自動生成工具相互配合來完成編碼工作.代碼自動生成工具根據(jù)程序員的輸入及當前代碼語義環(huán)境生成代碼,生成的代碼出現(xiàn)在IDE(Integrated Development Environment)的代碼推薦框中,程序員根據(jù)需要在代碼推薦框中進行代碼選擇.此外,程序員也可能對選擇的生成代碼進行修改、刪除等操作.

    代碼自動生成技術的目的是為了提高軟件的開發(fā)效率.而在代碼自動生成過程中,程序員的開發(fā)效率很大程度上是由代碼自動生成的性能來決定的.代碼自動生成的性能指代碼自動生成過程中所占用的時間空間以及代碼自動生成的規(guī)模和效率.通過對代碼自動生成的性能評估,可以對比不同模型生成代碼的質(zhì)量,分析影響生成代碼性能的因素.目前代碼自動生成的相關研究越來越多,但是很多研究者只是針對代碼生成模型進行不斷改進,忽略了代碼自動生成過程中由程序員和代碼自動生成工具相互作用而產(chǎn)生的性能問題.實際上,代碼自動生成的性能取決于代碼自動生成工具以及程序員的行為.

    本文通過分析程序員行為與代碼自動生成工具行為的交互特征,結(jié)合半監(jiān)督學習方法與深度神經(jīng)網(wǎng)絡提出了一種代碼自動生成性能評估方法,并且分析了代碼自動生成過程中性能類別與程序員行為以及代碼自動生成工具行為之間的關系.

    2 相關工作

    在現(xiàn)有研究中,用來評估代碼自動生成性能的指標主要包括Precision(精確率)、Recall(召回率)、MRR(Mean Reciprocal Rank)、F-Measure[2].如果代碼自動生成工具推薦的是排序后的K個結(jié)果,可以使用Top-K的Precision、Recall、MRR、F-Measure對代碼自動生成性能進行評估.

    1)Precision:又稱查準率,指代碼自動生成工具正確推薦的代碼數(shù)目占代碼自動生成工具推薦代碼總數(shù)的比例,計算如公式(1)所示:

    (1)

    式(1)中,Actual_code(i)代表第i次程序員真實需要的推薦代碼,Recom_code(i)代表第i次代碼自動生成工具推薦的代碼.

    2)Recall:又稱查全率,定義為代碼自動生成工具正確推薦代碼數(shù)目與程序員真實需要的推薦代碼總數(shù)之間的比例.

    (2)

    式(2)中的各變量含義同式(1).

    3)MRR:體現(xiàn)代碼自動生成工具推薦代碼結(jié)果的優(yōu)劣情況,靠前的結(jié)果較優(yōu),評分越高.第1個推薦代碼成功推薦,則分數(shù)為1;第2個推薦代碼成功推薦則分數(shù)為0.5;第n個推薦成功分數(shù)為1/n;若沒有推薦成功分數(shù)為0.計算如公式(3)所示:

    (3)

    式(3)中,K為代碼自動生成次數(shù),rank(i)為第i次正確推薦代碼所在推薦列表中的位置.

    4)F-Measure:是Precision和Recall的加權調(diào)和平均.

    (4)

    在代碼自動生成性能評估中,通常將Precision和Recall視為同等重要,所以將式(4)中的β設為1,就是最常見的F1-Measure.

    在基于機器學習的代碼自動生成的研究過程中,Hindle A等人[3]將傳統(tǒng)的N-Gram模型應用到代碼自動生成的研究中,使用語言模型N-Gram進行代碼預測,實驗通過MRR評估代碼自動生成的性能,MRR評估指標為51.88%.Hellendoorn VJ等人[4]在語言模型的基礎上加入“緩存”機制來維護程序的局部信息,通過對比循環(huán)神經(jīng)網(wǎng)絡與帶有“緩存”機制的N-Gram,發(fā)現(xiàn)代碼的局部性特征對于token的預測有極大的幫助,使用循環(huán)神經(jīng)網(wǎng)絡進行代碼預測時MRR評估指標為67.5%,而帶有“緩存”機制的N-Gram模型MRR評估指標為69.3%.

    Nguyen TT等人[5]引入了一種統(tǒng)計語言模型SLAMC(A Novel Statistical Semantic Language Model For Source Code),在語言模型的基礎上加入“緩存”機制來維護程序的局部信息.實驗結(jié)果表明,加入“緩存”機制的模型捕獲了源代碼中的局部規(guī)律,實驗使用Top-K的Precision對模型生成代碼準確性進行評估,Precision在Top-1中達到64.00%、Top-5達到78.20%.Raychev V等人[6]使用N-gram模型與循環(huán)神經(jīng)網(wǎng)絡結(jié)合,在JavaAPI調(diào)用級別進行代碼補全,利用N-Gram模型對程序中的API 調(diào)用序列建模,從而對API的調(diào)用序列進行預測.該研究通過分析Top-K個推薦代碼的Precision來評估模型的效果.Tu Z等人[7]同樣針對N-Gram模型忽略的程序局部特征,在語言模型中加入了緩存機制,其附加的緩存組件通過捕獲軟件的局部性,從而改進了N-Gram方法,其中MRR評估指標為54.44%,Top-1中Precision為52.04%,Top-5中Precision為57.45%.Raychev V 等人[8]基于循環(huán)神經(jīng)網(wǎng)絡,將程序代碼的抽象語法樹的序列化結(jié)果作為訓練數(shù)據(jù)集,并將網(wǎng)絡輸出結(jié)果區(qū)分為終結(jié)符的預測和非終結(jié)符的預測,該方法在一定程度上運用了存在于抽象語法樹中的結(jié)構(gòu)化信息,進一步提升了與生成代碼相關的非終結(jié)符預測的準確性,該研究使用Top-K個推薦代碼的Precision來對模型生成代碼性能進行評估.

    Allamanis M等人[9]提出了專門為方法命名問題設計的神經(jīng)概率語言模型的源代碼,該模型通過在一個高維連續(xù)空間中將名稱分配到稱為嵌入的位置,以一種具有相似嵌入的名稱傾向于在相似的上下文中使用的方式來了解哪些名稱在語義上是相似的,并通過F1-Measure評估模型的性能.之后,Allamanis M等人[10]基于圖網(wǎng)絡學習代碼中的結(jié)構(gòu)以及語義特征,利用圖模型中的不同邊表示代碼token之間的結(jié)構(gòu)和語法關系,實驗中F1-Measure評估指標為44.0%.

    在當前代碼自動生成的相關研究中,缺乏針對代碼自動生成性能的統(tǒng)一評估方法.部分研究用Precision、Recall、MRR、F-Measure作為評估代碼自動生成性能的指標,但這些指標僅基于代碼自動生成個數(shù)以及生成代碼的正確性來進行計算.在實際開發(fā)中,代碼自動生成的效果不僅僅由代碼自動生成工具決定,程序員的行為在其中也起到了較大的作用.現(xiàn)有評估方法忽略了程序員行為在代碼自動生成過程中的重要性,只是針對代碼自動生成結(jié)果進行了評估.此外,由于大部分研究采用不同的評估指標,且各指標之間無法直接轉(zhuǎn)化,難以對各種代碼自動生成模型和方法進行對比.因此,針對代碼自動生成過程進行性能評估是亟待解決的問題.

    本文綜合程序員以及代碼自動生成工具在代碼自動生成過程中的作用,提出了一種基于半監(jiān)督學習的代碼自動生成性能評估方法.通過采集程序員行為與代碼自動生成工具行為的相關數(shù)據(jù)來抽取代碼自動生成過程中影響性能的特征,利用半監(jiān)督學習對代碼自動生成過程中的相關特征數(shù)據(jù)進行聚類分析從而確定性能類別;根據(jù)與性能相關的特征數(shù)據(jù)以及對應的性能類別來訓練代碼自動生成性能評估模型,從而分析代碼自動生成性能、程序員行為與代碼自動生成工具行為在代碼自動生成過程中對性能的影響程度.

    3 針對程序員行為與代碼自動生成工具行為相關數(shù)據(jù)的重要特征提取

    代碼自動生成的性能包括程序員編程的性能和代碼自動生成工具的性能,因此影響代碼自動生成過程性能的數(shù)據(jù)主要包括程序員行為數(shù)據(jù)和代碼自動生成工具行為數(shù)據(jù).

    3.1 與性能相關的基本特征

    在代碼自動生成過程中,有時代碼自動生成工具生成了符合邏輯的代碼,但并不符合程序員的預期,那么這段代碼在實際使用中也是性能較差的.因此,與性能相關的基本特征由程序員行為和代碼自動生成工具行為共同決定.若能抽取所有與性能相關的特征,則可以分析出代碼自動生成過程中的所有性能問題.但是,考慮到性能數(shù)據(jù)收集過程中產(chǎn)生的程序擾動以及軟硬件開銷,本文主要關注與性能相關的基本特征.

    代碼自動生成工具會根據(jù)程序員的輸入代碼自動生成代碼,而程序員的輸入代碼決定著代碼自動生成工具生成代碼的內(nèi)容.程序員輸入代碼的長短可能會導致生成不同的代碼,而程序員錯誤的輸入甚至會導致代碼自動生成工具生成不相關的代碼.所以程序員的輸入在很大程度上影響著代碼自動生成工具的性能.

    代碼自動生成工具為程序員更高效的完成編碼工作提供了輔助,程序員選中的生成代碼代表著實際開發(fā)中需要的代碼,同時也反映了代碼自動生成工具生成代碼的正確性.此外,程序員選擇生成代碼過程中的按鍵次數(shù)可以反映出程序員需要的代碼在代碼推薦列表中的位置以及代碼自動生成工具生成代碼的準確率.程序員在選擇生成代碼之后發(fā)生的刪除或糾正代碼行為表示程序員雖然選擇了生成代碼,但生成代碼需要經(jīng)過修改才能達到程序員的期望.

    程序員當前已經(jīng)編寫好的代碼可視為代碼上下文,代碼自動生成工具會根據(jù)代碼上下文進行代碼自動生成.因此,代碼上下文的復雜度以及代碼上下文的語義環(huán)境決定了代碼自動生成的內(nèi)容,清晰的代碼上下文結(jié)構(gòu)更有助于生成高質(zhì)量的代碼.在代碼自動生成工具每次向程序員推薦的代碼中,程序員是否選擇生成代碼決定了生成代碼是否成功推薦.現(xiàn)有工具在提供代碼生成功能時,通常將生成的代碼添加到IDE的代碼推薦框中,然后程序員根據(jù)自己的實際需要選擇相應的生成代碼.因此,自動生成的代碼在代碼推薦列表中的位置及生成時間尤為重要,它將直接影響程序員的按鍵次數(shù)以及等待時間,從而進一步影響開發(fā)效率.由于編寫代碼具有很大的靈活性,因而代碼自動生成工具生成代碼的數(shù)量可以為程序員提供多種解決方案.

    表1 代碼自動生成性能基本特征Table 1 Basic characteristics of automatic code generation performance

    綜上所述,本文定義了程序員行為、代碼自動生成工具行為與代碼自動生成性能相關的基本特征,如表1所示.

    3.2 與性能相關的復雜特征分析及處理

    除了3.1中提出的與性能相關的基本特征,由于代碼中存在大量程序員自定義的修飾符,導致代碼自動生成工具推薦的代碼在語義上符合程序員的需要,但是實際代碼并不一定完全與程序員需要的代碼相同.所以,程序員的刪除行為或生成代碼是否被程序員選擇等信息并不能完全衡量代碼自動生成過程的性能.因此,將程序員選擇代碼與生成代碼之間的語義相似度作為一個與性能相關的重要特征.

    為了得到選擇代碼與生成代碼之間的語義相似度,本文用Word2Vec[11]對代碼token進行向量化表示.Word2Vec在一個連續(xù)空間中為每個詞語產(chǎn)生一個對應的分布式向量,可計算詞語之間的相似度.本文應用Word2Vec的這一特性來評估代碼自動生成工具生成的代碼與程序員所需代碼之間的相似性.Word2Vec主要包括CBOW(Continuous Bag-of-Words Model)[12]和Skip-Gram[13]兩種模式,其中CBOW是從原始語句推測目標詞,Skip-Gram是從目標詞推測出原始語句,實踐表明CBOW對小型語料效果較好,而Skip-Gram在大型語料庫中表現(xiàn)更加出色.因此本文使用Skip-Gram模型為代碼訓練一種分布式的向量表示.

    訓練詞向量之前需要大量分詞后的優(yōu)質(zhì)代碼語料.在構(gòu)建代碼語料的過程中,由于代碼文件通常包含大量的自然語言注釋,將影響詞向量以及代碼分詞的效果.本文使用抽象語法樹(Abstract Syntax Tree,AST)對代碼進行解析并進行數(shù)據(jù)清洗,校驗代碼語料語法是否規(guī)范,并利用AST構(gòu)建代碼詞典.

    3.2.1 數(shù)據(jù)清洗

    為了避免代碼語料中存在的自然語言注釋以及語法不規(guī)范等問題對詞向量的構(gòu)建產(chǎn)生影響,我們使用AST對代碼語料進行解析,通過AST結(jié)構(gòu)的完整性來檢查代碼語法是否規(guī)范.首先將待解析代碼初始化為code,將code通過AST解析為T,通過檢查T來判斷code語法是否規(guī)范,若不規(guī)范對code進行刪除,否則通過遍歷T中節(jié)點,刪除T中注釋節(jié)點,對T進行AST反向解析,將T輸出為Tcode,Tcode即為干凈數(shù)據(jù).

    3.2.2 建立代碼詞典/分詞

    在建立代碼詞典過程中,首先初始化代碼詞典為L,將Tcode通過AST解析為T,遍歷T中所有節(jié)點,將所有葉子節(jié)點內(nèi)容添加到L,通過集合對L進行去重.去重后的L即為代碼詞典,通過L使用正向最大長度匹配對Tcode進行分詞.建立代碼詞典/分詞算法如表2所示.

    表2 建立代碼詞典/分詞算法Table 2 Building code dictionary/word segmentation algorithm

    3.2.3 計算生成代碼相似度

    使用分詞后的代碼語料通過Skip-Gram模型訓練詞向量.由于相似代碼具有相似的向量表示,本文通過計算生成代碼與程序員預期代碼之間的余弦相似度得到選擇代碼與生成代碼之間的語義相似度,使用公式(5)計算生成代碼相似度.

    (5)

    其中A表示程序員預期代碼token,Ak表示tokenA的第k維向量;B表示代碼自動生成工具生成代碼token,Bi為生成的第i個代碼,Bik表示tokenBi的第k維向量.通過計算B中生成代碼Bi與程序員期望代碼A的相似度,可以得到選擇代碼與生成代碼之間的語義相似度,即生成代碼相似度.

    4 確定性能類別

    抽取性能特征有助于確定性能類別.基于3.1中的代碼自動生成性能基本特征及3.2中生成代碼與選擇代碼的語義相似度,可以綜合考慮程序員行為和代碼自動生成工具行為后對性能類別進行劃分.如果可以對性能數(shù)據(jù)進行分類,就能進一步分析性能特征對性能的影響程度.K-means是一種常用的對數(shù)據(jù)進行無監(jiān)督聚類的方法[14],但K-means算法在對性能數(shù)據(jù)進行分類時,可能將一些性能數(shù)據(jù)明顯較差的數(shù)據(jù)混合到其余類別中.

    我們在觀察采集到的性能數(shù)據(jù)時,發(fā)現(xiàn)偶爾出現(xiàn)部分特征項為0的數(shù)據(jù),而這部分數(shù)據(jù)大多分布在代碼自動生成工具推薦代碼個數(shù)、程序員選擇的生成代碼、程序員選擇生成代碼的按鍵次數(shù)、生成代碼語義相似度等特征中.這些數(shù)據(jù)明顯屬于性能較差的類別.為了避免在分類過程中將性能特征數(shù)據(jù)中的程序員行為和代碼自動生成工具行為混淆,或?qū)⒛骋环N特征弱化,借鑒文獻[15]中基于背景知識分類的方法,本文將半監(jiān)督算法與代碼自動生成過程中程序員和代碼自動生成工具間的關系相結(jié)合,定義相應的約束條件對性能數(shù)據(jù)進行分類.

    4.1 約束

    在K-means的背景下,實例約束可以表示哪些實例應該組合或不應該組合在一起的背景知識.因此,本文考慮兩種成對的約束關系,即正關聯(lián)約束和負關聯(lián)約束.

    1)正關聯(lián)(Must-link)約束指定兩個實例必須位于同一個類別中.

    2)負關聯(lián)(Cannot-link)約束指定兩個實例不可能位于同一個類別中.

    針對性能體現(xiàn)明顯較差的數(shù)據(jù),通過定義正關聯(lián)約束,指定該類數(shù)據(jù)在聚類過程中強制分配到低性能類別中.反之針對性能體現(xiàn)明顯較高的數(shù)據(jù),則定義為負關聯(lián)約束,指定該類數(shù)據(jù)不與低性能數(shù)據(jù)劃分到同一類別中.

    4.2 帶約束的K-means聚類算法

    為了確定性能數(shù)據(jù)的類別,本文通過一組正負關聯(lián)約束結(jié)合K-means的聚類原則對性能數(shù)據(jù)進行半監(jiān)督聚類.首先將性能數(shù)據(jù)初始化為D,定義一對正關聯(lián)約束(Con=)和負關聯(lián)約束(Con≠),根據(jù)K-means的聚類原則,首先隨機初始化類別中心C,針對D中的性能數(shù)據(jù)di在滿足約束關系的前提下將其就近分配到Cj.以di到Cj的平均距離對Cj進行更新,并對D中的性能數(shù)據(jù)di在不違反約束關系的前提下就近分配類別,直到Cj不再發(fā)生變化,通過評估聚類效果來確定最佳k值.帶約束的K-means聚類算法如表3所示.

    表3 帶約束的K-means聚類算法Table 3 Constrained K-means clustering algorithm

    4.3 評 估

    雖然帶約束的性能聚類一定程度上可以避免錯誤的分類,但直接決定聚類效果好壞的類別個數(shù)是人為定義的.為了使聚類效果達到最佳,我們在確定性能類別數(shù)k時,根據(jù)帶約束的聚類方法分別計算不同k值時性能類別中數(shù)據(jù)D的誤差平方和,如式(6)所示.

    (6)

    其中,SSE代表所有樣本的聚類誤差,Ci代表第i個類別,p為Ci中的樣本點,mi為Ci的質(zhì)心(Ci中所有樣本的均值).依據(jù)SSE的思想[16],可以對k值進行搜索,當SSE下降幅度變小時確定k值.通過以上過程,可以劃分性能類別個數(shù),并對每個類別中數(shù)據(jù)的特征賦予類別實際意義,如果不能很好地解釋每個類別,就再考慮次優(yōu)的劃分方法,直至找到能被賦予實際意義的性能類別.性能類別可作為評估代碼自動生成性能的一項指標.

    5 基于DNN的代碼自動生成性能評估

    通過第4節(jié)的方法可以得到合理的性能類別,有助于對性能特征數(shù)據(jù)進行標記.為了分析代碼自動生成過程中性能類別與程序員行為及代碼自動生成工具行為之間的關系,本文設計了一種基于深度神經(jīng)網(wǎng)絡(Deep Neural Networks,DNN)的代碼自動生成性能評估模型.該模型根據(jù)程序員行為與代碼自動生成工具行為特征數(shù)據(jù)進行性能分類,同時針對每種性能類別分析程序員行為與代碼自動生成工具行為的影響程度,以此評估代碼自動生成的性能.基于DNN的代碼自動生成性能評估模型如圖1所示.

    圖1 基于DNN的代碼自動生成性能評估模型Fig. 1 Performance evaluation model of automatic code generation based on DNN

    從程序員行為特征輸入層p到隱藏層h的過程記為函數(shù)fp,從代碼自動生成工具行為特征輸入層c到隱藏層h的過程記為函數(shù)fc,從隱藏層h到性能分類層y的過程記為函數(shù)g,如式(7)、式(8)所示:

    h=fp(xp)+fc(xc)=S(Wp+b)+S(Wc+b)

    (7)

    y=g(h)=S(WTh+d)

    (8)

    其中S一般取為sigmod函數(shù);Wp為程序員行為特征輸入層p與隱藏層之間的權重矩陣,Wc為代碼自動生成工具行為特征輸入層c與隱藏層之間的權重矩陣;b表示隱藏層的偏置向量,d表示輸出層的偏置向量.依據(jù)式(7)、式(8)可以得到x所屬性能類別y.為方便表示,記θ=(Wp,Wc,WT,b,d).

    假設程序員行為特征輸入層的樣本數(shù)據(jù)為p={p1,p2,…,pn},代碼自動生成工具行為特征輸入層的樣本數(shù)據(jù)為c={c1,c2,…,cn},D為包含N個p和c的訓練集以及數(shù)據(jù)對應的性能類別標簽,則訓練基于DNN的代碼自動生成性能評估模型的過程就是利用D對參數(shù)θ的訓練過程,訓練目標是使y和性能類別標簽盡可能接近,性能數(shù)據(jù)分類準確度使用均方誤差來描述,其定義為式(9):

    (9)

    通過以上方法可以得到參數(shù)θ.針對未知性能類別的代碼生成特征數(shù)據(jù)x,可以將特征數(shù)據(jù)分為程序員行為數(shù)據(jù)xp以及代碼自動生成工具行為數(shù)據(jù)xc兩部分輸入模型,由于程序員與代碼自動生成工具在代碼生成過程中有著不同的重要程度,我們在圖1中的I層計算了xp與xc對分類結(jié)果y的影響程度,即Impact_P和Impact_C.計算方法如式(10)、式(11)所示:

    Impact_P=(WTfp(xp)+b)/y

    (10)

    Impact_C=(WTfc(xc)+d)/y

    (11)

    其中Impact_P為程序員行為特征p對性能類別y的影響程度,Impact_C為代碼自動生成工具行為特征c對性能類別y的影響程度.

    通過基于DNN的代碼自動生成性能評估模型,可以針對代碼自動生成過程中產(chǎn)生的程序員行為數(shù)據(jù)以及代碼自動生成工具行為數(shù)據(jù)對代碼生成性能進行分類,同時分析程序員和代碼自動生成工在性能類別中的影響程度.

    6 實 驗

    本文在前期研究中實現(xiàn)了原型工具API4ACGT[17],并利用IntelliJ IDEA的開源插件機制將API4ACGT無縫集成到IntelliJ IDEA中.API4ACGT可以在程序員使用代碼自動生成工具進行編碼時動態(tài)記錄程序員的行為信息以及代碼生成工具行為信息.

    6.1 性能數(shù)據(jù)及復雜特征提取

    我們將API4ACGT(1)https://github.com/xiaojiangzhang安裝到多個程序員的IDE中,同時安裝了代碼生成工具IDEA和AiXCoder.對不同時刻、熟練程度不同的程序員在代碼自動生成工具輔助下的編程過程的性能數(shù)據(jù)進行了采集,數(shù)據(jù)規(guī)模為15000條.部分數(shù)據(jù)如表4所示.

    通過API4ACGT得到性能數(shù)據(jù)后,首先需對數(shù)據(jù)進行特征提取,并計算代碼自動生成工具生成的代碼與程序員需要代碼之間的語義相似度.應用3.2中的方法,我們在GitHub開源社區(qū)中爬取了40余萬個Start大于20的Java代碼文件(約11GB),并建立了Java代碼語料庫,代碼詞庫中的token為77272個.

    表5 詞向量聚類結(jié)果Table 5 Word2Vec clustering results

    利用代碼詞庫對Java代碼進行分詞后,使用Skip-Gram模型訓練代碼詞向量,并在Python3.7環(huán)境中使用Gensim提供的Word2Vec模塊對分詞后的代碼語料進行詞向量的訓練.正如前文所述,AST中的相似節(jié)點應該具有相似的表示,為了評估訓練的詞向量是否達到這個標準,通過K-Means聚類來評估我們訓練的詞向量.實驗中我們將聚類個數(shù)設置為48,截取了3個類別中的部分token,結(jié)果如表5所示.在類別1中幾乎所有符號都與String類型相關,類別2中大多數(shù)符號都與循環(huán)控制有關,類別3中主要是List的子類或相關方法.這個結(jié)果證實了我們的訓練是有效的,相似的符號具有相似的向量表示.

    根據(jù)式(5),對代碼自動生成工具所生成的推薦代碼與程序員選擇的生成代碼進行了語義相似度的計算,并將其合并為生成代碼語義相似度指標.同時對表4中部分原始數(shù)據(jù)進行了數(shù)值化,代碼自動生成工具推薦代碼索引按照式(12)進行計算.

    (12)

    其中n為代碼索引位置.生成代碼位置越靠后,s值就越小。與代碼自動生成過程相關的所有性能特征數(shù)值化后如表6所示.

    表6 性能特征數(shù)值Table 6 Performance feature value

    表6中有少量數(shù)據(jù)存在空值,主要集中在代碼自動生成工具生成推薦代碼個數(shù)、代碼自動生成工具是否成功推薦代碼、代碼自動生成工具推薦代碼索引、生成代碼語義相似度等特征中.通過分析,出現(xiàn)這種情況的原因主要是由于代碼自動生成工具未能為程序員生成代碼,所以在程序員選擇代碼行為或代碼自動生成工具相關行為的數(shù)據(jù)上為空值,可以通過人工判定這種情況屬于性能較差的體現(xiàn).

    6.2 性能分類

    在應用第4節(jié)中的方法標注性能類別時,可以基于人工判定的結(jié)果定義相關約束.如果代碼自動生成工具推薦代碼個數(shù)、代碼自動生成工具是否成功推薦代碼、代碼自動生成工具推薦代碼索引、生成代碼語義相似度的特征值為空或0,則將這類數(shù)據(jù)強制連接到性能較差的數(shù)據(jù)類別中;不滿足該約束時,該類數(shù)據(jù)不允許連接到性能較差的類別中.基于這種約束,我們對數(shù)據(jù)集進行了聚類,通過計算不同k值與SSE值確定最優(yōu)的性能類別個數(shù),結(jié)果如圖2所示.

    在性能類別數(shù)等于3時SSE下降幅度為1413.9,性能類別數(shù)等于4時SSE下降幅度為642.47,下降幅度明顯變緩慢.可見,將性能數(shù)據(jù)劃分為高、中、低3個類別是合理的.因此,本文設定類別數(shù)為3.通過對數(shù)據(jù)集進行聚類及標注,聚類結(jié)果如圖3所示.

    圖2 SSE 計算結(jié)果Fig.2 SSE statistics

    在圖3中,負值表示數(shù)據(jù)相對較小.如圖3所示,在性能較低的類別中,代碼上下文復雜度較高,而代碼自動生成工具生成代碼時間較長,成功推薦代碼次數(shù)較少,同時生成代碼與程序員期望代碼之間的代碼語義相似度較低.程序員行為中刪除行為較突出,說明生成代碼并不符合程序員的期望.此外,在代碼復雜度較高的情況下,代碼自動生成工具生成代碼數(shù)量較少,時間較長,在代碼自動生成過程中性能表現(xiàn)較低.

    圖3 聚類結(jié)果Fig.3 Clustering results

    6.3 代碼自動生成性能評估

    應用第5節(jié)的性能評估模型,本文在分類后的數(shù)據(jù)中隨機抽取13000條作為訓練集,2000條作為測試集,使用隱藏層數(shù)為3、隱層節(jié)點數(shù)為20的網(wǎng)絡參數(shù)對模型進行訓練.在訓練階段為了防止深度學習中常見的擬合性問題,本文在模型訓練過程中加入了Dropout正則化處理,最終模型針對測試集性能分類準確率達到98.17%.

    為了評估程序員行為與代碼自動生成工具行為在代碼自動生成過程中各自的影響程度,選擇了一批經(jīng)過復雜特征提取后的數(shù)據(jù)進行分類,并計算了程序員行為特征與代碼自動生成工具行為特征在不同性能類別中的影響程度,用一個三元組作為評估代碼自動生成性能的指標.其中,Class代表代碼自動生成性能類別,Impact_P為程序員行為特征對性能類別的影響程度,Impact_C為代碼自動生成工具行為特征對性能類別的影響程度,部分實驗數(shù)據(jù)如表7所示.

    表7中Class為性能類別.可以看出,低性能類別中Impact_P指標明顯高于Impact_C.從序號為3、9、10、11、14、16的數(shù)據(jù)中可以看出,代碼自動生成工具推薦代碼個數(shù)接近0,代碼自動生成工具是否成功推薦代碼為0,生成代碼語義相似度幾乎為0,Impact_P均值為0.8352,而Impact_C均值為0.1648,可以看出程序員行為對低性能類別影響程度較高.低性能數(shù)據(jù)的各項特征可以反映出代碼生成工具沒有為程序員生成符合期望的代碼.在中性能數(shù)據(jù)中,Impact_P與Impact_C較為接近,程序員行為數(shù)據(jù)與代碼自動生成工具行為數(shù)據(jù)分布比較均勻.例如序號為1、5、7、12、15的中性能數(shù)據(jù),Impact_P與Impact_C均值為0.4849和0.5151.在高性能數(shù)據(jù)中,Impact_C指標比較突出,Impact_C幾乎接近1.此時,代碼自動生成工具生成代碼的語義相似度最高達到0.8542,生成代碼數(shù)量也達到最高,同時程序員按鍵次數(shù)依舊保持在1左右,即代碼自動生成工具為程序員生成了優(yōu)質(zhì)的代碼,從而提高了程序員的開發(fā)效率.

    表7 程序員行為特征與代碼自動生成工具行為特征在不同性能類別中的影響程度實驗數(shù)據(jù)Table 7 Experimental data on the influence of behavior characteristics of programmers and automatic code generation tools on different performance categories

    上述實驗表明,本文的方法可以有效分析代碼自動生成過程的性能,并判斷程序員行為與代碼自動生成工具行為對代碼自動生成過程性能的影響程度.

    6.4 評估結(jié)果分析

    為了進一步驗證本文所提出的方法,代碼自動生成過程中采集的性能數(shù)據(jù)使用Precision、Recall、MRR、F1-Measure及本文評估方法中的進行了計算.本文的代碼自動生成性能數(shù)據(jù)在InstallJ IDEA中采集.在InstallJ IDEA中,代碼自動生成工具可以推薦無限多個代碼.但無限多的推薦代碼會導致Precision接近0,即使推薦成功也沒有意義.因此,性能評估中設定Top-K大小為3,且只考慮推薦代碼列表中的前3項.針對表7中16條代碼自動生成記錄,性能評估結(jié)果如表8所示.

    從表8中可以看出,不同評估指標顯示表7中16條代碼自動生成記錄的性能評估結(jié)果為中等.與Precision、Recall相比,F(xiàn)1-Measure、MRR、的評估結(jié)果較為接近.

    在代碼自動生成過程中,涉及較多可能影響代碼自動生成性能的因素.例如,程序員輸入代碼會直接影響代碼自動生成工具推薦代碼內(nèi)容;程序員選擇生成代碼之后,可能出現(xiàn)刪除代碼的行為等.從公式(1)、(2)、(4)可知,Precision、Recall以及F1-Measure只計算了代碼自動生成工具推薦代碼個數(shù)以及正確推薦代碼次數(shù),MRR計算了代碼自動生成工具正確推薦代碼排序結(jié)果.本文提出的方法綜合考慮了影響代碼自動生成性能問題的相關因素,從程序員行為以及代碼自動生成工具行為兩個方面進行評估.通過選擇深度神經(jīng)網(wǎng)絡作為性能評估的基礎模型,在代碼自動生成性能評估過程中,不僅對性能數(shù)據(jù)類別進行計算,而且使用深度神經(jīng)網(wǎng)絡中不同神經(jīng)元之間的權重參數(shù)來估計程序員與代碼自動生成工具行為數(shù)據(jù)對性能評估的影響程度,同時也可以利用兩種行為對性能的影響程度分析性能問題的瓶頸.

    表8 代碼自動生成性能評估結(jié)果Table 8 Results of code automatic generation based on different performance metrics

    7 結(jié)束語

    本文針對代碼自動生成提出了一種性能評估方法,綜合考慮了程序員與代碼自動生成工具的作用,通過抽取程序員行為與代碼自動生成工具行為特征,使用帶約束的半監(jiān)督聚類方法對性能數(shù)據(jù)進行分類;根據(jù)程序員行為特征數(shù)據(jù)以及代碼自動生成數(shù)據(jù)建立了一種基于DNN的性能評估模型,評估了程序員和代碼自動生成工具對代碼自動生成性能的影響程度.實驗表明,代碼自動生成性能表現(xiàn)較高時,代碼自動生成工具行為特征權重較大,幾乎直接決定了性能類別,同時也說明高性能的代碼自動生成在較大程度上簡化了程序員的開發(fā)行為;而在低性能類別中,程序員的行為特征權重較大,說明低性能的代碼自動生成會導致程序員的開發(fā)行為在編程中占據(jù)較大比重;在中性能類別中,程序員行為特征與代碼自動生成工具行為特征的權重較為平衡.

    本文所提出的代碼自動生成性能評估方法通過分析程序員行為與代碼自動生成工具行為的交互特征,可以有效的對生成代碼性能進行評估,并可應用于實際軟件項目中.但是,目前僅針對程序員行為與代碼自動生成工具行為對性能分類影響程度進行了研究,下一步將針對程序員與代碼自動生成工具行為中的不同特征對于性能影響程度進行研究,為提高代碼自動生成性能提供更多參考.

    猜你喜歡
    程序員類別代碼
    為了讓媽媽看懂地圖,一位“野生程序員”做了個小程序
    消費電子(2022年7期)2022-10-31 06:17:10
    怎樣成為一名優(yōu)秀程序員
    幼兒100(2020年29期)2020-10-21 06:17:58
    創(chuàng)世代碼
    動漫星空(2018年11期)2018-10-26 02:24:02
    創(chuàng)世代碼
    動漫星空(2018年2期)2018-10-26 02:11:00
    創(chuàng)世代碼
    動漫星空(2018年9期)2018-10-26 01:16:48
    創(chuàng)世代碼
    動漫星空(2018年5期)2018-10-26 01:15:02
    程序員之子
    意林(2017年24期)2018-01-02 22:49:14
    加班
    三月三(2016年6期)2016-06-21 10:25:33
    服務類別
    新校長(2016年8期)2016-01-10 06:43:59
    論類別股東會
    商事法論集(2014年1期)2014-06-27 01:20:42
    一级毛片 在线播放| 极品少妇高潮喷水抽搐| www.av在线官网国产| a级毛片在线看网站| 一本—道久久a久久精品蜜桃钙片| 亚洲精品久久午夜乱码| 午夜激情福利司机影院| 美女中出高潮动态图| 中文字幕人妻丝袜制服| 亚洲精品色激情综合| 国产免费视频播放在线视频| 99久久人妻综合| 成年人免费黄色播放视频| 永久网站在线| 一级片'在线观看视频| 能在线免费看毛片的网站| 亚洲国产成人一精品久久久| 亚洲成色77777| 观看av在线不卡| 亚洲国产精品一区三区| 国产一级毛片在线| 五月开心婷婷网| 男人操女人黄网站| 久久韩国三级中文字幕| 新久久久久国产一级毛片| videosex国产| 色吧在线观看| 日韩亚洲欧美综合| 成年女人在线观看亚洲视频| 久久人妻熟女aⅴ| 99热网站在线观看| 老司机亚洲免费影院| 18禁观看日本| 成人亚洲欧美一区二区av| 欧美日韩精品成人综合77777| 久久久久人妻精品一区果冻| 51国产日韩欧美| h视频一区二区三区| 欧美三级亚洲精品| 久久久久久伊人网av| 99久久综合免费| 高清毛片免费看| 国产在线免费精品| 色婷婷av一区二区三区视频| 大片免费播放器 马上看| 国产精品久久久久久久久免| 性高湖久久久久久久久免费观看| 色婷婷av一区二区三区视频| 亚洲av免费高清在线观看| 丁香六月天网| 人成视频在线观看免费观看| 国产亚洲最大av| 亚洲欧美一区二区三区国产| 久久久久久久久久成人| 日本vs欧美在线观看视频| 王馨瑶露胸无遮挡在线观看| 涩涩av久久男人的天堂| 狠狠婷婷综合久久久久久88av| 国产成人91sexporn| 国产免费一区二区三区四区乱码| 国产高清三级在线| 天天躁夜夜躁狠狠久久av| 久久久久视频综合| 亚洲av电影在线观看一区二区三区| 久久韩国三级中文字幕| 亚洲欧美日韩另类电影网站| 国产一级毛片在线| 国产色爽女视频免费观看| 麻豆成人av视频| 精品酒店卫生间| 九九爱精品视频在线观看| 新久久久久国产一级毛片| 国产一区有黄有色的免费视频| 91精品一卡2卡3卡4卡| 国产成人精品在线电影| 日韩av不卡免费在线播放| 午夜av观看不卡| 成人国产av品久久久| 在线看a的网站| 日本av免费视频播放| 国产精品人妻久久久影院| 在线观看美女被高潮喷水网站| 国产在视频线精品| 亚洲成人一二三区av| 国产免费又黄又爽又色| 亚洲中文av在线| 日产精品乱码卡一卡2卡三| 夫妻午夜视频| 香蕉精品网在线| 女人久久www免费人成看片| 少妇人妻 视频| 成人无遮挡网站| 在线观看人妻少妇| 纵有疾风起免费观看全集完整版| 亚洲国产精品一区三区| 亚洲av在线观看美女高潮| 国产有黄有色有爽视频| 国产亚洲最大av| 国产无遮挡羞羞视频在线观看| 国产成人freesex在线| 国产欧美日韩综合在线一区二区| 亚洲综合精品二区| 人妻 亚洲 视频| 亚洲av中文av极速乱| 青青草视频在线视频观看| 特大巨黑吊av在线直播| 久久人妻熟女aⅴ| 国国产精品蜜臀av免费| 久热久热在线精品观看| 久久人妻熟女aⅴ| 一边亲一边摸免费视频| 在线观看www视频免费| 精品酒店卫生间| 我的女老师完整版在线观看| 老司机亚洲免费影院| 赤兔流量卡办理| 中文欧美无线码| 久久青草综合色| 内地一区二区视频在线| 99视频精品全部免费 在线| 亚洲国产av影院在线观看| 我要看黄色一级片免费的| 秋霞伦理黄片| 欧美bdsm另类| 美女国产高潮福利片在线看| 亚洲在久久综合| 免费播放大片免费观看视频在线观看| 精品久久久精品久久久| 国产午夜精品一二区理论片| av福利片在线| 一本大道久久a久久精品| 免费人成在线观看视频色| 亚洲一区二区三区欧美精品| 亚洲成人手机| 另类亚洲欧美激情| 免费观看a级毛片全部| 国产成人a∨麻豆精品| 亚洲国产毛片av蜜桃av| 美女大奶头黄色视频| 青春草亚洲视频在线观看| 亚洲av不卡在线观看| 久久国产精品大桥未久av| 啦啦啦在线观看免费高清www| 99热全是精品| 高清午夜精品一区二区三区| 国产精品女同一区二区软件| 国产亚洲精品第一综合不卡 | 久久人人爽人人爽人人片va| 飞空精品影院首页| 永久免费av网站大全| 国产日韩一区二区三区精品不卡 | 2022亚洲国产成人精品| av国产久精品久网站免费入址| 国产成人精品一,二区| 男女啪啪激烈高潮av片| 精品卡一卡二卡四卡免费| 日本欧美视频一区| 欧美日韩精品成人综合77777| 国语对白做爰xxxⅹ性视频网站| 男人添女人高潮全过程视频| 国产极品粉嫩免费观看在线 | 成人亚洲精品一区在线观看| 一边亲一边摸免费视频| 国产爽快片一区二区三区| 亚洲欧美精品自产自拍| 一级二级三级毛片免费看| 男人爽女人下面视频在线观看| 十八禁高潮呻吟视频| 欧美+日韩+精品| 亚洲av欧美aⅴ国产| 五月玫瑰六月丁香| 在线观看国产h片| 国产成人aa在线观看| 久久国产精品男人的天堂亚洲 | 日韩精品免费视频一区二区三区 | 国产精品国产三级国产专区5o| 老熟女久久久| 在线播放无遮挡| 天天躁夜夜躁狠狠久久av| 97超视频在线观看视频| 大片免费播放器 马上看| 国产乱来视频区| 中文字幕久久专区| 亚洲人成77777在线视频| 欧美日韩在线观看h| 在线观看美女被高潮喷水网站| 99热全是精品| 成年av动漫网址| 91精品三级在线观看| 国产成人精品久久久久久| 九九久久精品国产亚洲av麻豆| 少妇猛男粗大的猛烈进出视频| 飞空精品影院首页| 男女边摸边吃奶| 免费观看无遮挡的男女| 男人添女人高潮全过程视频| 亚洲色图 男人天堂 中文字幕 | av不卡在线播放| 亚洲精品一二三| 色婷婷av一区二区三区视频| 美女视频免费永久观看网站| 久久免费观看电影| 国产免费一区二区三区四区乱码| 亚洲在久久综合| 各种免费的搞黄视频| 韩国av在线不卡| 久久国产精品大桥未久av| 激情五月婷婷亚洲| 一个人免费看片子| 精品国产一区二区久久| 久久久精品区二区三区| 久久热精品热| 久久午夜福利片| 国产不卡av网站在线观看| 日本wwww免费看| 久久精品夜色国产| 天堂中文最新版在线下载| 99九九线精品视频在线观看视频| 丁香六月天网| 亚洲欧美成人综合另类久久久| 国产精品一区www在线观看| 国产精品一区二区三区四区免费观看| 国产日韩一区二区三区精品不卡 | 日韩伦理黄色片| 亚洲国产精品成人久久小说| 插逼视频在线观看| 卡戴珊不雅视频在线播放| 80岁老熟妇乱子伦牲交| 日韩中文字幕视频在线看片| av线在线观看网站| 亚洲熟女精品中文字幕| 亚洲五月色婷婷综合| 夫妻性生交免费视频一级片| 久久青草综合色| 少妇精品久久久久久久| 日本黄大片高清| 97超视频在线观看视频| 人妻少妇偷人精品九色| 一区二区日韩欧美中文字幕 | 国产精品不卡视频一区二区| 91午夜精品亚洲一区二区三区| 亚洲内射少妇av| 狂野欧美白嫩少妇大欣赏| 日日摸夜夜添夜夜添av毛片| 一区二区三区精品91| 国产综合精华液| 另类精品久久| 欧美日本中文国产一区发布| 国产极品粉嫩免费观看在线 | 精品一品国产午夜福利视频| 母亲3免费完整高清在线观看 | 日韩不卡一区二区三区视频在线| 欧美亚洲日本最大视频资源| 两个人的视频大全免费| 亚洲综合精品二区| 久久久久久久久久人人人人人人| 久久99热这里只频精品6学生| 日韩一区二区视频免费看| 日本vs欧美在线观看视频| 啦啦啦啦在线视频资源| 汤姆久久久久久久影院中文字幕| 99久久精品国产国产毛片| 欧美激情极品国产一区二区三区 | 午夜激情福利司机影院| 日本黄大片高清| 亚洲成人手机| av有码第一页| 国产高清有码在线观看视频| 久久亚洲国产成人精品v| 我的女老师完整版在线观看| 精品亚洲乱码少妇综合久久| 国产极品粉嫩免费观看在线 | 亚洲av欧美aⅴ国产| videossex国产| 精品人妻熟女毛片av久久网站| 男女边吃奶边做爰视频| 久久国产精品男人的天堂亚洲 | 欧美日韩国产mv在线观看视频| 国产毛片在线视频| a级毛片免费高清观看在线播放| 97在线人人人人妻| 一区在线观看完整版| 国产成人aa在线观看| 夜夜看夜夜爽夜夜摸| 国产成人免费无遮挡视频| 热99久久久久精品小说推荐| 黑人猛操日本美女一级片| av在线老鸭窝| 成人国产av品久久久| 中文欧美无线码| 国产 精品1| 在线天堂最新版资源| 日日摸夜夜添夜夜爱| 麻豆成人av视频| 97在线视频观看| 日本欧美视频一区| 777米奇影视久久| 99久久人妻综合| 免费观看a级毛片全部| 久久精品国产亚洲网站| 国产永久视频网站| 九色亚洲精品在线播放| 天天操日日干夜夜撸| 最后的刺客免费高清国语| 岛国毛片在线播放| av在线播放精品| 在线播放无遮挡| 亚洲欧洲日产国产| 80岁老熟妇乱子伦牲交| 国产成人精品婷婷| 成年女人在线观看亚洲视频| 国产精品免费大片| 一区二区日韩欧美中文字幕 | 国产精品女同一区二区软件| 久久av网站| 夫妻午夜视频| 国产午夜精品一二区理论片| 日韩强制内射视频| 免费看不卡的av| 色哟哟·www| 欧美97在线视频| 精品一区二区免费观看| av黄色大香蕉| 成人国产av品久久久| 极品人妻少妇av视频| 欧美亚洲日本最大视频资源| 日本色播在线视频| 如何舔出高潮| 3wmmmm亚洲av在线观看| 特大巨黑吊av在线直播| 2022亚洲国产成人精品| 青春草国产在线视频| 久久免费观看电影| 少妇人妻精品综合一区二区| 2022亚洲国产成人精品| 国产亚洲一区二区精品| 街头女战士在线观看网站| 狂野欧美激情性bbbbbb| 亚洲一区二区三区欧美精品| 一边摸一边做爽爽视频免费| 国产黄频视频在线观看| 妹子高潮喷水视频| 如日韩欧美国产精品一区二区三区 | 在线观看人妻少妇| 免费不卡的大黄色大毛片视频在线观看| 黑人巨大精品欧美一区二区蜜桃 | 综合色丁香网| 成年人免费黄色播放视频| 日韩成人av中文字幕在线观看| 久久av网站| 久久久久人妻精品一区果冻| 国产成人一区二区在线| 久久青草综合色| 国产成人freesex在线| 综合色丁香网| 国产在线免费精品| 18禁在线无遮挡免费观看视频| 看免费成人av毛片| 丝袜美足系列| 一级毛片黄色毛片免费观看视频| 一本一本综合久久| 久久99一区二区三区| 日本欧美国产在线视频| 日本-黄色视频高清免费观看| 能在线免费看毛片的网站| 色网站视频免费| 国产av国产精品国产| 亚洲无线观看免费| 精品一区在线观看国产| 欧美老熟妇乱子伦牲交| 久久人人爽av亚洲精品天堂| 成年人免费黄色播放视频| av国产精品久久久久影院| 99国产精品免费福利视频| 欧美日韩视频高清一区二区三区二| 欧美老熟妇乱子伦牲交| 亚洲精品久久午夜乱码| 国产白丝娇喘喷水9色精品| 啦啦啦视频在线资源免费观看| 91精品三级在线观看| 免费观看性生交大片5| 不卡视频在线观看欧美| 91精品国产国语对白视频| 国产欧美亚洲国产| 亚洲高清免费不卡视频| av.在线天堂| 一本一本综合久久| 男女边摸边吃奶| 一边摸一边做爽爽视频免费| 成人手机av| 性色av一级| av在线观看视频网站免费| 国产视频内射| 欧美亚洲 丝袜 人妻 在线| 国产日韩欧美视频二区| 欧美人与性动交α欧美精品济南到 | 日日撸夜夜添| 欧美97在线视频| 男女边吃奶边做爰视频| 国产毛片在线视频| 91久久精品国产一区二区成人| 国产精品99久久久久久久久| 日日摸夜夜添夜夜爱| 亚洲av二区三区四区| 好男人视频免费观看在线| 国产熟女欧美一区二区| 国产精品久久久久久精品电影小说| 久久热精品热| 免费看av在线观看网站| 一区二区av电影网| 91成人精品电影| 免费不卡的大黄色大毛片视频在线观看| 精品久久久噜噜| 又粗又硬又长又爽又黄的视频| 日韩欧美一区视频在线观看| 18禁在线播放成人免费| 女人久久www免费人成看片| 午夜91福利影院| 亚洲第一区二区三区不卡| 日韩亚洲欧美综合| 蜜臀久久99精品久久宅男| 亚洲五月色婷婷综合| 中文欧美无线码| 中文字幕制服av| 国产一区二区在线观看av| av在线老鸭窝| 欧美少妇被猛烈插入视频| 尾随美女入室| 亚洲av电影在线观看一区二区三区| 久久精品国产亚洲av涩爱| av在线播放精品| 免费高清在线观看日韩| av女优亚洲男人天堂| 日本黄大片高清| 久久精品夜色国产| 美女主播在线视频| 欧美成人午夜免费资源| 自拍欧美九色日韩亚洲蝌蚪91| av视频免费观看在线观看| 9色porny在线观看| 大香蕉久久网| 热99国产精品久久久久久7| 母亲3免费完整高清在线观看 | 校园人妻丝袜中文字幕| 成人亚洲精品一区在线观看| 国产在视频线精品| 成年人免费黄色播放视频| 人人妻人人添人人爽欧美一区卜| 国产不卡av网站在线观看| 亚洲av福利一区| 极品少妇高潮喷水抽搐| 国产精品偷伦视频观看了| 色婷婷久久久亚洲欧美| 免费av不卡在线播放| 国产精品久久久久久av不卡| 免费观看av网站的网址| 少妇熟女欧美另类| 少妇人妻 视频| 天天影视国产精品| 日韩强制内射视频| 国产精品.久久久| 99久国产av精品国产电影| 国产成人精品久久久久久| 亚洲欧美日韩另类电影网站| 少妇丰满av| 欧美精品高潮呻吟av久久| 久久久精品94久久精品| 成年人免费黄色播放视频| 一区二区三区乱码不卡18| 91久久精品电影网| 亚洲av综合色区一区| 丰满饥渴人妻一区二区三| 国产一区二区三区av在线| 黑人巨大精品欧美一区二区蜜桃 | 精品一区二区三区视频在线| 国产午夜精品久久久久久一区二区三区| 亚洲美女搞黄在线观看| 国产男人的电影天堂91| 伦精品一区二区三区| 王馨瑶露胸无遮挡在线观看| 久久久久久久久久久久大奶| 另类精品久久| 亚洲一级一片aⅴ在线观看| 亚洲人成网站在线观看播放| 午夜福利视频精品| 纵有疾风起免费观看全集完整版| 蜜桃国产av成人99| 女人精品久久久久毛片| 亚洲精华国产精华液的使用体验| 丝袜美足系列| 日韩一本色道免费dvd| 亚洲av不卡在线观看| 黑人高潮一二区| 熟女av电影| 男男h啪啪无遮挡| 永久免费av网站大全| 欧美3d第一页| 七月丁香在线播放| 熟女av电影| av国产久精品久网站免费入址| 国产永久视频网站| 亚洲人成网站在线播| 在线观看三级黄色| 十八禁网站网址无遮挡| 亚洲av免费高清在线观看| av播播在线观看一区| 国产在线一区二区三区精| 欧美国产精品一级二级三级| 看十八女毛片水多多多| 简卡轻食公司| 美女主播在线视频| 男人添女人高潮全过程视频| 久久精品久久精品一区二区三区| 日本-黄色视频高清免费观看| 建设人人有责人人尽责人人享有的| av专区在线播放| 91在线精品国自产拍蜜月| 精品熟女少妇av免费看| 国产无遮挡羞羞视频在线观看| 99久久中文字幕三级久久日本| 日韩在线高清观看一区二区三区| 亚洲国产最新在线播放| 亚洲精品自拍成人| 亚洲不卡免费看| 免费av中文字幕在线| 成人免费观看视频高清| 曰老女人黄片| 国产极品粉嫩免费观看在线 | 成人国产av品久久久| 精品一区在线观看国产| 欧美最新免费一区二区三区| 亚洲精品第二区| 日韩不卡一区二区三区视频在线| 成人午夜精彩视频在线观看| 美女内射精品一级片tv| freevideosex欧美| videos熟女内射| 9色porny在线观看| 黑丝袜美女国产一区| 久久精品夜色国产| 美女国产视频在线观看| 欧美老熟妇乱子伦牲交| 一本大道久久a久久精品| 亚洲美女黄色视频免费看| tube8黄色片| 人人妻人人添人人爽欧美一区卜| 亚洲av日韩在线播放| 欧美日韩亚洲高清精品| 午夜激情久久久久久久| 女人久久www免费人成看片| 熟女人妻精品中文字幕| 国产精品秋霞免费鲁丝片| 另类亚洲欧美激情| 一级毛片我不卡| 只有这里有精品99| 亚洲av成人精品一区久久| 天美传媒精品一区二区| 国产女主播在线喷水免费视频网站| 国产欧美日韩一区二区三区在线 | 看免费成人av毛片| 精品人妻熟女av久视频| 亚洲伊人久久精品综合| 国产毛片在线视频| 女性被躁到高潮视频| 最黄视频免费看| 国产av一区二区精品久久| 成人无遮挡网站| av播播在线观看一区| 久久国产精品男人的天堂亚洲 | 内地一区二区视频在线| 国产视频首页在线观看| 你懂的网址亚洲精品在线观看| 超碰97精品在线观看| 777米奇影视久久| 伦理电影大哥的女人| 亚洲欧美日韩另类电影网站| 最近最新中文字幕免费大全7| 在线精品无人区一区二区三| 亚洲精品日本国产第一区| 久久精品久久久久久噜噜老黄| 久久毛片免费看一区二区三区| av电影中文网址| av免费观看日本| 久久久精品免费免费高清| 欧美日韩国产mv在线观看视频| 黄片无遮挡物在线观看| 久久久久久久亚洲中文字幕| 日日摸夜夜添夜夜爱| 亚洲av国产av综合av卡| 国产精品麻豆人妻色哟哟久久| 天美传媒精品一区二区| 母亲3免费完整高清在线观看 | 美女cb高潮喷水在线观看| 哪个播放器可以免费观看大片| 久久久精品免费免费高清| 插阴视频在线观看视频| 如日韩欧美国产精品一区二区三区 | 日本黄大片高清| 自线自在国产av| 黑人欧美特级aaaaaa片| 国产成人精品无人区| 黑人巨大精品欧美一区二区蜜桃 | 久热久热在线精品观看| 97在线视频观看| 中文字幕人妻丝袜制服| 亚洲精品国产av蜜桃| 男女高潮啪啪啪动态图| 免费观看av网站的网址| 18禁观看日本| 99九九线精品视频在线观看视频| 午夜福利网站1000一区二区三区| 久久久久久久久久久丰满| 久久人人爽av亚洲精品天堂| 伊人亚洲综合成人网| 在线观看人妻少妇|