Clone Doctor: Software Clone Detection and Removal
A Tool that Detects and Removes Duplicate Code ("Clones") from Large Application Software Suites
Large software systems typically contain 10-25% redundant code. This redundancy is caused by the common programming practice of replicating (or cloning) existing code and then customizing to handle new demands on an application. An IT organization consequently spends corresponding amounts of its budget redundantly maintaining this code; a bug in one code fragment is also a bug in all of its hidden clones.
If redundant code were removed, the IT organization could spend the budget savings on solving new problems, enhancing the efficiency of the parent organization. The savings can be significant, because it typically costs at least $1.00 per sourceline per year to maintain application software in running order.
A System undergoing Clone Removal

The CloneDR is built with the DMS/Software Reengineering Toolkit. This technology identifies not only exact, but near-miss duplicates in software systems and can be used on a wide variety of languages.
Salion, Inc.
has used the CloneDR on their 250,000 line Java application.
With only partial clone removal, 27,000 lines of code were eliminated.
Languages:
C, C++, Java or COBOL or any other text-based computer language by providing a DMS domain language definition (see Language navigation box at left). (Because DMS uses Unicode, CloneDR will also process programs using arbitrary character sets, such as ASCII, EBCDIC, Russian or Japanese). The complete list of languages currently supported can be found here.
Detection:
Using compiler technology rather than string matching, it will find clones in spite of changed comments, white spaces, line breaks, case changes, different variable names and even different expressions in the clone body. It detects clones in code and/or data declarations.
Scale:
The technology allow thousands of files and millions of lines of source code to be collectively analyzed. CloneDR runs in parallel on systems with multiple processors because of its use of DMS, producing answers more quickly than any other existing clone detectors.
Processing:
Detected clones can be filtered by size, and automatically or interactively removed.
Replacement:
Clones can be removed by replacing them with equivalent preprocessor macros, type declarations, subroutine calls, or inlined subroutine calls (dependent on language and options), without changing the system functionality. The replacement (macro or subroutine body) is automatically generated from the detected clones.
Library:
A detected clone library can be mined for reusable abstractions to further enhance the efficiency of the programming staff.
Runtime:
The Enterprise version of CloneDR runs under Windows/NT on Intel uniprocessor as well Symmetric Multiprocessor (SMP) systems.
Evaluation version of Clone Analysis tool
For the popular languages of Java and COBOL, an evaluation clone analysis tool is available for download. The analysis tool will process large source systems to determine the percentage of clones, and will display a number of sample clones.
Further information:
For information about the CloneDR service, contact info@semdesigns.com. Enterprise licensing is also available.
On-line CloneDR presentations
Technical Publications related to DMS
Copyright 1995-2009 Semantic Designs, Incorporated
DMS and "Design Maintenance System" are registered trademarks of Semantic Designs, Inc.
The SD logo and "Semantic Designs" are registered service marks of Semantic Designs, Inc.
CloneDR, PARLANSE, JOVIAL2C, Thicket, Smart Differencer are trademarks of Semantic Designs, Inc.
The OMG logo is a registered trademark of the Object Management Group, Inc. in the United States and other countries.
To view our Privacy Policy, click here
Comments or problems: webmaster@semdesigns.com
