Code Clone Analysis: Research, Tools, and Practices
Book information
Description
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
Similar books
MySQL® Notes for Professionals book
2018 · PDF
MrExcel 2022: Boosting Excel
2022 · PDF
MrExcel 2022: Boosting Excel
2022 · PDF
Session C11: Ancient Cultural Landscapes in South Europe – their Ecological Setting and Evolution, Session C22: Gardeners from South America, Session S04: Agro-Pastoralism and Early Metallurgy Sessions, Session WS29: The Idea of Enclosure in Recent Iberian Prehistory, Session C88: Rhytmes et causalites des dynamiques de l'anthropisation en Europe entre 6500 ET 500 BC: Hypotheses socio-culturelles et/ou climatiques: Proceedings of the XV UISPP World Congress (Lisbon 4-9 September 2006) / Actes du XV Congrès Mondial (Lisbonne 4-9 Septembre 2006) Vol.36
2010 · PDF
THE BRITISH ARMY IN INDIA: ITS PRESERVATION BY AN APPROPRIATE CLOTHING, HOUSING, LOCATING, RECREATIVE EMPLOYMENT, AND HOPEFUL ENCOURAGEMENT OF THE TROOPS. with AN APPENDIX ON INDIA : THE CLIMATE OP ITS HILLS ; THE DEVELOPMENT OF ITS RESODRCBS, INDUSTRY, AND ARTS ; THE ADMINISTRATION OF JUSTICE ; THE BLACK ACT ; THE PROGRESS OF CHRISTIANITY ; THE TRAFFIC IN OPIUM ; THE VALUE OF INDIA ; PERMANENT CAUSES OF DISAFFECTION, AND OF THE RECENT REBELLION ; THE TRADITIONARY POLICY; MISGOVERNMENT BY NATIVE RULERS ; ANNEXATIONS OF THEIR TERRITORY, ETC.
1858 · PDF
Idries Shah 27 Books Collection : A Perfumed Scorpion, A Veiled Gazelle, Caravan of Dreams, Darkest England, Destination Mecca, Evenings with Idries Shah, Knowing How to Know, Learning How to Learn, Letters and Lectures of Idries Shah, Neglected aspects of Sufi study, Observations, Oriental Magic, Reflections, Seeker after Truth, Special Illumination, Special Problems in the study of Sufi ideas, Sufi thought and action, Tales of the Dervishes, The Dermis Probe, The Elephant in the Dark, The Englishman Handbook, Idries Shah Antology, The Magic Monastery, The natives are restless, wisdom of the Idiots PDF.
2022 · PDF
The travels of Capts. Lewis and Clarke from St. Louis, by way of the Missouri and Columbia rivers, to the Pacific ocean; performed in the years 1804, 1805 & 1806, by order of the government of the United States. Containing delineations of the manners, customs, religion, &c. of the Indians, comp. from various authentic sources, and original documents, and a summary of the Statistical view of the Indian nations, from the official communication of Meriwether Lewis. Illustrated with a map of the country, inhabited by the western tribes of Indians
1809 · PDF
Professional Linux kernel architecture ''Wrox programmer to programmer''--Cover. - ''What you are reading right now is the result of an evolution over more than seven years: After two years of writing, the first edition was published in German by Carl Hanser Verlag in 2003. It then described kernel 2.6.0. The test was used as a basis for the low-level design documentation for the EAL4+ security evaluation of Red Hat Enterprise Linux 5, requiring to update it to kernel 2.6.18 (if the EAL acronym does not mean anything to you, then Wikipedia is once more your friend). Hewlett-Packard sponsored the translation into English and has, thankfully, granted the rights to publish the result. Updates to kernel 2.6.24 were then performed specifically for this book''--P. ix
2008 · PDF