Code Clone Analysis : Research, Tools, and Practices
معرفی کتاب «Code Clone Analysis : Research, Tools, and Practices» نوشتهٔ Katsuro Inoue; Chanchal K. Roy، منتشرشده توسط نشر Springer Singapore در سال 2021. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است. «Code Clone Analysis : Research, Tools, and Practices» در دستهٔ بدون دستهبندی قرار دارد.
This is the first book organized around code clone analysis. To cover the broad studies of code clone analysis, this book selects past research results that are important to the progress of the field and updates them with new results and future directions. The first chapter provides an introduction for readers who are inexperienced in the foundation of code clone analysis, defines clones and related terms, and discusses the classification of clones. The chapters that follow are categorized into three main parts to present 1) major tools for code clone analysis, 2) fundamental topics such as evaluation benchmarks, clone visualization, code clone searches, and code similarities, and 3) applications to actual problems. Each chapter includes a valuable reference list that will help readers to achieve a comprehensive understanding of this diverse field and to catch up with the latest research results. Code clone analysis relies heavily on computer science theories such as pattern matching algorithms, computer language, and software metrics. Consequently, code clone analysis can be applied to a variety of real-world tasks in software development and maintenance such as bug finding and program refactoring. This book will also be useful in designing an effective curriculum that combines theory and application of code clone analysis in university software engineering courses. Preface Contents Introduction to Code Clone Introduction to Code Clone Analysis 1 What Is Code Clone? 2 Classification of Code Clone Types 2.1 Type-1 Clones 2.2 Type-2 Clones 2.3 Type-3 Clones 2.4 Type-4 Clones 3 Factors Affecting Code Clone Detection 4 Analysis Domain 5 Overview of Analysis Process 5.1 Front End 5.2 Matching 5.3 Reporting 5.4 Post-detection Analysis 6 Application of Code Clone Analysis 6.1 Program Maintenance 6.2 Program Comprehension 6.3 Evolution and Provenance Analysis 6.4 Plagiarism Detection 7 Conclusion References Code Clone Analysis Tools CCFinderX: An Interactive Code Clone Analysis Environment 1 Introduction 2 Code Clone Detection and Analysis Tools 3 Interactive Code Clone Analysis 3.1 Scatter Plot View 3.2 Clone Table View 3.3 File Table View 3.4 Source Text View 4 Structure of CCFinderX 4.1 Code-Clone Detection 5 Summary and Last Words References NiCad: A Modern Clone Detector 1 A Brief Overview of NiCad 1.1 The NiCad Method 1.2 Cross-Clones and Extensibility 2 Clone Analysis and Management Using NiCad 3 Future Research Directions References SourcererCC: Scalable and Accurate Clone Detection 1 Introduction 1.1 Motivation 1.2 Challenges 2 SourcererCC 2.1 Bag-of-Tokens Model 2.2 Filtering Heuristics to Reduce Candidate Comparisons 3 Distributed SourcererCC: Scaling SourcererCC Horizontally 4 Lessons Learned During Implementation 5 Going Forward References Oreo: Scaling Clone Detection Beyond Near-Miss Clones 1 Introduction 2 Overview 3 Machine Learning Model 4 Power of Action Filter: Detecting Complex Clones at Scale 4.1 Scalability Using Action Tokens 4.2 Semantics Captured by Action Tokens 5 Successful Applications of Oreo 6 Adapting Oreo Architecture to Different Scenarios References CCLearner: Clone Detection via Deep Learning 1 Introduction 2 Background 3 Approach 3.1 Feature Extraction 3.2 Training 3.3 Testing 4 Empirical Comparison with Existing Tools 4.1 Dataset Generation 4.2 Evaluation Metrics 4.3 Effectiveness Comparison of Clone Detection Approaches 5 CCLearner Sensitivity to Machine Learning Algorithm Used 6 Conclusion References Research Basis of Code Clone BigCloneBench 1 Introduction 2 Clone Benchmark Theory 2.1 Idealized Benchmark 2.2 Practical Benchmarking 3 Previous Benchmarks 4 Building BigCloneBench 5 Using BigCloneBench 6 BigCloneEval 7 BigCloneBench in the Literature 8 Looking Forward References Visualization of Clones 1 Introduction 2 User Goals and Information Needs 3 Facets of Visualization 4 Clone-Visualization Techniques 4.1 Visualization of Attribute Measures 4.2 Textual Visualizations 4.3 Temporal Data Visualizations 4.4 Bipartite Graph Visualization 4.5 Tree Data Visualization 4.6 Acyclic Graph Data Visualization 4.7 Cyclic Graph Visualization 5 Evaluation on the Basis of Clone Granularity and Relations 6 Discussion 7 Conclusions References Source Code Clone Search 1 Introduction 2 A Framework for Code Clone Search 2.1 Key Concepts 2.2 Framework Overview 3 Evaluation Framework for Code Clone Search Engines 3.1 Labeled Dataset 3.2 Measure Suite—Measures for Evaluation Ranked Clones 3.3 Measures for Highly Positive Ranked Results 3.4 Non-functional Performance Measures 4 Past, Present, and Future 5 Conclusion References Code Similarity in Clone Detection 1 Introduction 2 Background 2.1 Experimental Setup 2.2 Datasets 2.3 Updated Results 3 Tokenisation and Similarity 3.1 Approach 3.2 SOCO 3.3 OCD 4 Discussion 5 Related Work 6 Conclusions References Is Late Propagation a Harmful Code Clone Evolutionary Pattern? An Empirical Study 1 Introduction 2 Experimental Setup 2.1 Project Selection 2.2 Building Clone Genealogies 2.3 Classification of Genealogies 2.4 Detecting Faulty Clones 3 Case Study Results 3.1 RQ1: Are There Different Types of Late Propagation? 3.2 RQ2: Are Some Types of Late Propagation More Fault-Prone than Others? 3.3 RQ3: Which Type of Late Propagation Experiences the Highest Proportion of Faults? 3.4 RQ4: Can We Predict Whether a Clone Pair Would Experience Late Propagation? 4 Threats to Validity 5 Conclusion References A Summary on the Stability of Code Clones and Current Research Trends 1 Summary of Our Study 2 Research Activities Done After the Publication of Our Study 3 Future Research Directions 3.1 Investigation on Refactoring and Tracking of Micro-clones 3.2 Identifying Bugs and Devising Fix Patterns for both Regular- and Micro-clones 3.3 Comparative Stability of Regular- and Micro-clones 3.4 Industrialization of Clone Management Techniques 3.5 Minimizing Testing Effort After Clone Refactoring 3.6 Investigating Programmer Sensitivity of Cloned Co-change Candidates 4 Conclusion References Applying Clone Technology in Practice Identifying Refactoring-Oriented Clones and Inferring How They Can Be Merged 1 Introduction 2 Assisting Developers in Merging Clones 2.1 Detecting General Clones 2.2 Extracting Mergeable Parts in Clones 2.3 Characterizing Mergeable Parts 2.4 Examples of Merging Code Clones 3 Our Research Following Literature ch13higo2008jsme 3.1 Refactoring Assistance for Type-3 Clones 3.2 Merging Clones in a Fully Automated Manner 4 Directions of Future Research Related to Merging Clones 4.1 Revealing the Purpose of Merging Clones 4.2 More Advanced Automatic Refactoring of Clones References Clone Evolution and Management 1 Introduction 2 Clone Notifier 2.1 Extraction of Newly Introduced Code Clones 2.2 E-mail Notification 2.3 Web-Based Code Clone Viewer 3 Industrial Application 3.1 Results 3.2 Findings 3.3 Discussion 4 Improvements of Clone Notifier 4.1 Support for Type-3 Clone Detection Tools 4.2 Notification of Inconsistent Changes of Clones 4.3 Usage Scenario 4.4 Findings 5 Related Work 6 Summary References Sometimes, Cloning Is a Sound Design Decision! 1 Introduction: A Problem Reconsidered 2 Finding Code Cloning Patterns 2.1 Forking 2.2 Templating 2.3 Customization 3 Case Study 4 Recent Work 4.1 Cloning Within Linux SCSI Drivers 4.2 Cloning in Source Code and in Binaries 4.3 Recommending Clones for Refactoring 5 Summary References IWSC(D): From Research to Practice: A Personal Historical Retelling 1 Introduction 2 The Birth of IWSCD 3 Progression and Broadening 4 From Academia to Practice 4.1 Clone Detectors of Axivion and How They Came About 4.2 Practical Experiences with Axivion's Clone Detectors 5 Conclusions References
دانلود کتاب Code Clone Analysis : Research, Tools, and Practices