Same is a tool to find duplicate lines in multiple text files. Very useful to find and fix CopyAndPasteProgramming. It has been designed by MarnixKlooster to be simple, portable, and fast.
an EmacsLisp mode is also available at http://ch.twi.tudelft.nl/~mostert/lisp.html made by JeroenMostert
See also: tools with similar goals: CategoryDuplicationFindingTool(Originally on OnceAndOnlyOnce:)
Indeed it is possible to build a tool for mechanically removing
duplicated methods and code - I built such a thing for the
language Self (see http://www.guruinfo.co.uk). The tool did
as much refactoring of duplicated code as it could, without
manual intervention to tell the tool what made sense. A lot of
the time the results were surprisingly good; hierarchies constructed
by this tool were often just what you'd expect, showing that basing
hierarchies simply on removal of duplication leads to 'good'
hierarchies. The results of trying to automatically refactor methods
was (even) more contentious though. For example, although '+ 1' is
duplicated a lot, do you really want to replace it with a method
called 'incremented' (or something similar) just so that the concept
of incrementing is expressed only once? --IvanMoore
Funny, while working on a recent project, I did exactly that. If the '+ 1' is happening frequently on the same object, it probably wants to have such a method... at the very least, it might better explain what '+ 1' represents: next element of a list? next highest priority? one second less till doomsday? :) --WilliamUnderwood
See http://www.xpdeveloper.com/xpdwiki/Wiki.jsp?page=SameTool for a fork of Same that is faster and scales better when you have to handle hundreds of thousands of lines of code.