First impressions of ReSharper (JetBrains' C# refactoring tool)
Cross posted from my other .NET blog
I tried out JetBrains' VS.NET plugin for C# today. So far, I liked it. I think it is on the right track to bring some serious competition to Whidbey's refactoring tools. The installation was smooth. You would need a username and license key from the bottom of the download page. It just adds a "Resharper" menu item to your C# project workplace in VS.NET 2003 (I also have Appforge and XMLSpy plugins installed. Resharper only adds the highlighted menu item).
With Resharper installed, VS.NET takes some extra seconds to startup because it needs to build its own symbols from the system DDLs. Now, let's look at some of its features:
1. Refactoring
Refactoring support in this first EAP build is very primitive. It only supports variable renaming. However, as I had mentioned before, renaming is probably the most urgently needed refactoring feature in VS.NET. Currently, ReSharper does not allow you to review the changes to be made. I expect this to be fixed in future builds.
2. Find usage
An advanced editor feature that is closely related to variable renaming, is to find all usages of a certain variable across multiple files and classes in a solution. ReSharper has a very good "Find Usage" utility.
The find results can be organized in the object hierarchy structure.
Or, the results can be organized in the file system structure.
3. Code templates
ReSharper supports surrounding code blocks with structures and insertion of live templates. They work pretty much the same way as Whidbey does. I wish there is a way to add custom live templates in the future.
4. Code completion (IntelliSense replacement)
Last but not least, the ReSharper provides its own "smart" code completion utilities. To use that, we can turn off IntelliSense by check off the "Auto list members" box in Tools -> Options -> Text Editor -> C# -> General. Using the Ctrl-Space key, we can get a list of all possible code completion options as IntelliSense would normally give us:
Using the Shift-Ctrl-Space key, we can get a list of possible completion options based on the code context. That is pretty useful when you have a large number of data members, properties and methods in a class (like some of the system classes do!!)
Overall, ReSharper needs to be substantially better than Whidbey's refactoring tools in order to convince people to pay extra for it. I liked what I see so far. But it still has a long way to go.
PS. Luke Hutteman also has a good review on ReSharper.