Google
 

Monday, June 18, 2007

Refactoring Tools

ref:http://www.refactoring.com/tools.html

Refactoring is a useful technique that's easily done manually. However tools can help refactoring go much faster. The first refactoring tool to be built was the Smalltalk Refactoring Browser. Smalltalk's simple yet powerful language certainly allowed such a sophisticated tool to be built relatively easily. Sadly Smalltalk isn't a mainstream commercial language.Since then we've seen refactoring tools appear for other languages, beginning in 2001 with several tools for Java that passed the refactoring rubicon.

On this site I list the various refactoring tools I know about. I don't attempt to review these tools in any depth. I just list them on this site to give you a starting point for your own investigations. I don't accept payment for listings, although I always appreciate a free copy:-) Occasionally I do some consulting for refactoring tools companies. The comments on tools are either mine or theirs (their's are in italics).

If you want to find out opinions about refactoring tools and their capabilities, I'd suggest a trip to the refactoring mailing list. If you have a tool you'd like to have mentioned then send details to me, but also do send to the mailing list - if for no other reason than it takes me a while to update this page.

Smalltalk

Smalltalk Refactoring Browser
The original refactoring tool, and still one of the most full-featured. To all those who think that PhD projects are doomed to irrelevance consider that these efforts led to a whole new capability in programming tools.

Java

IntelliJ Idea
This is a fully fledged IDE whose abilities go far beyond refactoring. I think they have succeeded in really moving forward the state of the art for IDEs. Suffice to say that when I use IntelliJ I almost don't miss Smalltalk any more :-)
Eclipse
An open source platform for IDE development - in many ways Eclipse is the Emacs for the 21st century. It ships with a built in Java IDE that includes a strong refactoring capability. The IBM commercial WSAD tool is built on Eclipse.
JFactor
A plug-in tool - works with JBuilder and Visual Age. Instantiations is a well respected outfit with a long history in Smalltalk and Java VM and compiler technology.
XRefactory
An emacs plug-in that offers code completion and other facilities as well as refactoring.
JBuilder
Borland's primary tool offers some refactoring support, but isn't over the rubicon yet. Various plug in tools offer deeper support.
RefactorIt
"A plug in for NetBeans, Sun Java Studio (fka Forte), Eclipse, JDeveloper and JBuilder and also usable as a stand-alone tool. Besides refactorings includes smart code searches, metrics and audits (i.e. smell detectors) with corrective actions."
JRefactory
A plug-in for JBuilder, NetBeans, and Elixir IDEs. Also does UML diagrams.
Transmogrify

JafaRefactor
A plug in for jEdit
CodeGuide
"CodeGuide offers advanced refactoring capabilities. It can rename methods, fields, variables, labels, classes or packages and automatically update all references throughout the project. It can move classes and packages and update all references. CodeGuide will check for potential problems prior to refactoring to make the refactorings safe. There are a couple of intelligent coding tools that will help you perform common tasks such as Javadoc stub insertion, setter & getter creation and import organization."

.NET

ReSharper
As well as refactoring it also brings many other features from the popular Java IntelliJ IDE to the the C# world, so much so that many of my buddies already can't manage without it.
C# Refactory
Fully integrated with Visual Studio - adds a very comforting "Refactoring" item to the edit menu.
Refactor!
A general .NET refactoring tool that supports both C# Visual Basic and C++. There are free versions available for C++, ASP.NET and Visual Basic.
Visual Assist X
Refactoring tool for Visual Studio handling all three .NET languages.
JustCode!
Plug in for Visual Studio (2003 and 2005) offering refactoring and other code analysis and assist features.

C/C++

SlickEdit
SlickEdit is a long time programmer editor that many people like a lot. It's latest version adds pretty-reasonable sounding refactoring support.
Ref++
Ref++ is a visual studio add-in that adds refactoring support for C++.
Xrefactory
A plug-in for emacs. Supports renaming, parameter manipulations and extract method.

Visual Basic

Refactor! for Visual Basic
"Refactor! for Visual Basic 2005 Beta 2 is a free plug-in from Developer Express Inc., in partnership with Microsoft, that enables Visual Basic developers to simplify and re-structure source code inside of Visual Studio 2005, making it easier to read and less costly to maintain. Refactor! supports more than 15 individual refactoring features, including operations like Reorder Parameters, Extract Method, Encapsulate Field and Create Overload."
Refactor! Pro
This is the 'Pro' version of the free download above. It has some extra features and also supports C#.
Aivosto Project Analyzer
"a Visual Basic code optimization utility. While not strictly a refactoring tool, it does include a lot of related functionality. For example, it can automatically do Encapsulate Field, Remove Parameter, and Hide Method."

Python

Bicycle Repair Man
Given the context, this at least gets a prize for the best name!

ruby

Ruby Refactoring
Work in progress of capability for RDT - the Eclipse plug-in for Ruby.

Haskell

HaRe
An ongoing project to develop a refactoring tool for Haskell at the Universit of Kent. It's part of a general research effort to bring refactoring to functional programming languages.

Self

Guru
"Given a collection of Self objects, Guru produces an equivalent set of objects in which there is no duplication of methods or certain types of expressions. To achieve this, Guru creates a replacement inheritance hierarchy and methods for factoring out expressions."

Delphi

Model Maker
This apparantly does a few refactorings, not doing extract method, but does seem to do some beyond simple renames, at least as far as I can tell from the web site. There's also a code explorer that puts this support directly into the IDE.

General

X-develop
"X-develop is our new multi-language cross-platform IDE for professional coders. It offers code-centric semantic-driven productivity features for C#, Java, JSP, J# and VB.NET and supports .NET, Mono and the Java platform on Windows, Linux and Mac OS X. X-develop includes many common refactorings: rename variable/member/class, change method signature, extract method, inline method, move classes, introduce variable, inline variable and more."

--
Happy day, happy life!

No comments: