The Experts below are selected from a list of 12084 Experts worldwide ranked by ideXlab platform
Chanchal K. Roy - One of the best experts on this subject based on the ideXlab platform.
-
clcdsa cross language code Clone Detection using syntactical features and api documentation
Automated Software Engineering, 2019Co-Authors: Kawser Wazed Nafi, Chanchal K. Roy, Tonny Shekha Kar, Banani Roy, Kevin A SchneiderAbstract:Software Clones are detrimental to software maintenance and evolution and as a result many Clone detectors have been proposed. These tools target Clone Detection in software applications written in a single programming language. However, a software application may be written in different languages for different platforms to improve the application's platform compatibility and adoption by users of different platforms. Cross language Clones (CLCs) introduce additional challenges when maintaining multi-platform applications and would likely go undetected using existing tools. In this paper, we propose CLCDSA, a cross language Clone detector which can detect CLCs without extensive processing of the source code and without the need to generate an intermediate representation. The proposed CLCDSA model analyzes different syntactic features of source code across different programming languages to detect CLCs. To support large scale Clone Detection, the CLCDSA model uses an action filter based on cross language API call similarity to discard non-potential Clones. The design methodology of CLCDSA is two-fold: (a) it detects CLCs on the fly by comparing the similarity of features, and (b) it uses a deep neural network based feature vector learning model to learn the features and detect CLCs. Early evaluation of the model observed an average precision, recall and F-measure score of 0.55, 0.86, and 0.64 respectively for the first phase and 0.61, 0.93, and 0.71 respectively for the second phase which indicates that CLCDSA outperforms all available models in detecting cross language Clones.
-
ccaligner a token based large gap Clone detector
International Conference on Software Engineering, 2018Co-Authors: Pengcheng Wang, Jeffrey Svajlenko, Chanchal K. RoyAbstract:Copying code and then pasting with large number of edits is a common activity in software development, and the pasted code is a kind of complicated Type-3 Clone. Due to large number of edits, we consider the Clone as a large-gap Clone. Large-gap Clone can reflect the extension of code, such as change and improvement. The existing state-of-the-art Clone detectors suffer from several limitations in detecting large-gap Clones. In this paper, we propose a tool, CCAligner, using code window that considers e edit distance for matching to detect large-gap Clones. In our approach, a novel e-mismatch index is designed and the asymmetric similarity coefficient is used for similarity measure. We thoroughly evaluate CCAligner both for large-gap Clone Detection, and for general Type-1, Type-2 and Type-3 Clone Detection. The results show that CCAligner performs better than other competing tools in large-gap Clone Detection, and has the best execution time for 10MLOC input with good precision and recall in general Type-1 to Type-3 Clone Detection. Compared with existing state-of-the-art tools, CCAligner is the best performing large-gap Clone Detection tool, and remains competitive with the best Clone detectors in general Type-1, Type-2 and Type-3 Clone Detection.
-
The NiCad Clone Detector
2013Co-Authors: James R. Cordy, Chanchal K. RoyAbstract:Abstract—The NiCad Clone Detector is a scalable, flexible Clone Detection tool designed to implement the NiCad (Automated Detection of Near-Miss Intentional Clones) hybrid Clone Detection method in a convenient, easy-to-use commandline tool that can easily be embedded in IDEs and other environments. It takes as input a source directory or directories to be checked for Clones and a configuration file specifying the normalization and filtering to be done, and provides output results in both XML form for easy analysis and HTML form for convenient browsing. NiCad handles a range of languages and normalizations, and is designed to be easily extensible using a component-based plugin architecture. It is scalable to very large systems and has been used to analyze, for example, all 47 releases of FreeBSD (60 million lines) as a single system. Keywords-tools, Clone Detection, NiCad, plugin architectur
-
java bytecode Clone Detection via relaxation on code fingerprint and semantic web reasoning
International Workshop on Software Clones, 2012Co-Authors: Iman Keivanloo, Chanchal K. Roy, Juergen RillingAbstract:While finding Clones in source code has drawn considerable attention, there has been only very little work in finding similar fragments in binary code and intermediate languages, such as Java bytecode. Some recent studies showed that it is possible to find distinct sets of Clone pairs in bytecode representation of source code, which are not always detectable at source code-level. In this paper, we present a bytecode Clone Detection approach, called SeByte, which exploits the benefits of compilers (the bytecode representation) for detecting a specific type of semantic Clones in Java bytecode. SeByte is a hybrid metric-based approach that takes advantage of both, Semantic Web technologies and Set theory. We use a two-step analysis process: (1) Pattern matching via Semantic Web querying and reasoning, and (2) Content matching, using Jaccard coefficient for set similarity measurement. Semantic Web-based pattern matching helps us to find method blocks which share similar patterns even in case of extreme dissimilarity (e.g., numerous repetitions or large gaps). Although it leads to high recall, it gives high false positive rate. We thus use the content matching (via Jaccard) to reduce false positive rate by focusing on content semantic resemblance. Our evaluation of four Java systems and five other tools shows that SeByte can detect a large number of semantic Clones that are either not detected or supported by source code based Clone detectors.
-
towards flexible code Clone Detection management and refactoring in ide
International Workshop on Software Clones, 2011Co-Authors: Minhaz F Zibran, Chanchal K. RoyAbstract:In this paper, we propose an IDE-based Clone management system to flexibly detect, manage, and refactor both exact and near-miss code Clones. Using a k-difference hybrid suffix tree algorithm we can efficiently detect both exact and near-miss Clones. We have implemented the algorithm as a plugin to the Eclipse IDE, and have been extending this for real-time code Clone management with semi-automated refactoring support during the actual development process.
James R. Cordy - One of the best experts on this subject based on the ideXlab platform.
-
Light-Weight Ontology Alignment using Best-Match Clone Detection
2020Co-Authors: Paul L Geesaman, James R. Cordy, Amal ZouaqAbstract:Abstract-Ontologies are a key component of the Semantic Web, providing a common basis for representing and exchanging domain meaning in web documents and resources. Ontology alignment is the problem of relating the elements of two formal ontologies for a semantic domain, in order to identify common concepts and relationships represented using different terminology or language, and thus allow meaningful communication and exchange of documents and resources represented using different ontologies for the same domain. Many algorithms have been proposed for ontology alignment, each with their own strengths and weaknesses. The problem is in many ways similar to nearmiss Clone Detection: while much of the description of concepts in two ontologies may be similar, there can be differences in structure or vocabulary that make similarity Detection challenging. Based on our previous work extending Clone Detection to modelling languages such as WSDL using contextualization, in this work we apply near-miss Clone Detection to the problem of ontology alignment, and use the new notion of "best-match" Clone Detection to achieve results similar to many existing ontology alignment algorithms when applied to standard benchmarks
-
The NiCad Clone Detector
2013Co-Authors: James R. Cordy, Chanchal K. RoyAbstract:Abstract—The NiCad Clone Detector is a scalable, flexible Clone Detection tool designed to implement the NiCad (Automated Detection of Near-Miss Intentional Clones) hybrid Clone Detection method in a convenient, easy-to-use commandline tool that can easily be embedded in IDEs and other environments. It takes as input a source directory or directories to be checked for Clones and a configuration file specifying the normalization and filtering to be done, and provides output results in both XML form for easy analysis and HTML form for convenient browsing. NiCad handles a range of languages and normalizations, and is designed to be easily extensible using a component-based plugin architecture. It is scalable to very large systems and has been used to analyze, for example, all 47 releases of FreeBSD (60 million lines) as a single system. Keywords-tools, Clone Detection, NiCad, plugin architectur
-
models are code too near miss Clone Detection for simulink models
International Conference on Software Maintenance, 2012Co-Authors: Manar H Alalfi, James R. Cordy, Thomas R Dean, Matthew Stephan, Andrew StevensonAbstract:While graph-based techniques show good results in finding exactly similar subgraphs in graphical models, they have great difficulty in finding near-miss matches. Text-based Clone detectors, on the other hand, do very well with near-miss matching in source code. In this paper we introduce SIMONE, an adaptation of the mature text-based code Clone detector NICAD to the efficient identification of structurally meaningful near-miss subsystem Clones in graphical models. By transforming graph-based models to normalized text form, SIMONE extends NICAD to identify near-miss subsystem Clones in Simulink models, uncovering important model similarities that are difficult to find in any other way.
-
near miss function Clones in open source software an empirical study
Working Conference on Reverse Engineering, 2010Co-Authors: Chanchal K. Roy, James R. CordyAbstract:The new hybrid Clone Detection tool NICAD combines the strengths and overcomes the limitations of both text-based and AST-based Clone Detection techniques and exploits novel applications of a source transformation system to yield highly accurate identification of Cloned code in software systems. In this paper, we present an in-depth study of near-miss function Clones in open source software using NICAD. We examine more than 20 open source C, Java and Cn systems, including the entire Linux Kernel, Apache httpd, J2SDK-Swing and db4o and compare their use of Cloned code in several different dimensions, including language, Clone size, Clone similarity, Clone location and Clone density both by proportion of Cloned functions and lines of Cloned code. We manually verify all detected Clones and provide a complete catalogue of different Clones in an online repository in a variety of formats. These validated results can be used as a cloning reference for these systems and as a benchmark for evaluating other Clone Detection tools. Copyright © 2009 John Wiley & Sons, Ltd. In this paper we provide an empirical study of function Clones in more than 20 open source C, Java and Cn systems of varying kinds and sizes including the entire Linux Kernel, using the new hybrid Clone Detection method, NICAD. We manually verify all the detected Clones and provide a complete catalogue of the different Clones in an online repository in a variety of formats. Our studies show that there are a large number of near-miss function Clones in those systems. Copyright © 2009 John Wiley & Sons, Ltd.
-
comparison and evaluation of code Clone Detection techniques and tools a qualitative approach
Science of Computer Programming, 2009Co-Authors: Chanchal K. Roy, James R. Cordy, Rainer KoschkeAbstract:Over the last decade many techniques and tools for software Clone Detection have been proposed. In this paper, we provide a qualitative comparison and evaluation of the current state-of-the-art in Clone Detection techniques and tools, and organize the large amount of information into a coherent conceptual framework. We begin with background concepts, a generic Clone Detection process and an overall taxonomy of current techniques and tools. We then classify, compare and evaluate the techniques and tools in two different dimensions. First, we classify and compare approaches based on a number of facets, each of which has a set of (possibly overlapping) attributes. Second, we qualitatively evaluate the classified techniques and tools with respect to a taxonomy of editing scenarios designed to model the creation of Type-1, Type-2, Type-3 and Type-4 Clones. Finally, we provide examples of how one might use the results of this study to choose the most appropriate Clone Detection tool or technique in the context of a particular set of goals and constraints. The primary contributions of this paper are: (1) a schema for classifying Clone Detection techniques and tools and a classification of current Clone detectors based on this schema, and (2) a taxonomy of editing scenarios that produce different Clone types and a qualitative evaluation of current Clone detectors based on this taxonomy.
Rainer Koschke - One of the best experts on this subject based on the ideXlab platform.
-
Toward a Code-Clone Search through the Entire Lifecycle of a Software Product
2015Co-Authors: Gabriele Taentzer, Rainer Koschke, Yoshiki Higo, Tiziana Margaria, Julia Padberg, Toshihiro KamiyaAbstract:Abstract: This paper presents a Clone-Detection method/tool currently under devel-opment. This tool is useful as a code-Clone search through the entire lifecycle of a software product; The tool searches code examples and analyzes of code Clones in both preventive and postmortem ways[LRHK10]. The approach is based on a sequence equivalence on execution paths[Kam13] and extends the equivalence to include gaps, thus type-3[BKA+07] Clone Detection. Each of the detected Clones is a sub-sequence of an execution path of a given program, in other words, a set of code fragments of multiple procedures (methods) which can be executed in a run of the program. The approach is relaxed in terms of adaptability to incomplete (not-yet-finished) code, but also makes use of concrete information such as types (including hierarchy) and dynamic dispatch when such information is available
-
Reverse Engineering Variability in Source Code Using Clone Detection: A Case Study for Linux Variants of Consumer Electronic Devices
2012 19th Working Conference on Reverse Engineering, 2012Co-Authors: Armijn Hemel, Rainer KoschkeAbstract:The Consumer Electronics Working Group (CEWG) in the Linux Foundation has identified several problems in the re-use process of embedded Linux software for consumer electronic devices. Among these is the increasing fragmentation of Linux derivatives. Vendors of electronic devices copy the Linux sources and make their modifications to adapt it to their own devices, but fail to back port their modifications to the mainstream Linux sources. Likewise, later improvements of the Linux sources are not integrated into the vendors' variants. CEWG launched the Long Term Support Initiative (LTSI) for an industry-managed tree of the Linux sources, maintained by CEWG, that is based on the long-term stable kernel tree annually updated with the latest mainstream kernel version to address their needs. In order to justify this initiative, CEWG asked us to investigate whether and if so how much non-upstream code can be found in industry products and to which extent to and for what part of the kernel. We used large-scale Clone Detection techniques to compare various Linux versions to their vendor-specific variants. We found many changes that were not back ported. Some of these changes were even found in Linux subsystems where neither we nor people from the Linux Foundation would expect them. We also found instances of defects fixed in the mainstream kernel that were not integrated into the vendors' code. Overall, our investigation provides enough evidence to support the need for an LTSI and better collaboration among Linux developers both of the mainstream and the vendor variants.
-
comparison and evaluation of code Clone Detection techniques and tools a qualitative approach
Science of Computer Programming, 2009Co-Authors: Chanchal K. Roy, James R. Cordy, Rainer KoschkeAbstract:Over the last decade many techniques and tools for software Clone Detection have been proposed. In this paper, we provide a qualitative comparison and evaluation of the current state-of-the-art in Clone Detection techniques and tools, and organize the large amount of information into a coherent conceptual framework. We begin with background concepts, a generic Clone Detection process and an overall taxonomy of current techniques and tools. We then classify, compare and evaluate the techniques and tools in two different dimensions. First, we classify and compare approaches based on a number of facets, each of which has a set of (possibly overlapping) attributes. Second, we qualitatively evaluate the classified techniques and tools with respect to a taxonomy of editing scenarios designed to model the creation of Type-1, Type-2, Type-3 and Type-4 Clones. Finally, we provide examples of how one might use the results of this study to choose the most appropriate Clone Detection tool or technique in the context of a particular set of goals and constraints. The primary contributions of this paper are: (1) a schema for classifying Clone Detection techniques and tools and a classification of current Clone detectors based on this schema, and (2) a taxonomy of editing scenarios that produce different Clone types and a qualitative evaluation of current Clone detectors based on this taxonomy.
-
Supporting the Grow-and-Prune Model in Software Product Lines Evolution Using Clone Detection
2008 12th European Conference on Software Maintenance and Reengineering, 2008Co-Authors: Thilo Mende, Felix Beckwermert, Rainer Koschke, Gerald MeierAbstract:Software product lines (SPL) can be used to create and maintain different variants of software-intensive systems by explicitly managing variability. Often, SPLs are organized as an SPL core, common to all products, upon which product-specific components are built. Following the so called grow-and-prune model, SPLs may be evolved by copy&paste at large scale. New products are created from existing ones and existing products are enhanced with functionalities specific to other products by copying and pasting code between product-specific code. To regain control of this unmanaged growth, such code may be pruned, that is, identified and refactored into core components upon success. This paper describes tool support for the grow-and- prune model in the evolution of software product lines by identifying similar functions which can be moved to the core. These functions are identified in two steps. First, token-based Clone Detection is used to detect pairs of functions sharing code. Second, Levenshtein distance measures the textual similarity among these functions. Sufficient similarity at function level is then lifted to the architectural level. The approach is evaluated by three case studies, one using an open source email client to simulate the initial creation of an SPL, and two monitoring existing industrial product lines from the embedded domain.
-
comparison and evaluation of Clone Detection tools
IEEE Transactions on Software Engineering, 2007Co-Authors: S Bellon, Rainer Koschke, Giuliano Antoniol, Jens Krinke, Ettore MerloAbstract:Many techniques for detecting duplicated source code (software Clones) have been proposed in the past. However, it is not yet clear how these techniques compare in terms of recall and precision as well as space and time requirements. This paper presents an experiment that evaluates six Clone detectors based on eight large C and Java programs (altogether almost 850 KLOC). Their Clone candidates were evaluated by one of the authors as an independent third party. The selected techniques cover the whole spectrum of the state-of-the-art in Clone Detection. The techniques work on text, lexical and syntactic information, software metrics, and program dependency graphs.
Stan Jarzabek - One of the best experts on this subject based on the ideXlab platform.
-
Efficient token based Clone Detection with flexible tokenization
The 6th Joint Meeting on European software engineering conference and the ACM SIGSOFT symposium on the foundations of software engineering companion p, 2007Co-Authors: Hamid Abdul Basit, Simon J. Puglisi, William F. Smyth, Andrew Turpin, Stan JarzabekAbstract:Code Clones are similar code fragments that occur at multiple locations in a software system. Detection of code Clones provides useful information for maintenance, reengineering, program understanding and reuse. Several techniques have been proposed to detect code Clones. These techniques differ in the code representation used for analysis of Clones, ranging from plain text to parse trees and program dependence graphs. Clone Detection based on lexical tokens involves minimal code transformation and gives good results, but is computationally expensive because of the large number of tokens that need to be compared. We explored string algorithms to find suitable data structures and algorithms for efficient token based Clone Detection and implemented them in our tool Repeated Tokens Finder (RTF). Instead of using suffix tree for string matching, we use more memory efficient suffix array. RTF incorporates a suffix array based linear time algorithm to detect string matches. It also provides a simple and customizable tokenization mechanism. Initial analysis and experiments show that our Clone Detection is simple, scalable, and performs better than the previous well-known tools.
Xuemin Sherman Shen - One of the best experts on this subject based on the ideXlab platform.
-
energy and memory efficient Clone Detection in wireless sensor networks
IEEE Transactions on Mobile Computing, 2016Co-Authors: Zhongming Zheng, Zhigang Chen, Xuemin Sherman ShenAbstract:In this paper, we propose an energy-efficient location-aware Clone Detection protocol in densely deployed WSNs, which can guarantee successful Clone attack Detection and maintain satisfactory network lifetime. Specifically, we exploit the location information of sensors and randomly select witnesses located in a ring area to verify the legitimacy of sensors and to report detected Clone attacks. The ring structure facilitates energy-efficient data forwarding along the path towards the witnesses and the sink. We theoretically prove that the proposed protocol can achieve $100$ percent Clone Detection probability with trustful witnesses. We further extend the work by studying the Clone Detection performance with untrustful witnesses and show that the Clone Detection probability still approaches $98$ percent when $10$ percent of witnesses are compromised. Moreover, in most existing Clone Detection protocols with random witness selection scheme, the required buffer storage of sensors is usually dependent on the node density, i.e., $O(\sqrt{n})$ , while in our proposed protocol, the required buffer storage of sensors is independent of $n$ but a function of the hop length of the network radius $h$ , i.e., $O(h)$ . Extensive simulations demonstrate that our proposed protocol can achieve long network lifetime by effectively distributing the traffic load across the network.