Thursday, June 21, 2007

ReSharper 3.0 Released By JetBrains

JetBrains, the creators of intelligent, productivity-enhancing applications, today announced the release of ReSharper version 3.0, the company's award-winning intelligent productivity add-in for Microsoft Visual Studio. This release is spearheaded by a major expansion into new languages, with full-featured support for Visual Basic .NET, XML and XAML, backed by comprehensive cross-language functionality.
It also brings a host of new productivity-enhancing features such as an in-depth code analysis for C#, a superior unit testing solution, efficient handling of To-do lists, plus a number of new time-saving navigation and search commands.

"With this release we are embracing a greater part of the Visual Studio world by supporting developers who work in more than C#," said Valentin Kipiatkov, JetBrains' Chief Technology Officer. " In addition, we have found yet more ways to improve the Visual Studio experience for our users, from intelligent and insightful code analysis, to our
Go to Symbol' navigation, to enhanced unit testing, to support of XML and XAML. At the end of the day, improving a developer's coding experience is what our business is all about."

Significant improvements and new features in ReSharper 3.0 include:

Unrivalled C# code analysis.
In addition to detecting new warnings and errors on-the-fly, ReSharper offers code suggestions. This feature gives insight into your code by offering an intelligent analysis of actual and potential errors. The code suggestion feature even notices questionable code design - all while you type.
Multiple productivity enhancers across all languages. The most far-reaching navigation/search feature of all, �Go to Symbol', will help developers to find any file member in their solution in seconds. Other additions include a revamped Unit Test Explorer, a To-do Explorer - a feature that keeps track of to-do notes solution-wide, even in closed files, and more.
Full-featured Visual Basic .NET support. The majority of ReSharper's features are now available for VB.NET code, including smart navigation and search, code refactorings, smart code completion options, code assistance, code generation and more - all resulting in a truly enhanced Visual Basic .NET experience in Visual Studio.
Cross-language functionality. ReSharper ensures interoperability in working with mixed C# and Visual Basic projects: usage search, refactorings, quick-fixes and context actions take into account all code written in either language, whenever possible.
XML and XAML support. Extensive support for XML and XAML is now available, answering the needs of many of our existing and potential users.
Considering ReSharper's increased value to different user groups, in addition to regular full-featured ReSharper 3.0 we are offering two pared-down editions: C# and VB.NET. These language-focused editions exclude a part of the functionality and cost a fraction of the full price.

Complete product information about JetBrains ReSharper is available at

ReSharper 3.0 is available for a 30-day free trial download at No evaluation licenses are required.

New customers can purchase ReSharper 3.0 online at

Code Assistance, Navigation/Search and other productivity features
Navigation and Search:

"Go to symbol" — navigate to any symbol by its short name, with a single shortcut.
Go to next/prev error action
Command to locate current file in Solution Explorer
Find symbols referenced from type or type member
Find code dependent on referenced assembly (renamed feature) or on project (new feature)
Advanced Find Usages: new UI and ability to specify arbitrary base member to search for
Highlight usages of expression in file
Type hierarchy view enhancements
Two new view modes — show interface leaves, show concrete types
Members panel added
Filter occurrences of attributes by usage in [attribute]

Code completion:
Smart completion for type arguments
Smart completion for generic method arguments
Smart completion in catch clause for Exception parameter — give name to unnamed caught exception
Alt-Ins in Solution Explorer to create a new file from template
Automatic member reordering
Parameter information for named parameters in attributes
Advanced type choosing control in Refactoring UI
Mark quasi-implementations with italic font in "Go to base/derived"
Move statements in code blocks
Move parameters in method signature
Option to generate operators in "Generate Equals & GetHashCode"
"Generate delegating members" includes base as possible target (e.g. for publishing protected members of base type)
Noticeably improved stack trace explorer

C# Code Inspections
Code inspections are capable of detecting erroneous or suspicious code. A developer is however responsible for fixing it or not. You can find some examples on the dedicated C# code analysis page. The folowing inspections are available:

Check parameter name in ArgumentException family
Redundant interface specification in list of implemented interfaces
Redundant attribute parenthesis if empty argument list
Comparison of unconstrained generic value with null
Field could be made readonly
Redundant explicit delegate creation for method
Partial type with single part
Method return value is unused
Overriding obsolete member without specifying obsolete attribute
Assignment in condition
Parameter could be declared with base type
Conditional ternary expression could be re-written as coalescing expression
For statement condition is always true
Redundant unsafe context declaration
Analysis for namespace doesn't correspond to file location
Support compiler warning levels set in project properties
Support specific warning suppressed in project properties, including "member not documented"
Ability to specify custom formatting methods for analysis (like string.Format)

Context Actions
Extract anonymous method to method of the type
Inline method body as anonymous delegate
Replace ArrayList with List
Convert catch(Exception) to catch and vice versa
Insert code to check if parameter is null and throw ArgumentNullException
Copy documentation comments from base
Create overload without parameter(s)
Initialize field from constructor parameter
Rename file to match type name
Move variable to outer scope
Add another accessor to property or event
Split string literal
Replace variable declared at outer scope with several variable declared in inner scopes, when they are independent
Surround string with string.Format()
Move member declaration(s) to another type part
Make abstract member virtual
Replace string checks with string.IsNullOrEmpty() method call
Override virtual member in derived type

No comments: