29 November 2006

Near future - ReSharper 2.5

We at ReSharper team are building version 2.5, which is superior to 2.0.* series in quite few things. These things are so important, that I want to outline them here.

First, we did a tremendous amount of work to reduce Visual Studio slowdown caused by ReSharper. I don't have specific numbers at hand, but I believe that it is at least ten times smoother, than previous versions. Notable areas that were sped up include typing, code completion, parameter information, Visual Studio startup and solution loading, debugger stepping, Live Templates and code formatting.

Second, we did many UI and usability improvements including fonts, colors, tree views handling, forms and popups. Here is how new Find Results looks like with code preview:

Next picture shows both new popup window's style and new feature "Navigate from Here", which shows various navigation options for selected code.

Third, we've added a lot of new context actions and quickfixes. They include various code generations and transformations, which increases code building speed even more! Look for complete list of quickfixes and context actions when ReSharper 2.5 releases.

Fourth, we extended the power of code analysis to provide more erorrs, warnings and insights into potential problems. One of the most powerful new features is null reference analysis, which detects possibility of NullReferenceException in your code and alerts you with appropriate warning. Indeed, we eliminated many potential problems in ReSharper itself using this analysis.

Last, but not least, we supported subset of ReSharper features for VB.NET. In this version this subset is limited to code navigation and search features (go to declaration, base, inheritor(s); find usages; go to type/file; etc.). Some other features like expand selection and quick-doc is also included. Modification actions, like quick fixes, refactorings, automatic namespace import and so on will be supported in subsequent release.

In addition, ReSharper 2.5 will support XAML-generated files to some degree, though full XAML support is planned for next version. ReSharper's handling of new technologies like Windows Communication Foundation is being tested these days and we believe it will work fine by the release date.

Complete roadmap is published on our EAP site, feel free to participate in EAP program and tell us how it goes. Currently we are in the final stage of pre-release product stabilization and clean up.

PS: ReSharper 2.5 does not work with Visual Studio 2003, nor it is planned to build any new major release for this version of Visual Studio. There will be bugfix updates for ReSharper 2.0.* for both VS2005 and VS2003 though.

30 Nov: post updated based on feedback.

10 November 2006

Code Metrics

Many people ask, if we are going to implement code metrics in ReSharper. Most people talk here about cyclomatic complexity, some mention maintainability index or even Halstead complexity measures. In fact, there are two major cases when people need code metrics.

One case is part of global measurement process in software development company. That is, when company measures and tracks requirements, design and architecture, implementation, tests, deployment, support and operations, etc. Obviously, this is out of ReSharper scope. It won't track history of measurements (as it doesn't track history of errors found in source code), it doesn't integrate with corporate database, it doesn't provide any help in fixing these measures. Someday this case will be covered by TeamCity, I think.

Another case is helping developer spot "code smells". This would suit ReSharper's nature perfectly, but why then just talk about code metrics? Why people want just "have a warning about too complex method", and not about "method belongs to different class"? Many of such "code smells" can be automated, and can aid developer in building Good Code. The problem with such warnings is that they often can give false positive. False positives are very frustrating, people will think something like this: "Well, I know, this code is complex. It should be. It was optimized for speed, implements complex algorithm and maintained by experienced Senior Developer. I DON"T want this warning here!". Thus, system that issues such warnings should have "ignore specific warning in specific place" mechanism, otherwise these warnings will be switched off globally most of the time.

I believe ReSharper team most likely will introduce suggestion system sooner or later, and then implement "code smells", including code metrics, and other useful suggestions that will help you write better code.

08 November 2006


I'm not sure if this blog will be regular, but I have many ideas, thoughts and just random talks about ReSharper. ReSharper is undoubtedly the most intelligent add-in to Visual Studio .NET 2005. I joined the team in 2006 and I'm doing my best to make this product not only smarter, but also be more usable, have better look and feel and improve interaction experience. And, as I look at the code and features, I undestand that a lot more should be done to make developer's life even easier and pleasurable.

This blog is not for supporting ReSharper users, visit Support Page if you need help. It's not about past days of ReSharper, nor about bugs or incomplete features. It is all about future, ideas, horizons and trends for productivity boosting tools in general and, of course, with ReSharper in focus.