Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
CCFinder: a multilinguistic token-based code clone detection system for large scale source code
IEEE Transactions on Software Engineering
Tool Demonstration: Finding Duplicated Code Using Program Dependences
ESOP '01 Proceedings of the 10th European Symposium on Programming Languages and Systems
Software Quality Analysis by Code Clones in Industrial Legacy Software
METRICS '02 Proceedings of the 8th International Symposium on Software Metrics
On finding duplication and near-duplication in large software systems
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Partial Redesign of Java Software Systems Based on Clone Analysis
WCRE '99 Proceedings of the Sixth Working Conference on Reverse Engineering
Clone Detection Using Abstract Syntax Trees
ICSM '98 Proceedings of the International Conference on Software Maintenance
A Language Independent Approach for Detecting Duplicated Code
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
CP-Miner: Finding Copy-Paste and Related Bugs in Large-Scale Software Code
IEEE Transactions on Software Engineering
"Cloning Considered Harmful" Considered Harmful
WCRE '06 Proceedings of the 13th Working Conference on Reverse Engineering
Clone Detection Using Abstract Syntax Suffix Trees
WCRE '06 Proceedings of the 13th Working Conference on Reverse Engineering
DECKARD: Scalable and Accurate Tree-Based Detection of Code Clones
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Clone Detection via Structural Abstraction
WCRE '07 Proceedings of the 14th Working Conference on Reverse Engineering
Refactoring with wrangler, updated: data and process refactorings, and integration with eclipse
Proceedings of the 7th ACM SIGPLAN workshop on ERLANG
Clone detection and removal for Erlang/OTP within a refactoring environment
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
ERLANG Programming
Clone detection and elimination for Haskell
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
From test cases to FSMs: augmented test-driven development and property inference
Proceedings of the 9th ACM SIGPLAN workshop on Erlang
Improved testing through refactoring: experience from the protest project
TAIC PART'10 Proceedings of the 5th international academic and industrial conference on Testing - practice and research techniques
Incremental clone detection and elimination for erlang programs
FASE'11/ETAPS'11 Proceedings of the 14th international conference on Fundamental approaches to software engineering: part of the joint European conferences on theory and practice of software
Anti-unification for Unranked Terms and Hedges
Journal of Automated Reasoning
Hi-index | 0.00 |
A well-known bad code smell in refactoring and software maintenance is duplicated code, that is the existence of code clones, which are code fragments that are identical or similar to one another. Unjustified code clones increase code size, make maintenance and comprehension more difficult, and also indicate design problems such as a lack of encapsulation or abstraction. This paper describes an approach to detecting ‘similar’ code based on the notion of anti-unification, or least-general common abstraction. This mechanism is used for detecting code clones in Erlang programs, and is supplemented by a collection of refactorings to support user-controlled automatic clone removal. The similar code detection algorithm and refactorings are integrated within Wrangler, a tool developed at the University of Kent for interactive refactoring of Erlang programs. We conclude with a report on case studies and comparisons with other tools.