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

    Code Smell Detection Using Whale Optimization Algorithm

    2021-12-11 13:30:24MoatasemDrazMarwaFarhanSarahAbdulkaderandGafar
    Computers Materials&Continua 2021年8期

    Moatasem M.Draz,Marwa S.Farhan,Sarah N.Abdulkader and M.G.Gafar

    1Department of Software Engineering,Faculty of Computers and Information,Kafrelsheikh University,Kafr Elsheikh,Egypt

    2Faculty of Informatics and Computer Science,British University in Egypt,Cairo,Egypt

    3Department of Information Systems,Faculty of Computers and Artificial Intelligence,Helwan University,Cairo,Egypt

    4Department of Computer Science,Faculty of Computers and Artificial Intelligence,Helwan University,Cairo,Egypt

    5Faculty of Computer Studies,Arab Open University,Cairo,Egypt

    6Department of Computer Science,College of Science and Humanities in Al-Sulail,Prince Sattam bin Abdulaziz University,Kharj,Saudi Arabia

    7Department of Machine Learning and Information Retrieval,Faculty of Artificial Intelligence,Kafrelsheikh University,Kafr Elsheikh,Egypt

    Abstract: Software systems have been employed in many fields as a means to reduce human efforts; consequently, stakeholders are interested in more updates of their capabilities.Code smells arise as one of the obstacles in the software industry.They are characteristics of software source code that indicate a deeper problem in design.These smells appear not only in the design but also in software implementation.Code smells introduce bugs,affect software maintainability,and lead to higher maintenance costs.Uncovering code smells can be formulated as an optimization problem of finding the best detection rules.Although researchers have recommended different techniques to improve the accuracy of code smell detection,these methods are still unstable and need to be improved.Previous research has sought only to discover a few at a time (three or five types) and did not set rules for detecting their types.Our research improves code smell detection by applying a search-based technique; we use the Whale Optimization Algorithm as a classifier to find ideal detection rules.Applying this algorithm,the Fisher criterion is utilized as a fitness function to maximize the between-class distance over the withinclass variance.The proposed framework adopts if-then detection rules during the software development life cycle.Those rules identify the types for both medium and large projects.Experiments are conducted on five open-source software projects to discover nine smell types that mostly appear in codes.The proposed detection framework has an average of 94.24%precision and 93.4%recall.These accurate values are better than other search-based algorithms of the same field.The proposed framework improves code smell detection,which increases software qualitywhile minimizingmaintenance effort,time,and cost.Additionally,the resulting classification rules are analyzed to find the software metrics that differentiate the nine code smells.

    Keywords: Software engineering intelligence; search-based software engineering; code smell detection; software metrics; whale optimization algorithm; fisher criterion

    1 Introduction

    The complexity of software systems is rapidly increasing, which leads software houses to anticipate continuous change.Due to stakeholders’continuous demands for their reliance on these systems, software houses are under constant pressure to deliver the product on time [1].Software systems contain high levels of complexity, and maintenance can prove to be difficult.Developers spend more than 60% of their time understanding the code before proceeding with its maintenance, leading to massive costs [2], which accounting for 50%-80% of software expenditure [3].These expenses can be reduced by detecting and eliminating code smells in the early stages of development [4].

    Fowler [5] defines code smells as signs in the program’s source code indicating deeper issues that make it difficult to understand, modify, and maintain software.He [5] defines 22 types of code smells and refactoring opportunities.Our research focused on nine types:Large Class (Blob),Long Method (LM), Feature Envy (FE), Spaghetti Code (SC), Data Class (DC), Lazy Class (LC),Functional Decomposition (FD), Parallel Inheritance (PI), and Long Parameter List (LPL).Some of these smells appear in the design phase, whereas others appear in the implementation phase of the software development life cycle (SDLC) [6].These negatively impact software maintainability and reliability, and damage software quality in the long term by incurring technical debt,introducing bugs, and increasing tension among team members [7].

    We select these types because of their critical effect on software systems.Additionally, they continuously appear during the development process and have been used frequently in recent studies [8-13].Our research will focus on optimizing detection rules for bad smells.We use a search-based technique that learns identification rules from software quality metrics to capture its structural architecture.

    Search-based software engineering (SBSE) [14] defines detecting code smells as a search problem; an algorithm explores the search areas, guided by a fitness function that captures the properties of the desired solutions.Search space solutions represent the rules that identify code smells.To find the optimal detection rules, this research utilizes the Whale Optimization Algorithm(WOA) [15] as a classifier.WOA encircles the prey (optimal solution) and updates the search agents’positions to find the best solution using the Fisher criterion [16] as a fitness function.The Fisher criterion calculates the desirability of the rule by maximizing the between-class distance over the within-class variance.WOA improves the accuracy of code smell detection more than other genetic and evolutionary algorithms.It adopts if-then classification rules, which detect code smells during the life cycle of software development.

    The rest of this paper is structured as follows:Section 2 provides an overview of code smells.Section 3 is a literature review.Section 4 presents and discusses the proposed SBSE solution for code smell detection.Section 5 presents and discusses experimental results.Section 6 concludes our findings and suggests future research directions.

    2 Code Smell Overview

    Code smells are symptoms of inadequate design or coding practices adopted by developers due to deadline pressure, lack of skills, or lack of experience [17].These actions are also called bad-practices, anti-patterns, anomalies, or design defects.Fowler [5] defines 22 types of code smells, as well as refactoring opportunities.This research detects nine code smells types, explained as follows:

    1.Large Class (Blob) is a class that monopolizes the behavior of the system.It can modify many fields and properties of the system without taking care of a principle of consistency.This smell type causes low cohesion and high coupling, and can need to difficulties in maintenance.It is also called Blob, Winnebago, and God class.

    2.Long Method (LM (is a method that has many lines of code (LOC).If a method has ten lines of code or more, questions should be asked.

    3.Feature Envy (FE) occurs when a method is more familiar with the properties of other classes than its own properties.

    4.Spaghetti Code (SC) occurs when the necessary system structures are not included in the code.Object-oriented concepts are forbidden, such as polymorphism and inheritance.

    5.Data Class (DC) is a class that has data fields but no methods calling the data.The only methods defined are the setters and the getters of these data.

    6.Lazy Class (LC) is a useless class, which means that the class has low complexity and does not do much.

    7.Functional Decomposition (FD) is found in code written by novice developers and refers to classes that are built to perform a single function.

    8.Parallel Inheritance (PI) occurs when an inheritance tree is based on another inheritance tree after configuration.In other words, creating a sub-category for one category and then needing to create a sub-category for another category.

    9.Long Parameter List (LPL) appears when a method contains many parameters in its signature; this code smell occurs when the method has more than four parameters.

    The previous code smells are a direct result of bad practices from developers during SDLC.Testers found a list of software metrics related to them.This research is interested in studying 12 software metrics that constitute the features of the training and testing data detected by if-then rules.These metrics are as follows [7]:

    1.Response for Class (RFC):The number of methods in an entity that can be executed when a message is received by an object belonging to the class.

    2.Weighted Methods Per Class (WMC):The number of methodological complexities.

    3.Lack of Cohesion between Methods (LCOM):the number of methods in a class that does not have at least one field in it.

    4.Lines of Code (LOC):The number of lines in the code, except for abandoned lines and comments.

    5.Coupling between Object Classes (CBO):The number of classes attached to a given class via field access, arguments, method calls, return type, and exceptions.

    6.Number of Attributes Declared (NAD):The number of attributes declared.

    7.Number of Parameters (NoParam):The number of parameters defined in a method.

    8.Cyclomatic Complexity (CC):Indicates the complexity of a program.This measures the number of linearly independent paths within it.It is also called McCabe.

    9.Number of Methods (NOM):The number of methods in a class specified.

    10.Number of Overridden Methods (NMO):The number of methods overridden of an entity.

    11.Depth of Inheritance Tree (DIT):The length of the hierarchy tree from the class to the parent class.

    12.Number of Children (NOC):The number of the class’s immediate descendants.

    3 Literature Review

    Over the last three decades, a variety of detection techniques has been used to detect code smell.Researchers have proposed manual technology [18,19], metric techniques [20-22], symptombased techniques [23,24], probability-based techniques [25], visualization-based techniques [26,27],machine learning techniques [17,28-30], search-based software engineering [8,31-33], and other detection tools [34-37].

    The code smell detection problem was formulated using search-based software engineering(SBSE) methods as an optimization issue.When a software engineering problem is formulated as a search issue, optimization algorithms can be used to solve it [14].

    Kessentini et al.[31] employed the genetic programming (GP) to describe code smell detection rules.These rules are a blend of values and metrics that formulate the optimal identification of smells.The average accuracy of this approach is 70%.

    Ouni et al.[32] developed a detection and correction technique.It has two targets:The first is the detection of code smell, and the second is the correction of it.They used GP for detection,a correction mission, and the non-dominated sorting genetic algorithm (NSGA-II).The average accuracy was 85% for precision and 90% for recall.This technique was applied to detect three types of code smells.

    Boussaa et al.[33] implemented a detection technique that maximizes the coverage base of code smell examples and increases the number of “synthetic” software smells produced and not protected by the first population solutions.This technique used a competitive co-evolutionary algorithm (CCEA); it detected only three types with an average 80% for precision and recall.These approaches’accuracies were not promising as same as the technique presented by Ouni et al.[32],which also detected three types.

    Usman et al.[8] introduced a multi-objective search-based technique to discover the most potent combination of metrics that not only maximizes the detection of code smell but also minimizes the detection of well-designed code.This research enhanced the accuracy of detection to 87% precision and 92% recall and increased it to five types.

    Tab.1 provides a comparison between the different approaches; to summarize

    ? The studies detected only a few code smells (between three and five) of the 22 types that Fowler [5] defined;

    ? As indicated, the detection accuracy was not high;

    ? Just one study defined rules for detection;

    ? They did not define the rules based on the size of software systems.

    To address these shortcomings, this research constructs detection rules for both medium and large systems, and it enhances detection accuracy via a search-based technique.The proposed framework utilizes WOA [15] search capabilities to find the optimal metrics-based detection rules.They are guided by data given by five open-source systems on nine types, as defined in Section 2.This proposed framework uses the Fisher criterion, whose objective function maximizes the distance between different classes while minimizing the within-class distance.Hence, the detection rules that best satisfy the objective will be chosen as the optimal solution.The WOA, Fisher criterion, and our proposed integration technique are introduced in Section 4.

    Table 1:A comparison between the different search-based solutions

    4 The Proposed SBSE Framework for Code Smell Detection

    Harman describes metaheuristic search in SBSE as shifting from human-based to machinebased solutions to software engineering issues [14].SBSE aims at reformulating software engineering issues as optimization topics [38,39] where, optimal or near-optimal solutions exist in the candidate solution search space.Driven by a fitness function, algorithms may differentiate between good and bad solutions to find the optimal one for the problem.

    To solve the optimization problem of detection, we perform optimization with WOA [15],using the Fisher criterion [16] with software metrics as a fitness function.Fig.1 shows the Business Process Model and Notation for the proposed SBSE framework for code smell detection.The process within the framework is discussed in the following subsections.

    4.1 Prepare the Dataset Metrics in Columns and Define Code Smells Based on Rules of Detection

    A metric or set of metrics is used to determine whether the code has bad smells or not.We identify code smells for each application based on rules that were used in earlier studies.Tab.2 shows metrics used to define each type.

    Figure 1:An overview of the proposed SBSE framework

    Table 2:The sofware quality metrics used to define each type

    This research is conducted on five Java software projects.ArgoUML [42] is an application that helps stakeholders create complex and professional diagrams.Azure [43] is a file-sharing tool.Gantt Project [44] is a project or application-scheduling tool.Log4j [45] is a Java jar that helps in Java login.Xerces-J [46] is a tool used to parse XML.These projects are checked for the code smells based on the 12-software metrics using traditional software testing techniques.The metrics data and the code smells are used to prepare training and testing datasets, which we split using an 80:20 ratio.The training dataset is used to learn and train the algorithm to build the detection rules.The test data is used to evaluate our algorithm based on accuracy measures such as precision and recall.The number of modules and the detected code smells in each system are reported in Tab.3.

    4.2 Discretize Datasets

    The probability of an exact match in metrics during the search is very low.To make the matching process possible, we discretize the search space using a binning technique to divide the selected attributes into a user-specified number of ranges (bins).The range of numerical values for each metric (feature) is divided into equal-size segments (bins) by the Rapidminer tool [47].

    Table 3:The number of modules and the detected code smells in each system

    4.3 Create Random Population for Each System(Probable Rules)

    Optimization algorithms use a random initial population of probable solutions.The solution for the bad smell detection problem is a set of if-then rules defining the code smell types, and the initial population is a random sample of these if-then rules.The software metrics form the condition of each rule, and the code smell type forms the result.For example, “if (f1 ∈r1&f2 ∈r2&...&f12 ∈r1), then CodeSmell = true” is a detection rule where, f is the software metric and r is the range.For each project, the population contains 100 individuals.The best if-then rule is the search agent that maximizes the calculated fitness function.A tolerance threshold is used to match search agents (rules) with the training data.The search agents with their corresponding fitness values become the input to the learning algorithm.

    4.4 Calculate Fitness Function

    Detection is solved using an optimization algorithm guided by a fitness function [38].This evaluation function measures how a given solution is close to the optimum one for the problem(how fit a solution is).The fitness function evaluates the performance of each agent and gives agents with the most improvement for the highest probability of survival [48,49].We use the Fisher criterion as a fitness function, which tests the distribution of inter-class scatter over in-class scatter [16].

    A high fitness value means that the gap between any two classes is significant.Hence, the rules that maximize the distance between different classes are the fittest ones.The Fisher criterion between two groups,iandj, is defined as

    whereVjis the variance of thejth class, defined asandμirepresents the mean of theith class, defined asμi=Xk.Xkrepresents thekthobservation in classi, where, 1 ≤k≤N, andNis the number of observations.Each search agent is matched against the dataset instances.The one that maximizes the Fisher criterion (or maximizes the difference between the center of different classes while minimizing the differences between instances of the same class) is selected as the best search agent.The agents with the highest fitness function values represent the closest optimum solutions and are chosen as inputs for the WOA.

    4.5 Apply Whale Optimization Algorithm(WOA)as a Classifier(Classification Rules)

    We choose WOA as our classifier because several studies [50-52] showed that WOA [53]had the highest accuracy compared to the other state-of-the-art evolutionary algorithms, such as PSO [54] and GA [55].WOA is a swarm-based metaheuristic algorithm.Inspired by the hunting behavior of humpback whales that prefer catching frogs or small fish near the surface of the water using traps, WOA mimics humpback whales in two phases [15].The first is the exploitation phase, where whales encircle the prey and use the bubble net attacking method, and the second is the exploration phase where they randomly search for prey (Fig.2).

    Figure 2:Whales encircle the prey [15]

    4.5.1 Exploitation Phase(Encircling the Prey and Bubble-Net Attacking Method)

    Since the optimal agent in the search space is not known, humpback whales decide on a location of the prey and encircle it.WOA assumes the target is near the best existing solution.Other search agents can mathematically move their positions closer to the best search agent after selecting it with these equations

    whereCandAare coefficient vectors,X?is the best-solution obtained,tis the real iteration, andXis the absolute value of the current solution.ValuesAandCare determined by

    whereais linearly decreasing vector from 2 to 0, andris a random vector between 0 and 1.The agents update their positions according to Eq.(3) based on the best-known solution.Eqs.(4)and (5) aid by monitoring the areas where new solutions can be found in the best solution’s neighborhood.The whales shrink around new solutions by reducing the value ofaby

    wheretis the current iteration, andMaxIterationis the maximum number of allowed iterations.

    After encircling shrinks, WOA calculates the distance between the current solution (X) and the best solution (X?).The path between the humpback whale and the prey is represented as

    whereD′=X?(t)?X(t)is the distance between the whaleXand the prey,bis the logarithmic spiral form, andlis a random value between ?1 and 1.From previous equations, shrinking and moving in a spiral-shaped direction occur with a 50 percent probability (8)

    wherepis a random number between 0 and 1.

    Figure 3:WOA flowchart

    4.5.2 Exploration Phase(Search for a Prey)

    Through updating the random solution chosen in this phase, WOA explores the optimal solution.To move suboptimal solutions away from the more popular search sites, the vectorAis used to introduce random values less than ?1 or greater than 1.As in the equation, it can be modeled mathematically in (9) and (10), respectively:

    where Xrand stands for a random whale picked from the current population.The flowchart for the previously outlined WOA phases is shown in Fig.3.

    5 Experimental Study and Evaluation

    After completing the search, the resulting classification rules with the same software metrics are applied on a separate testing dataset to verify the efficiency of the proposed framework.In this section, we present the experimental setup and compare performance with previous approaches.

    5.1 Experiment Setup

    These experiments are simulated on a PC using an Intel(R) Core(TM) i5 CPU, 8 GB RAM and 1 TB hard disk using the following tools and jars:

    ? NetBeans IDE V.8.2 [56] for data preprocessing and defining code smell types in training data;

    ? JDK 1.8 [57] for installing Java and coding;

    ? RapidMiner V.5.3 [47] for the discretization process;

    ? JXL (Java Excel API) [58] and Apache POI (HSSf and SS) [59] for reading and writing in datasets Excel sheets;

    ? NetBeans IDE V.8.2 [56] for the creation of random populations, calculating the fitness method, training the WOA, testing the WOA, and calculating accuracy.

    The five software projects are traced for code smells using the corresponding software quality metrics and the rules explained in Section 4.1 (Tab.2).The tracing process produces an initial version of the software metrics dataset that is further discretized to facilitate the incoming matching process.Afterward, the preprocessed dataset is fed into the integrated WOA framework, which initializes a population of probable classification rules and performs exploitation and exploration process of the search space.The resulting classification rules are determined by the Fisher criterion and the performance on testing data is measured.

    5.2 Performance Measure

    We use a confusion matrix model to measure the performance of our algorithm on test data.The performance parameters of the detection framework are shown in Tab.4.

    Table 4:A confusion matrix model

    True positive (TP) indicates smell types detected correctly as a smell, false positive (FP) indicates non-smells detected incorrectly as a smell, True negative (TN) indicates non-smells detected correctly as it is not a smell, and false negative (FN) indicates smell types detected incorrectly as it is a non-smell.

    We use precision and recall (Eqs.(11) and (12)) to evaluate the performance of our proposed smell detection framework.Precision is the number of relevant code smells among the found ones,while recall is the number of the total amount of relevant code smells that were retrieved.

    Suppose that the proposed detection framework identifies 10 code smells in a system containing 14 modules (including both actual code smells and non-code smells).Of the 10 identified as code smells, 7 are code smells (TP), whereas the rest are not (FP).The model precision is 7/10,while its recall is 7/14.In this case, precision is “how beneficial the results of the detection model are,” and recall is “how full the results are.”

    5.3 Experimental Results

    Tab.5 reports the performance evaluations (confusion matrix) of each software system with 80% training and 20% testing of data.A confusion matrix was used to calculate precision and recall on the five software systems and showed promising results.Our proposed framework achieves both high precision and recall.

    Table 5:A confusion matrix of each software system

    5.4 Evaluation and Discussions

    Tab.6 compares the precision and recall between our proposed solution and different searchbased algorithms such as MOGP [8], GP [32], CCEA [33], Multiobjective Immune Algorithm(MOIAS) [60], and GA [61].The comparisons demonstrate the efficiency of the proposed solution in detecting code smells on large systems such as ArgoUML [42], Azure [43], and Xerces-J [46],and on medium systems such as Gantt [44] and Log4J [45] (Figs.4 and 5).The WOA classifier on the five software systems is better than the other optimization algorithms in terms of precision and recall, with averages of 94.42% and 93.4%, respectively (Tab.6).

    Table 6:The percentage of precision and recall of WOA and different search-based algorithms

    Figure 4:A comparison between WOA and other search-based algorithms using precision measure

    Next, the most optimal set of search agents in the final WOA population is utilized as the code smell classification rules.The best solutions for both medium and large systems are used to further analyze the software metrics that distinguish the nine code smell types listed in Section 2.Tab.7 provides the analysis results for both large and medium software systems used in experiments.Each type is characterized by one, two, or three software metrics.The ranges described in Tab.7 indicate the bins resulting from discretization of the search space.For example,long method code smell (LM) is defined by the presence of McCabe numbers greater than or equal to 40 and greater than 15 for large and medium systems, respectively.

    Figure 5:A comparison between WOA and other search-based algorithms using recall measure

    Table 7:The detection rules of code smell types for both large and medium systems

    6 Conclusion and Future Work

    Due to additional customer requests, software houses have to implement continuous change in software systems.Hence, it is necessary to avoid software engineering problems that arise during SDLC by discovering and determining the appropriate solutions.Code smells are critical software design problems that emerge from continuous changes.This research detects code smell by finding the optimal classification rules that characterize them.WOA is utilized to search for the best classification rules using the exploration and exploitation processes.The Fisher criterion guides the WOA through the search by measuring the fittest probable classification rules after matching with the training dataset.The proposed framework detects nine types of code smell on five open-source Java software projects.Experimental results demonstrate a precision of 94.42% and recall of 93.4%, which are enhanced over the previous techniques in the literature.The proposed framework provides an efficient and feasible detection model that increases software quality while minimizing maintainability time, expenses, and efforts.Additionally, our framework can define classification rules for these types in medium and large systems; they are further analyzed to distinguish the software metrics characterizing each type of the detected code smell.

    Future work includes verifying the validity of this framework with other types of code smells and testing it on more datasets.Another direction for future work is automatic correction of different types, which would be of a great help to software development teams and would minimize the SDLC time and expenditure.

    Funding Statement:The authors received no specific funding for this study.

    Conflicts of Interest:The authors declare that they have no conflicts of interest to report regarding the present study.

    亚洲av日韩在线播放| 精品久久久久久电影网| 99久久精品国产亚洲精品| 制服人妻中文乱码| 国产日韩欧美视频二区| 亚洲精品一二三| 欧美在线一区亚洲| 一本—道久久a久久精品蜜桃钙片| 亚洲精品久久午夜乱码| 热re99久久精品国产66热6| 午夜福利一区二区在线看| 51午夜福利影视在线观看| 国产成人91sexporn| 中文字幕av电影在线播放| 啦啦啦啦在线视频资源| 亚洲,欧美精品.| 国产精品 国内视频| 777米奇影视久久| 精品久久久精品久久久| 精品亚洲成国产av| 亚洲欧美一区二区三区黑人| 熟女少妇亚洲综合色aaa.| 2021少妇久久久久久久久久久| 亚洲国产精品国产精品| 一级毛片黄色毛片免费观看视频| 色综合欧美亚洲国产小说| 一本久久精品| 日本欧美视频一区| 大话2 男鬼变身卡| 亚洲精品国产一区二区精华液| 又黄又粗又硬又大视频| 国产淫语在线视频| 母亲3免费完整高清在线观看| 成年女人毛片免费观看观看9 | 又黄又粗又硬又大视频| 久久国产精品男人的天堂亚洲| 一级毛片黄色毛片免费观看视频| av网站在线播放免费| 女人爽到高潮嗷嗷叫在线视频| 自线自在国产av| 在线天堂中文资源库| av免费观看日本| 91老司机精品| 成年av动漫网址| 亚洲中文av在线| 免费在线观看黄色视频的| 校园人妻丝袜中文字幕| 999久久久国产精品视频| 精品酒店卫生间| 伊人亚洲综合成人网| 亚洲一区二区三区欧美精品| 亚洲视频免费观看视频| 99热网站在线观看| 亚洲美女黄色视频免费看| 亚洲天堂av无毛| 中文字幕色久视频| 亚洲国产精品一区三区| 一级毛片我不卡| 亚洲精品成人av观看孕妇| 久久人人97超碰香蕉20202| 国产精品香港三级国产av潘金莲 | 国产精品久久久人人做人人爽| 夫妻性生交免费视频一级片| 婷婷色麻豆天堂久久| 色婷婷av一区二区三区视频| 国产人伦9x9x在线观看| 无限看片的www在线观看| 蜜桃国产av成人99| 精品一品国产午夜福利视频| 免费观看人在逋| 中国三级夫妇交换| www日本在线高清视频| 日本欧美视频一区| av在线观看视频网站免费| 亚洲国产精品一区三区| 欧美成人精品欧美一级黄| 黄色视频不卡| 一本色道久久久久久精品综合| 又黄又粗又硬又大视频| 日本欧美视频一区| 一区二区三区精品91| 天堂8中文在线网| 久久精品久久精品一区二区三区| 下体分泌物呈黄色| 熟女av电影| 欧美精品一区二区免费开放| 丝袜美足系列| 男女无遮挡免费网站观看| 久久免费观看电影| 制服人妻中文乱码| 亚洲伊人色综图| 99国产综合亚洲精品| 一级毛片 在线播放| 最近手机中文字幕大全| 国产又色又爽无遮挡免| 欧美日韩视频精品一区| 久久精品国产综合久久久| 日本91视频免费播放| 国产免费福利视频在线观看| 两个人看的免费小视频| 亚洲精品一区蜜桃| 母亲3免费完整高清在线观看| 中文字幕最新亚洲高清| 999久久久国产精品视频| 老司机影院毛片| 各种免费的搞黄视频| 老司机亚洲免费影院| 秋霞伦理黄片| 婷婷色综合大香蕉| 大片免费播放器 马上看| 无遮挡黄片免费观看| 亚洲欧美一区二区三区黑人| 夫妻午夜视频| 九九爱精品视频在线观看| 免费高清在线观看日韩| 自拍欧美九色日韩亚洲蝌蚪91| av女优亚洲男人天堂| 久久天堂一区二区三区四区| 国产精品秋霞免费鲁丝片| 亚洲综合精品二区| 国产色婷婷99| 日本午夜av视频| 毛片一级片免费看久久久久| 两个人免费观看高清视频| 一区二区三区精品91| 国产av国产精品国产| 亚洲国产精品国产精品| 丝袜人妻中文字幕| 中文字幕高清在线视频| 国产免费又黄又爽又色| 十八禁人妻一区二区| xxxhd国产人妻xxx| 一级爰片在线观看| 美女主播在线视频| av电影中文网址| 午夜免费观看性视频| 国产精品偷伦视频观看了| 亚洲精品av麻豆狂野| 涩涩av久久男人的天堂| av在线观看视频网站免费| 亚洲精品av麻豆狂野| 免费黄频网站在线观看国产| 亚洲精品视频女| xxxhd国产人妻xxx| 精品视频人人做人人爽| 69精品国产乱码久久久| 一区二区三区乱码不卡18| avwww免费| 亚洲精品自拍成人| 嫩草影院入口| 亚洲精华国产精华液的使用体验| 国产一区二区在线观看av| 不卡av一区二区三区| 成人午夜精彩视频在线观看| 日韩制服骚丝袜av| 久热爱精品视频在线9| 国产探花极品一区二区| 成人国产麻豆网| 日本欧美国产在线视频| a级片在线免费高清观看视频| 最黄视频免费看| 无限看片的www在线观看| 亚洲人成网站在线观看播放| 极品人妻少妇av视频| 亚洲国产精品成人久久小说| 美女高潮到喷水免费观看| 少妇的丰满在线观看| 国产精品免费视频内射| 免费高清在线观看日韩| 国产高清国产精品国产三级| 高清在线视频一区二区三区| 中文天堂在线官网| 大片免费播放器 马上看| avwww免费| 欧美人与性动交α欧美精品济南到| 欧美日韩国产mv在线观看视频| 欧美黑人精品巨大| 99久久精品国产亚洲精品| 最近2019中文字幕mv第一页| 最近中文字幕2019免费版| 国产精品欧美亚洲77777| 老司机靠b影院| 肉色欧美久久久久久久蜜桃| 两个人看的免费小视频| 国产亚洲av片在线观看秒播厂| 一级,二级,三级黄色视频| 啦啦啦视频在线资源免费观看| 亚洲第一av免费看| 最近最新中文字幕大全免费视频 | 日韩av不卡免费在线播放| 中文字幕人妻熟女乱码| 欧美国产精品一级二级三级| 欧美国产精品va在线观看不卡| 一个人免费看片子| 大陆偷拍与自拍| 亚洲伊人久久精品综合| 午夜福利视频精品| 18禁观看日本| 黄色一级大片看看| 日本午夜av视频| av在线播放精品| 三上悠亚av全集在线观看| 成年人免费黄色播放视频| 制服诱惑二区| 精品一区二区三区av网在线观看 | 女人被躁到高潮嗷嗷叫费观| 美女脱内裤让男人舔精品视频| 啦啦啦在线观看免费高清www| 下体分泌物呈黄色| 日韩一区二区视频免费看| 欧美人与性动交α欧美精品济南到| 在线 av 中文字幕| 老司机影院毛片| 久久午夜综合久久蜜桃| 男女午夜视频在线观看| 观看av在线不卡| 色婷婷久久久亚洲欧美| 国产精品一区二区在线观看99| √禁漫天堂资源中文www| 18禁观看日本| 香蕉国产在线看| 高清欧美精品videossex| 国产成人一区二区在线| 免费久久久久久久精品成人欧美视频| 男女午夜视频在线观看| 日本一区二区免费在线视频| 免费日韩欧美在线观看| 看免费成人av毛片| 久久影院123| 精品亚洲成a人片在线观看| 欧美精品一区二区大全| 欧美乱码精品一区二区三区| 亚洲中文av在线| 欧美少妇被猛烈插入视频| 亚洲国产精品国产精品| 在线观看免费午夜福利视频| 一区二区三区激情视频| 国产精品久久久久久人妻精品电影 | 黑人巨大精品欧美一区二区蜜桃| 香蕉国产在线看| 国产老妇伦熟女老妇高清| 精品酒店卫生间| 国产人伦9x9x在线观看| 在线观看免费视频网站a站| 午夜老司机福利片| 老司机靠b影院| 欧美在线一区亚洲| 一本大道久久a久久精品| 亚洲在久久综合| 国产亚洲欧美精品永久| tube8黄色片| 99精品久久久久人妻精品| 日韩 亚洲 欧美在线| 亚洲中文av在线| 国产高清国产精品国产三级| 久久精品aⅴ一区二区三区四区| 精品国产一区二区久久| 丝袜在线中文字幕| 国产精品偷伦视频观看了| 久久久久网色| 51午夜福利影视在线观看| 久久国产亚洲av麻豆专区| 午夜免费男女啪啪视频观看| 久久久久视频综合| 人人妻,人人澡人人爽秒播 | 亚洲综合色网址| 亚洲专区中文字幕在线 | 亚洲av成人不卡在线观看播放网 | 电影成人av| 久久精品国产综合久久久| 欧美人与善性xxx| 日本猛色少妇xxxxx猛交久久| 十八禁高潮呻吟视频| 亚洲熟女精品中文字幕| 麻豆精品久久久久久蜜桃| 亚洲国产精品一区二区三区在线| 夜夜骑夜夜射夜夜干| 黄色一级大片看看| 国产99久久九九免费精品| 欧美变态另类bdsm刘玥| 国产精品三级大全| 国产色婷婷99| 777米奇影视久久| 老熟女久久久| 日韩精品有码人妻一区| 18禁动态无遮挡网站| 国产极品天堂在线| 国产黄色视频一区二区在线观看| 永久免费av网站大全| 欧美乱码精品一区二区三区| 五月开心婷婷网| av一本久久久久| av在线老鸭窝| 国产成人欧美在线观看 | 大陆偷拍与自拍| 久久97久久精品| 1024香蕉在线观看| 欧美少妇被猛烈插入视频| 午夜影院在线不卡| 国产精品人妻久久久影院| 日韩制服丝袜自拍偷拍| 69精品国产乱码久久久| 飞空精品影院首页| 日本午夜av视频| 国产精品一二三区在线看| 老鸭窝网址在线观看| 亚洲四区av| 最近中文字幕2019免费版| 国产1区2区3区精品| 亚洲,欧美,日韩| 国产片内射在线| 欧美在线黄色| 一级片'在线观看视频| 十八禁高潮呻吟视频| 99精品久久久久人妻精品| 激情视频va一区二区三区| 男女边摸边吃奶| 国产精品嫩草影院av在线观看| 国产高清不卡午夜福利| 精品国产国语对白av| 欧美激情极品国产一区二区三区| 最近中文字幕高清免费大全6| 久久av网站| 男女国产视频网站| 国产精品国产av在线观看| 国产精品免费大片| 欧美黑人精品巨大| 男女高潮啪啪啪动态图| 久久天堂一区二区三区四区| 亚洲国产精品一区三区| 人人妻人人爽人人添夜夜欢视频| 两个人看的免费小视频| 男女床上黄色一级片免费看| 日韩成人av中文字幕在线观看| 欧美激情 高清一区二区三区| 男女国产视频网站| 欧美老熟妇乱子伦牲交| 久久影院123| 国产又色又爽无遮挡免| 国产日韩一区二区三区精品不卡| 宅男免费午夜| 黄片播放在线免费| 亚洲精品美女久久久久99蜜臀 | 国产精品免费视频内射| 这个男人来自地球电影免费观看 | 日本av免费视频播放| av国产久精品久网站免费入址| 人妻 亚洲 视频| bbb黄色大片| 在现免费观看毛片| 久久精品熟女亚洲av麻豆精品| 成人手机av| 日韩免费高清中文字幕av| 蜜桃在线观看..| 国产国语露脸激情在线看| 97人妻天天添夜夜摸| av有码第一页| 国产精品欧美亚洲77777| 九九爱精品视频在线观看| 久久久亚洲精品成人影院| 99久久综合免费| 国产成人午夜福利电影在线观看| 极品人妻少妇av视频| 黄网站色视频无遮挡免费观看| 欧美日韩一区二区视频在线观看视频在线| 青青草视频在线视频观看| 国产又爽黄色视频| 成人黄色视频免费在线看| 国产老妇伦熟女老妇高清| av有码第一页| 两个人看的免费小视频| 日韩视频在线欧美| 人人妻人人澡人人看| 国产亚洲av高清不卡| 夫妻性生交免费视频一级片| 国产在视频线精品| 最近最新中文字幕大全免费视频 | 亚洲第一av免费看| 一边亲一边摸免费视频| 少妇被粗大的猛进出69影院| 欧美久久黑人一区二区| 日本黄色日本黄色录像| 高清不卡的av网站| 欧美最新免费一区二区三区| 高清欧美精品videossex| 亚洲七黄色美女视频| 色婷婷久久久亚洲欧美| 日韩av在线免费看完整版不卡| 国产黄色视频一区二区在线观看| 一区二区三区精品91| 日韩一区二区三区影片| 欧美日韩视频精品一区| www.自偷自拍.com| 亚洲成国产人片在线观看| 国产精品久久久av美女十八| 美女扒开内裤让男人捅视频| kizo精华| 午夜免费男女啪啪视频观看| 成人影院久久| 欧美日本中文国产一区发布| 精品国产国语对白av| 国产熟女欧美一区二区| 日本欧美国产在线视频| 亚洲精品自拍成人| 婷婷成人精品国产| 精品一区二区免费观看| 日韩视频在线欧美| 搡老乐熟女国产| 亚洲成人国产一区在线观看 | 欧美精品av麻豆av| 女人精品久久久久毛片| av在线播放精品| 青春草视频在线免费观看| 一区二区av电影网| 在现免费观看毛片| 国产在线视频一区二区| 午夜久久久在线观看| 在线观看人妻少妇| 成人国产麻豆网| 啦啦啦啦在线视频资源| 久久久久久久久久久久大奶| 夜夜骑夜夜射夜夜干| 成人免费观看视频高清| 亚洲国产精品一区三区| 日韩精品免费视频一区二区三区| 日本午夜av视频| 亚洲欧美中文字幕日韩二区| 国产av精品麻豆| 一二三四中文在线观看免费高清| 欧美黄色片欧美黄色片| 大片电影免费在线观看免费| 久久人人97超碰香蕉20202| 国产精品一国产av| 国产乱来视频区| 老鸭窝网址在线观看| 最近手机中文字幕大全| 久久久久久久久久久久大奶| 婷婷成人精品国产| av片东京热男人的天堂| 精品一品国产午夜福利视频| 人人妻人人添人人爽欧美一区卜| 亚洲av电影在线进入| 日本欧美国产在线视频| 亚洲人成电影观看| 九九爱精品视频在线观看| 一本色道久久久久久精品综合| 久久婷婷青草| 久久久久久久精品精品| 美女脱内裤让男人舔精品视频| 老司机影院成人| 汤姆久久久久久久影院中文字幕| 天天躁夜夜躁狠狠躁躁| 亚洲av福利一区| 1024香蕉在线观看| 男男h啪啪无遮挡| 成年美女黄网站色视频大全免费| 亚洲五月色婷婷综合| 亚洲一卡2卡3卡4卡5卡精品中文| 无遮挡黄片免费观看| 亚洲欧洲日产国产| 亚洲成av片中文字幕在线观看| 男男h啪啪无遮挡| 欧美xxⅹ黑人| 国产精品一二三区在线看| 久久久久精品久久久久真实原创| 巨乳人妻的诱惑在线观看| 搡老乐熟女国产| 大香蕉久久网| 狂野欧美激情性xxxx| 国产在线一区二区三区精| 久久久久国产一级毛片高清牌| av视频免费观看在线观看| 综合色丁香网| 中文字幕另类日韩欧美亚洲嫩草| 秋霞在线观看毛片| 久久久精品国产亚洲av高清涩受| 日韩电影二区| 国产亚洲午夜精品一区二区久久| 亚洲精品美女久久av网站| 99九九在线精品视频| av网站免费在线观看视频| 麻豆乱淫一区二区| 国产精品偷伦视频观看了| 国产精品蜜桃在线观看| 最近最新中文字幕免费大全7| av视频免费观看在线观看| 观看美女的网站| 午夜福利在线免费观看网站| 九色亚洲精品在线播放| 亚洲一卡2卡3卡4卡5卡精品中文| 午夜影院在线不卡| 国产日韩一区二区三区精品不卡| 成人亚洲欧美一区二区av| 日本欧美国产在线视频| 十八禁人妻一区二区| 麻豆精品久久久久久蜜桃| 精品国产乱码久久久久久小说| 国产欧美日韩一区二区三区在线| 日韩一卡2卡3卡4卡2021年| 男人添女人高潮全过程视频| 国产一区二区 视频在线| 国产免费现黄频在线看| 亚洲欧美一区二区三区国产| 别揉我奶头~嗯~啊~动态视频 | 欧美国产精品va在线观看不卡| 只有这里有精品99| 男女午夜视频在线观看| 制服人妻中文乱码| 大陆偷拍与自拍| 侵犯人妻中文字幕一二三四区| 看非洲黑人一级黄片| 国产成人系列免费观看| www.熟女人妻精品国产| www.av在线官网国产| 一本大道久久a久久精品| 免费人妻精品一区二区三区视频| 国产亚洲精品第一综合不卡| 久久午夜综合久久蜜桃| 国产精品av久久久久免费| 欧美成人午夜精品| 亚洲国产av新网站| 80岁老熟妇乱子伦牲交| 黄片播放在线免费| 天天添夜夜摸| 亚洲精品第二区| 国产麻豆69| 人妻 亚洲 视频| av卡一久久| 久久久久久久久久久久大奶| www.自偷自拍.com| 国产亚洲最大av| 在线天堂中文资源库| av不卡在线播放| 国产免费福利视频在线观看| 国产精品一二三区在线看| 性少妇av在线| 欧美激情 高清一区二区三区| 天天躁日日躁夜夜躁夜夜| 十八禁人妻一区二区| av在线app专区| 精品第一国产精品| 90打野战视频偷拍视频| 99久久99久久久精品蜜桃| 国产有黄有色有爽视频| 国产男女内射视频| 老司机影院成人| 精品国产乱码久久久久久男人| 99九九在线精品视频| 亚洲精品美女久久av网站| 日本av手机在线免费观看| 捣出白浆h1v1| 少妇猛男粗大的猛烈进出视频| 亚洲成人av在线免费| 日本欧美国产在线视频| 一级片免费观看大全| 最近2019中文字幕mv第一页| 国产精品国产三级专区第一集| 99热全是精品| 1024视频免费在线观看| 亚洲欧美一区二区三区国产| 最新的欧美精品一区二区| 热re99久久精品国产66热6| 精品国产乱码久久久久久小说| 亚洲av在线观看美女高潮| 18禁裸乳无遮挡动漫免费视频| 青春草视频在线免费观看| 在线观看国产h片| 久久鲁丝午夜福利片| 午夜91福利影院| 亚洲一码二码三码区别大吗| 狂野欧美激情性bbbbbb| 亚洲熟女精品中文字幕| 亚洲图色成人| 啦啦啦在线观看免费高清www| 热99久久久久精品小说推荐| 校园人妻丝袜中文字幕| 国产男女超爽视频在线观看| 国产精品久久久久久精品电影小说| 成人国产麻豆网| 1024香蕉在线观看| 国产精品久久久久成人av| 观看av在线不卡| 少妇被粗大的猛进出69影院| 亚洲综合精品二区| 观看av在线不卡| 少妇被粗大的猛进出69影院| 丰满少妇做爰视频| 91国产中文字幕| 欧美97在线视频| 午夜日韩欧美国产| 91国产中文字幕| 男女无遮挡免费网站观看| 午夜日韩欧美国产| 91aial.com中文字幕在线观看| 精品视频人人做人人爽| 精品国产国语对白av| 国产一区二区三区av在线| 日韩一区二区视频免费看| 日韩欧美精品免费久久| 国产 一区精品| 日韩精品免费视频一区二区三区| 99九九在线精品视频| 国产 一区精品| 考比视频在线观看| 亚洲自偷自拍图片 自拍| 国产极品粉嫩免费观看在线| 亚洲欧美成人精品一区二区| 老司机亚洲免费影院| 69精品国产乱码久久久| 赤兔流量卡办理| 欧美日韩国产mv在线观看视频| 波多野结衣一区麻豆| 赤兔流量卡办理| 欧美国产精品va在线观看不卡| 人妻一区二区av|