CP-Miner: finding copy-paste and related bugs in large-scale software code
By Zhenmin Li, Shan Lu, Suvda Myagmar, Yuanyuan Zhou. IEEE Transactions on Software Engineering, 2006
687 citations recorded by the source corpus.
Subfields: Computer Networks and Communications, Information Systems, Software
View Paper: https://www.semanticscholar.org/paper/82de0c1dadc711763ed7b4aa49e27c72522e6a49
How researchers see this paper
The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.
In Computer Networks and Communications
- Tien Nhut Nguyen
- Michael Pradel
- Hongyu Zhang
- Charles Sutton
- Heejo Lee
- Artur Andrzejak
- Lutz Büch
- Jibesh Patra
In Information Systems
- Charles Sutton
- Michael Pradel
- Tien Nhut Nguyen
- Miltiadis Allamanis
- Premkumar T. Devanbu
- Michele Tufano
- Denys Poshyvanyk
- Gabriele Bavota
In Software
- Michael Pradel
- Charles Sutton
- Tien Nhut Nguyen
- Miltiadis Allamanis
- Jibesh Patra
- Tung Thanh Nguyen
- Premkumar T. Devanbu
- Gabriele Bavota
Citations in the corpus
- VUDDY: A Scalable Approach for Vulnerable Code Clone Discovery (2017, background): “Due to CloSpan’s heuristics for improved efficiency, CP-Miner can scale to the size of moderately large code bases such as the Linux kernel, by consuming less memory space.”
- Achieving accuracy and scalability simultaneously in detecting application clones on Android markets (2014, background): “Token-based approaches [40, 28, 29, 22] parse a program to a sequence of tokens and compare these tokens to find clones.”
- A Large-Scale Study on Repetitiveness, Containment, and Composability of Routines in Open-Source Projects (2016, neutral): “The typical categories are text-based [16, 38], token-based [9, 27, 34, 42], tree-based [11, 25, 18], and graph-based [31, 36].”
- Juxtapp: A Scalable System for Detecting Code Reuse among Android Applications (2012, background): “A variety of approaches for static code clone detection have been proposed in the programming language literature for refactoring, finding bugs, and better understanding of the code [21, 27, 29, 25].”
- The road ahead for Mining Software Repositories (2008, background): “Other tools such as CP-Miner [40] can flag bugs by recognizing deviations in mined patterns for renaming variables when clonning (i.e., copy-and-paste) code.”
- Shaping program repair space with existing patches and similar code (2018, methodology): “Consistent modifications (changes) [17, 32] are those modifications that require the same changes to a variable at different locations at the same time.”
- Mining idioms from source code (2014, methodology): “ee fragments. The only work that we are aware of that uses language models for detecting textual patterns in code is Jacob and Tairas [21] that use n-grams to autocomplete code templates. Code clones [10, 25, 26, 27, 31, 43, 44] are related to code idiom mining, since they aim to nd highly similar c”
- Using web corpus statistics for program analysis (2014, methodology): “In this section we analyze the effectiveness of our corpusdriven filters in improving the accuracy of plagiarism reports from MOSS [25], a widely-used modern plagiarism detector that can process JavaScript programs.”
- NICAD: Accurate Detection of Near-Miss Intentional Clones Using Flexible Pretty-Printing and Code Normalization (2008, background): “Most lexical approaches [20, 4, 3, 25] (also called tokenbased approaches) are related to our work in the sense that like them we also use a similar sequence matching algorithm, and like them, we can also apply token transformation on the input.”
- Software clone detection: A systematic review (2013, background): “Furthermore, it is easier to reuse the existing code than to develop a fresh solution since new code may introduce new errors [99,152].”
- Asm2Vec: Boosting Static Representation Robustness for Binary Clone Search against Code Obfuscation and Compiler Optimization (2019, methodology): “CCFINDERX [42] and CP-Miner [43] use lexical tokens as features to find code clones.”
- Comparison and evaluation of code clone detection techniques and tools: A qualitative approach (2009, methodology): “b The tool seems to have external dependencies or to be a part of a larger tool set T [86] (PROCSSI), T [92] (recoder), L [29] (PMD), L [84] (CloSpan), L [37] (ConQAT), S [15] (DMS [13]), S [14] (Bauhaus), [20] (CPython, ANTLR), S [111] (Microsoft Phoenix Framework), LS [74] (CodeDOM of .”
- Deep learning code fragments for code clone detection (2016, background): “In this paper, our newfangled approach to mining internal source code representations gives way to a new, learning-based paradigm. classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full…”
- To What Extent do Deep Learning-based Code Recommenders Generate Predictions by Cloning Code from the Training Set? (2022, background): “[40] showed that copy-pasting code can reduce the programming effort.”
- Do code clones matter? (2009, background): “[26] present an approach to detect bugs based on inconsistent renaming of identifiers between clones.”
- An Empirical Study of Function Clones in Open Source Software (2008, background): “For example, if a bug is detected in a code fragment, all the fragments similar to it should be investigated to check for the same bug [19], and when enhancing or adapting a piece of code, duplicated fragments can multiply the work to be done [12].”
- A Survey on Software Clone Detection Research (2007, methodology): “Another state of the art token-based clone detection technique is CP-Miner [168, 169] where a frequent subsequence mining technique [3] is used for identifying a similar sequence of tokenized statements.”
- Learning-Based Recursive Aggregation of Abstract Syntax Trees for Code Clone Detection (2019, methodology): “Besides clone detection, the notion of code similarity can be used in other applications like bug detection [2], [6], [7], performance prediction of code fragments [8], and information retrieval in software contexts [9].”
- Learning to Fuzz: Application-Independent Fuzz Testing with Probabilistic, Generative Models of Input Data (2016, background): “, to find anomalies that correspond to bugs [36], for code completion [12], to recommend API usages [50], for plagiarism detection [31, 46], and to find copy-paste bugs [29].”