How-To's

ReSharper 7.1 Early Access is Open

Say hello to ReSharper 7.1 EAP! Starting today, you can download early builds of the new ReSharper update.

In this release, we’re trying to focus on little things: removing minor but irritating flaws as well as introducing small improvements that go a long way towards better usability. The everlasting battle for smooth performance and light memory usage is also in full force. Anyway, read on to learn what we have in store as of EAP launch.

Code formatter revitalized

We know that code formatting is a very sensitive set of IDE functionality — to the extent of donating kingdoms in return for fixing formatting issues. Seeing a set of these issues that have accumulated over the years, we decided it was time for action.

Specifically, following enormous demand, ReSharper now provides versatile settings to format chained method calls. For example, you can chop chained calls while giving preference to wrap after delimiter dots:

In conjunction with a new option to align chained method calls, this gives you the following formatting setup:

Second, facing the region controversy, Code Cleanup doesn’t introduce regions by default anymore. Too many people consider regions a code smell, and we had to do something about it.

In other formatting news, code formatter now indents with tabs only if using spaces is not allowed in a specific coding standard; there’s now a new options page which actually makes formatting XML doc comments a feasible task; and if you’re an ASP.NET developer, look for a new option to always use Kernighan & Ritchie style brace layout in markup pages regardless of whatever style you’re using in code-behind. There are even more formatting and cleanup fixes — here’s the full list in case you’re interested.

Fewer annoyances all around

If fixing some of the weirdness in code formatting behavior wasn’t enough, we handled quite a bit of other annoying bugs. For instance, configured JavaScript abbreviations are now respected by JavaScript naming inspections; moving types or files no longer changes their encoding; and importing types for pasted code doesn’t bring up an ugly dotted box.

Easy sharing of ReSharper inspection results

Following insightful feedback from John Papa and other long-time users, we’ve revised the experience of working with Inspection Results and Errors in Solution tool windows, primarily in order to streamline sharing ReSharper inspections with non-ReSharper users (amazing but there are some) as well as creating work items based on inspection results.

Specifically, you can now copy individual entries or custom selections of entries from both Inspection Results and Errors in Solution:

This is handy if you’re working in a team environment and assigning work items based on ReSharper inspections to different developers: copy an issue or a group of issues, submit the copy to an issue tracker, and there you go into the wonderful world of delegation!

However, copying an entry or a selection gives you a plain text copy of the issues that ReSharper has detected. If you’re a fan of HTML- or XML-based issue reports, be informed that entries can now be exported from Errors in Solution (this was previously only available from Inspection Results):

Speaking of XML reports, that was the only export format that included line numbers in previous ReSharper versions. In 7.1, we’ve put an end to this inexplicable injustice: HTML and plain text exports now include line numbers, too:

INotifyPropertyChanged tooling now supports Caller Info

ReSharper 7.1 takes advantage of Caller Info attributes when it implements INotifyPropertyChanged in .NET Framework 4.5 projects. Needless to say, if your project is targeting .NET Framework 4.0 or below, ReSharper still uses the traditional syntax.

The new version also facilitates migration to CallerMemberName-based implementations by highlighting redundant arguments. If you happen to have, say, an OnPropertyChanged implementation that includes a parameter annotated with CallerMemberName, any calls passing explicit arguments will be marked as redundant:

There’s more in store regarding INPC support in ReSharper 7.1, so stay tuned for a separate blog post.

A different treatment of the Preview tab

We’ve received complaints stating that we were taking advantage of the Preview tab in Visual Studio 2012 in more cases than it made sense.

In 7.1, all contextual (such as Go to Declaration or Go to Implementation) and context-insensitive (Go to File or Go to Symbol) navigation actions are reverted to open files in standard text editor tabs. The Preview tab is still used to open files that you’re selecting via Enter from tool windows such as Find Results.

Do you think this is a better way to use the Preview tab? Please let us know!

Refactoring coverage and quality assault

Many refactorings have received a level or two up in terms of stability and functionality. For example, Extract Class is now working with VB.NET in addition to C# code, plus the C# implementation has received a substantial share of bug fixes. (You’ve watched the video on using Extract Class, haven’t you?)

Change Signature now works correctly with default parameter values and handles usages of named arguments just fine. Other fixes cover Extract/Inline Method, Rename, Extract Superclass, Introduce Variable, Pull Members Up and quite a few more refactorings — here’s the full list of fixes.

Entity Framework 5-specific fixes

A couple of code analysis false positives are now gone, and extension methods should now be resolved without extra manipulations with ReSharper caches.

Various improvements in VB.NET support

For example, VB.NET quick-fixes for WinRT have been added to pair those available for C#; VB.NET inspections can finally be suppressed with comments; IntelliSense has been fixed for enums and LINQ-to-SQL joins. On top of that, as mentioned above, Extract Class refactoring is now functional in VB.NET code.

ASP.NET and ASP.NET MVC refined

ReSharper now consents with the exotic case of wrapping asp:placeholders with styles in ASP.NET markup files. ASP.NET MVC developers should be happier as ReSharper 7.1 handles cases where file names of views are not derived from action names and resolves relative view paths much better. For details on more web dev fixes, see this list.

Performance and memory consumption improvements

These traditionally cover all kinds of technologies but most importantly SharePoint, ASP.NET MVC and resource files. On another note, if you’re a fan of typing in web.config files, this should now be a much smoother task.

Unit testing: JavaScript and usability

First off, nested references are now supported for JavaScript testing frameworks (both QUnit and Jasmine).

Another improvement is relevant to a broader scope of unit testing practitioners however. If you have a great load of unit tests in your session, there’s now an easy way to filter the session to specific tests — just use quick search that is now available in Unit Test Sessions:

In other news

If you’ve read through to this point, you just owe it to yourself to download a ReSharper 7.1 EAP build.

Questions? Bug reports or improvement requests? We’re all listening.

image description