Quantcast
Viewing all 306 articles
Browse latest View live

Memory Testing on a CI Server. dotMemory Unit Standalone Launcher

After we announced the dotMemory Unit framework, the most frequently asked question was, “When will the standalone launcher for CI be available?” Finally, the time has come! Along with dotMemory 4.4, we have also released dotMemory Unit 2.0 which contains not only a lot of improvements but also the dotMemoryUnit.exe tool.

The tool (distributed as a zip archive*) works as a mediator: it runs a particular standalone unit test runner under a profiler and provides support for dotMemory Unit calls in the running tests.

*Important! If your domain policy is to treat files from the Internet as unsafe, don’t forget to unblock the zip file by clicking the Unblock button in file properties.

For example, this is how you can run NUnit tests from some MainTests.dll file:

dotMemoryUnit.exe
-targetExecutable="C:\NUnit 2.6.4\bin\nunit-console.exe"
-returnTargetExitCode --"E:\MyProject\bin\Release\MainTests.dll"

Here:

  • -targetExecutable is the path to the unit test runner that will run tests.
  • -returnTargetExitCode makes the launcher return the unit test runner’s exit code. This is important for CI as the build step must fail if any memory tests fail (test runners return a nonzero exit code in this case).
  • The parameters passed after the double dash (--) are unit test runner arguments (in our case it’s a path to the dll with tests).

Now, it’s easier than ever to make memory tests a part of your continuous integration builds. Simply add the command shown above as a build step on your CI server, and it will run your tests with the dotMemory Unit support.

For example, this is how the build log of a failed step looks like in TeamCity:

Image may be NSFW.
Clik here to view.
dotMemory Unit launcher output

However, if you’re a TeamCity user, we can offer a much more convenient solution.

Integration with TeamCity

Along with dotMemory Unit 2.0, we release the plugin for TeamCity that adds support for dotMemory Unit to all .NET test runner types. Let’s take a more detailed look at how this works.

TIP! If you want to take a look at a working example, here is a sample build project on our public TeamCity server. Project build configuration is available at this link.

  1. On your TeamCity server, copy dotMemoryUnit.zip (get the latest version from Artifacts on JetBrains build server) to the plugins directory located in your TeamCity data directory.
  2. Restart the TeamCity Server service.
    Now, all .NET test runners in TeamCity provide support for dotMemory Unit.
  3. As the dotMemory Unit standalone launcher is required for the plugin to work, you should provide it to your build agent. There are two ways to do this:
    • Download and unzip the launcher to any directory on a TeamCity build agent. Don’t forget to Unblock the zip!
    • [Recommended] Use the launcher from the dotMemory Unit NuGet package referenced by your project.
      Note that if you omit binaries from the source control repository, you can use TeamCity’s NuGet Installer runner type. It will perform NuGet Package Restore before the build. All you need is to add the NuGet Installer “build step” and specify the path to your solution.
      Image may be NSFW.
      Clik here to view.
      NuGet Installer Step
  4. Now, update the step used to run tests in your build configuration. Open the corresponding build step in your build configuration:
    Image may be NSFW.
    Clik here to view.
    TeamCity Unit Test Build Step
  5. Note that after we installed the dotMemoryUnit plugin, this build step now additionally contains the JetBrains dotMemory Unit section. Here you should:
    • Turn on Run build step under JetBrains dotMemory Unit.
    • Specify the path to the dotMemory Unit standalone launcher directory in Path to dotMemory Unit. Note that as we decided to use the launcher from the NuGet referenced by our project (see step 3), we specify the path relative to the project checkout directory.
    • In Memory snapshots artifacts path, specify a path to the directory (relative to the build artifacts directory) where dotMemory Unit will store snapshots in case memory test(s) fail.

    Image may be NSFW.
    Clik here to view.
    dotMemory Unit support

  6. Save the configuration.

Done! Now, this build step supports tests that use dotMemory Unit.

From the point of the end-user, nothing has changed. If you run the configuration and any of the memory tests fails, the results will be shown in the overview:
Image may be NSFW.
Clik here to view.
TeamCity failed build overview

The Tests tab will show you the exact tests that have failed. For example, here the reason had to do with the amount of memory traffic:Image may be NSFW.
Clik here to view.
TeamCity Tests Tab

Click on a failed test to see exactly was has gone wrong:
Image may be NSFW.
Clik here to view.
TeamCity test result

Now, you can investigate the issue more thoroughly by analyzing a memory snapshot that is saved in build artifacts:

Image may be NSFW.
Clik here to view.
Build Artifacts - Memory Snapshot

Note that to open memory snapshots, you will need a standalone dotMemory (or ReSharper Ultimate) installation.

Image may be NSFW.
Clik here to view.
Snapshot in dotMemory

Additional Benefits

If you’ve used dotMemory Unit before, you probably know that it required ReSharper unit test runner to work. Since v2.0, you can also run tests via dotMemory Unit’s standalone launcher and the list of supported unit testing frameworks has expanded to include:

  • MSTest*
  • NUnit*
  • XUnit
  • MBUnit
  • csUnit

*Can also be run from Visual Studio with ReSharper

Nevertheless, if your unit testing framework is missing from this list (e.g., MSpec), you can still use it with dotMemory Unit.

All you need to do is tell dotMemory Unit where your test method starts and where it ends. This is done with two methods: DotMemoryUnitController.TestStart() and DotMemoryUnitController.TestEnd().

We recommend that you create an IDisposable class that uses these methods, and then wrap the code in your tests with the using statement that creates an instance of this class:

class DotMemoryUnit: IDisposable
{
   public static IDisposable Support{get{return new DotMemoryUnit();}}
   private DotMemoryUnit()
   {
       DotMemoryUnitController.TestStart();
    }

   public void Dispose()
   {
      DotMemoryUnitController.TestEnd();
   }
}

public class Tests
{
   [Test]
   public void TestMethod1()
   {
      using (DotMemoryUnit.Support)
      {
         ... // your code goes here
      }
   }
}

That’s it! Now you can run tests wrapped in this way using dotMemory Unit standalone launcher or Visual Studio with ReSharper (in case it has the extension for the unit testing framework you use). Simply copy & paste the code above and reuse it in your project. You can also find this code on github.

With this new feature, dotMemory Unit becomes very flexible: you can use it not only to add support for a unit testing framework, but also to extend and adapt dotMemory Unit to your specific needs. For example, see how we added support for MSpec.

Thanks for reading! As always we recommend that you try dotMemory Unit on your own. If you’re already using it, then probably automating your tests on a CI server is the next logical step.

The post Memory Testing on a CI Server. dotMemory Unit Standalone Launcher appeared first on .NET Tools Blog.


Taking Memory Snapshots by Condition in dotMemory 4.4

While dotMemory 4.4 is primarily focused on dotMemory Unit 2.0, it also brings a number of useful updates. One such improvement is the ability to take memory snapshots only when a certain condition occurs. The most common use case for this is taking a snapshot when the memory consumption in your application increases dramatically. As catching the moment manually (using the Get Snapshot button) may be quite tricky, dotMemory 4.4 allows you to automate the process.

All you need to do is set a particular condition, such as:

  • Memory consumption increase in MB
  • Memory consumption increase in %
  • Period of time in minutes (periodical taking of snapshots)

After the condition occurs, the snapshot will be collected automatically.

For example, let’s say we have a web application that allocates a huge amount of memory after some actions (but we’re not sure of their exact sequence). What is the root cause? Is this some ineffective algorithm or just IIS that reserves memory for hard times? In this case, the best solution is to attach dotMemory to the app pool that runs the application and take a memory snapshot when memory consumption surges. As we don’t want to spend all day waiting for this moment, we will add the condition on taking the snapshot.

  1. Attach dotMemory to the corresponding app pool (w3wp.exe process).
  2. As soon as the session starts, click Get Snapshot By Condition.
    Image may be NSFW.
    Clik here to view.
    Profiling session
  3. In the Get Snapshot by Condition window, specify the condition for taking a snapshot. In our case, we will take snapshot if memory consumption increases by 100 MB. The maximum number of snapshots that can be taken automatically is set by the Limit the max number of snapshots to parameter.
    Image may be NSFW.
    Clik here to view.
    Get Snapshot by Condition window

    That’s it! As soon as we click Start, dotMemory will track overall application memory usage. When it exceeds the current value (taken at the time of clicking Start) by 100 MB, dotMemory will take a snapshot, all on its own!

Image may be NSFW.
Clik here to view.
Getting snapshots by condition is enabled

Note that, as soon as the defined condition occurs, the memory consumption at that moment becomes the new baseline.

You can try this feature if you’re using dotMemory 4.4 or later (as a separate product or as part of ReSharper Ultimate).

The post Taking Memory Snapshots by Condition in dotMemory 4.4 appeared first on .NET Tools Blog.

Details on dotTrace, dotCover, dotMemory licensing changes

tl;dr

  1. Starting November 2, dotTrace, dotCover and dotMemory will only be licensed as part of ReSharper Ultimate
  2. If you’re not licensed to dotTrace, dotCover and/or dotMemory, you can safely ignore this post
  3. There are reasons behind this change
  4. To figure out what this change means to you and compare your license maintenance costs before and after the licensing change, locate yourself in one of 4 major affected groups of customers
  5. If you’re only using dotCover on a CI server, take note that we’re preparing a free license to dotCover Command Line Tools

What’s going on?

Subscriptions

As you most probably know, last month we at JetBrains have announced a forthcoming transition to subscription licensing, which is due to occur on November 2, 2015.

The change directly affects users of ReSharper, ReSharper C++, dotTrace, dotMemory and dotCover: all licenses purchased on or after November 2, 2015 will be subscriptions, with monthly and yearly billing options available. Substantial discounts are provided to convert existing licenses to the new scheme, and a new licensing option is introduced that will allow you to subscribe to all desktop products that JetBrains offers, which includes IntelliJ IDEA and its sister IDEs, as well as the entire ReSharper Ultimate product line.

For a summary of subscription licensing and pricing, please see jetbrains.com/toolbox.

dotTrace, dotCover, dotMemory will no longer be licensed separately

However there’s even more change coming for customers who use JetBrains .NET tools. We have made this public on the day we revealed the subscription model but this might have been lost in the overall fuss created by the announcement. This is why we’d like to emphasize specifically that starting November 2, 2015, dotCover, dotTrace and dotMemory will only be available for purchase as part of ReSharper Ultimate subscriptions: separate licensing of dotCover, dotTrace and dotMemory will be discontinued.

Image may be NSFW.
Clik here to view.
Summary of licensing changes

Why are dotCover, dotTrace and dotMemory not going to be licensed separately after November 2, 2015?

This is simple and long time coming: in most cases, dotCover, dotTrace and dotMemory are purchased and used along with ReSharper.

Well aware of this trend already a year ago, we have introduced a ReSharper Ultimate license, and we’ve seen a strong conversion from separate licenses to ReSharper Ultimate licenses as a result, especially on the personal side.

Another factor is the growing trend to integrate ReSharper Ultimate products more closely than before, in many respects. Starting from ReSharper 9.0, we have reworked ReSharper, dotCover, dotTrace, dotMemory and ReSharper C++ so that they could share a common set of assemblies while loaded in Visual Studio, which helped drastically reduce their cumulative memory footprint and in many cases actually made their concurrent usage in Visual Studio feasible. However, this change also meant there would only be a single set of compatible tools that you could use in Visual Studio alongside each other, which, in turn, prompted us to release updates to the entire ReSharper Ultimate family in a simultaneous manner.

Going forward, the plan is to make ReSharper Ultimate tools even more interconnected in ways that would move runtime analysis that dotTrace and dotMemory implement closer to static analysis that ReSharper excels at, and make profiling data more easily accessible in the code editor, during your day-to-day code maintenance activities.

What it means to you

First of all, if you’re only licensed to ReSharper and/or ReSharper C++, changes in the way we’re licensing dotCover, dotTrace and dotMemory don’t affect you at all.

If you are licensed to dotCover, dotTrace and/or dotMemory, then depending on the current set of licenses that you have, we hope that you can make an informed decision whether to convert to a ReSharper Ultimate subscription, and this post serves to help you with this.

We will consider 4 major cases, so that you need to only read through the section that reflects your particular situation and the changes your licensing and associated costs would undergo.

What is common for all cases:

  • Whenever we compare licensing costs before and after licensing changes, we assume regular renewals both with traditional licenses and with subscriptions. There are certainly other kinds of renew behavior with traditional licenses but they’re not directly comparable with subscriptions.
  • We start with a comparison table with Old-Cost vs. New-Cost rows, and Personal vs. Commercial columns broken into 1- and 3-year time spans, to help you consider the change in a long term. Whenever necessary, we’re presenting Min.-Max. price ranges instead of fixed prices.
  • We use special subscription pricing offered for all existing customers, which implies that every active license (or a license with an upgrade subscription that has expired less than a year ago) makes you eligible to receive 2 initial years of new subscription for the price of 1 year.
  • USD prices are used for simplicity.

Please take your time and review the scenarios suggested below:

Converting ReSharper Ultimate to subscription

If you already own a ReSharper Ultimate license, then you’re not dealing with separate licenses, and the only decision to make has to do with converting to the new subscription-based licensing model.

Also, there’s no way to compare ReSharper Ultimate subscription costs with renewal costs in the traditional licensing model: as ReSharper Ultimate is less than a year old, we simply have not had the opportunity to announce renewal pricing.

Personal licenses

Personal license holders are fine in terms of early cost even compared to the traditional new license pricing: upon conversion to the subscription model, a personal ReSharper Ultimate subscription is going to cost $89 for two initial years + $89 each subsequent year.

Commercial licenses

Converting commercial licenses is fairly straightforward as well: again, there’s nothing to compare to as we haven’t published renewal pricing for ReSharper Ultimate in the old licensing model but in the subscription-based world, a commercial ReSharper Ultimate license is going to cost $239 for two initial years + $239 each subsequent year.

Switching from combinations of licenses to .NET tools to a ReSharper Ultimate subscription

Image may be NSFW.
Clik here to view.
License maintenance costs in old and new licensing models (various combinations)

If you own licenses to a combination of ReSharper + dotCover, ReSharper + dotTrace, or dotTrace + dotMemory, yearly cost-wise a switch to subscriptions can result in anything from considerable savings to a slight price increase.

Personal licenses

If you’re a personal license holder, you’re saving anywhere from $49 to $99 by converting your license combo to a ReSharper Ultimate subscription that is, again, going to be worth $89 for two initial years + $89 each subsequent year.

Commercial licenses

For commercial licenses, a switch to ReSharper Ultimate subscriptions ($239 for two initial years + $239 for each subsequent year) is going to be cheaper compared to a combo of ReSharper + dotTrace or ReSharper + dotCover but a bit more expensive compared to a combo of dotTrace + dotMemory. If there’s any price increase however, it goes away in a 3-year span due to the special offer to existing customers.

If you’re a commercial customer and you’re looking to purchase ReSharper Ultimate licenses for more seats than you currently have, you can use the opportunity to “branch out” your existing licenses. The trick is that since special pricing for existing customers allows for the set of existing licenses, then if you have, say, a dotCover license and a ReSharper license, you can use them separately to switch to two ReSharper Ultimate subscriptions using the existing customer pricing, which would save you ~$470 on subscriptions in the span of 3 years.

Switching from dotTrace to ReSharper Ultimate

Image may be NSFW.
Clik here to view.
License maintenance costs in old and new licensing models (dotTrace)

Personal licenses

For personal license holders, even if you only own a license to dotTrace, converting to ReSharper Ultimate would cost you $10 a year less than renewing your dotTrace license each year on current terms.

Commercial licenses

For commercial licenses, switching from dotTrace-only license ($149 for current upgrade subscription renewal) to a ReSharper Ultimate subscription ($239 for two initial years + $239 for each subsequent year) is going to introduce a price increase although provided that you usually renew annually, you’re not going to feel it until the 4th year of your subscription.

If you’re concerned with long-term costs and you’re not ready to take advantage of all 5 commercial products made available by the ReSharper Ultimate license, then you might want to leave your current license and optionally purchase a traditional upgrade subscription renewal for one more year: those are still available before November 2.

Switching from dotCover or dotMemory to ReSharper Ultimate

Image may be NSFW.
Clik here to view.
License maintenance costs in old and new licensing models (dotCover or dotMemory)

If you only have a license to dotCover or dotMemory and want to keep these products updated going forward, this will introduce a price hit of a varying degree depending on your type of licensing. However, for some uses of dotCover, this can be mitigated by an upcoming free licensing mechanism (which is described later in this post).

Personal licenses

If you’re a personal customer and you only own a license to dotMemory or dotCover, a considerable price hit should be expected: while the current license terms allow for renewing dotCover or dotMemory at $49 each, a new ReSharper Ultimate subscription is $40 a year more expensive at $89.

When deciding how to proceed, keep in mind that you certainly have the option to just keep your existing license using the old licensing model without paying anything extra. Should you decide that this is the best way, then optionally, if your free upgrade period is coming (or has recently come) to a close, you can use the time before November 2 to renew your upgrade subscription period on old terms for one more year.

Commercial licenses

If you’re a commercial customer with only dotMemory or dotCover licenses, there’s quite a steep cost increase associated with moving to ReSharper Ultimate subscriptions: in the old licensing system, renewing a commercial dotCover license for a year is worth $99 and dotMemory $79 whereas a ReSharper Ultimate subscription for existing customers is going to be available for $239 for two initial years + $239 each subsequent year.

If you’re not ready to subscribe to ReSharper Ultimate, you can certainly keep your current licenses and optionally purchase an additional year of free upgrade subscription on old terms before November 2.

With commercial dotCover licenses however, if you’ve been maintaining them with a sole reason to use dotCover’s console runner on your CI servers, then the good news is that we’re going to introduce a free license to dotCover Command Line Tools (see more on this below.)

In other news: expect a free license to dotCover Command Line Tools

While dotCover is primarily intended to be used as a Visual Studio plugin for unit testing and code coverage, this is not its only use.

For example, dotCover has a console runner that is available out-of-the-box and for free with TeamCity. It is also possible to integrate it with other Continuous Integration servers in order to keep up to date with code coverage stats continuously. However in order to integrate dotCover console runner with Continuous Integration tools other than TeamCity, customers had to scratch their heads over the way this kind of usage was meant to be licensed, and usually ended up purchasing standard commercial licenses to dotCover.

We’d like to streamline the usage of dotCover console runner on external CI servers, and to do this, we’re going to provide a free license to dotCover Command Line Tools, similar to the license under which ReSharper Command Line Tools are available. We expect to finalize the license by November 2 so that you don’t have to subscribe to ReSharper Ultimate if the only usage you’re interested in is the usage of dotCover console runner with your CI server of choice.

What you need to do with regard to the licensing changes

1. First of all, we suggest that you take your time and consider all the pros and cons of new licensing opportunities for yourself or your company. For more information on the new subscription scheme in general, you can refer to the JetBrains Toolbox web site and JetBrains FAQ. If questions remain, please feel free to ask them here in this blog post or by contacting JetBrains sales.

2. Should you decide that converting to a ReSharper Ultimate subscription doesn’t suit you, you can safely stay with your current license. If you want to have another year of free upgrades within your existing license and without converting to a subscription, you can purchase an upgrade subscription renewal before November 2.

3. If you decide to convert to a ReSharper Ultimate subscription, you don’t need to do anything immediately; rather, you can proceed to converting your licenses to subscriptions on or after November 2.

The post Details on dotTrace, dotCover, dotMemory licensing changes appeared first on .NET Tools Blog.

All ReSharper Ultimate tools bumped up to version 10

If you have started to use ReSharper 10 EAP (build 4 or later), a strange detail might have caught your attention:

Image may be NSFW.
Clik here to view.
Several v10 products as seen in the ReSharper Ultimate installer

Wut? Is it a bug? OK, ReSharper was meant to be versioned 10 but other Ultimate tools clearly weren’t.

Well, there’s no mistake. We have decided to align versioning across the entire ReSharper Ultimate family starting with ReSharper version 10.

Also, by virtue of this uniform versioning, we can finally refer to the entire set of tools as ReSharper Ultimate 10.

Granted, it’s bizarre for some products to make a switch like this: for example, dotPeek jumps from 1.5 to 10 and ReSharper C++ leaps from 1.1 to 10.

However, there’s a legitimate reason behind this.

Before last year, ReSharper, dotCover, dotTrace and other JetBrains .NET tools used to evolve more or less independently from each other, without much coordination. This all changed with the advent of ReSharper Ultimate, which brought a common installer, a common set of assemblies shared between all tools, a synchronized release cycle and unified licensing.

Along with all the advantages of the new approach, it brought a new restriction: if you were to use multiple tools from the ReSharper Ultimate pack, you could only use versions released simultaneously. Installing, say, ReSharper 9.1 released in April 2015 alongside dotMemory 4 released in December 2014 wasn’t possible anymore: you had to make sure that versions you installed were aligned in terms of release dates.

However, disparate versioning used by different ReSharper Ultimate tools didn’t help anyone figure out which versions were compatible and which were not.

Taking all this in mind, we sat down and thought, which of the two main considerations behind versioning was more relevant at this point in ReSharper Ultimate history: a way to indicate which releases of each particular product had more important changes than its other releases, or a way to unequivocally identify which ReSharper Ultimate products were guaranteed to work alongside each other.

In the end, although it wasn’t apparent to everyone and took quite a while to agree on, we figured that the latter was more important today and going forward.

In practical terms, the new versioning should be read as follows:

  • ReSharper Ultimate products having the same version (10 and onward) are guaranteed to be compatible.
  • Advancing a version number (10 to 10.1 or 10.2 to 11) will usually indicate considerable changes in the flagship product, ReSharper. Other Ultimate products may or may not receive comparable changes but will still advance their version numbers accordingly in order to make absolutely clear that they are expected to work with each other.

While we realize that this change is somewhat unorthodox, we’re really hopeful that in practice it helps you figure out more easily which combinations of ReSharper Ultimate tools are safe to be used together.

The post All ReSharper Ultimate tools bumped up to version 10 appeared first on .NET Tools Blog.

ReSharper Ultimate 10 EAP 5

Last Friday saw the release of a new ReSharper Ultimate 10 EAP build. Highlights of EAP 5 include notable changes in ReSharper and dotMemory, as well as dotTrace integrating its Timeline profiling functionality right in Visual Studio.

ReSharper

Revised Stack Trace Explorer

ReSharper’s Stack Trace Explorer tool window has been basically rewritten from scratch. Among other effects, this enabled Stack Trace Explorer to:

  • Provide links to types in addition to methods.
  • Parse more types of data, including WinDbg GCRoot dumps and Visual Studio’s Call Stack tool window contents.

Image may be NSFW.
Clik here to view.
Stack Trace Explorer

The update to Stack Trace Explorer also affects ReSharper’s Unit Test Sessions tool window where it is used to display call stacks in unit test output and provide links to relevant source code locations.

Support for Google Protocol Buffers (Protobuf)

You don’t use Google Protobuf too often but when you do, you can now lean on ReSharper to ensure proper IDE support in .proto files. This includes syntax highlighting, code analysis, code completion and navigation.
Image may be NSFW.
Clik here to view.
Support for Google Protocol Buffers

In terms of Protobuf versions, both 2.x and 3.0 syntax is supported.

Other changes

Other notable changes in ReSharper 10 EAP 5 include:

  • More C# code style inspections and quick-fixes, such as those helping get rid of redundant parentheses, or add parentheses to disambiguate precedence.
  • Support for different kinds of JSDoc type annotations, including symbol names, unions, parameter annotations, type definitions and callbacks.

Here’s the full list of fixes in ReSharper 10 EAP 5.

dotTrace

Timeline profiling integrated in Visual Studio

dotTrace integration in Visual Studio has traditionally been sketchy but here’s an important step to change this. From now on, when you choose to profile your startup project from Visual Studio in Timeline mode, you can view the resulting snapshot right in Visual Studio, using the Performance Snapshots Browser tool window.
Image may be NSFW.
Clik here to view.
Timeline profiling in Visual Studio

Available controls include the timeline view that you can zoom into, as well as the call tree, thread and thread state selectors, event filters, and a switch to focus on user code.

Whenever necessary, you can choose to open a particular snapshot in the standalone dotTrace Timeline Viewer.

dotMemory

Navigate from memory snapshot to code in Visual Studio

Starting from this EAP, dotMemory introduces a new contextual option that lets you navigate from any object set to its corresponding type in an open Visual Studio instance. If the target type is a library type, this triggers ReSharper’s decompiling functionality and opens decompiled code in Visual Studio.
Image may be NSFW.
Clik here to view.
Go to type declaration in Visual Studio from dotMemory

Wrapping it up

As usual, this is where you can download ReSharper 10 EAP from.

Experiencing issues with the EAP? Please report them to issue trackers of affected products as we’re right now trying to stabilize everything that’s inside so that the expected November 2 release is as smooth as possible.

Issue trackers are as follows: ReSharper, ReSharper C++, dotTrace, dotCover, dotMemory, dotPeek.

The post ReSharper Ultimate 10 EAP 5 appeared first on .NET Tools Blog.

ReSharper Ultimate EAP 7

Today we have prepared a fresh ReSharper Ultimate EAP build. EAP 7 is mostly about fixes and stabilization across all the tools from ReSharper Ultimate family, and we encourage you to download and try it if you didn’t have a chance to do it earlier. As ReSharper Ultimate 10 release is just around the corner, we need your feedback as soon as possible, so if anything is not working, please let us know.

Here is quick wrap up of what this build has to offer:

ReSharper

  • Improved performance of Unit Testing, along with several important bug-fixes for issues discovered in previous EAP builds.
  • Updated default severities for some of the code style inspections.
  • Template completion (Shift+Enter on selected method or constructor)
  • A set of fixes related to UWP support for the latest update of Windows developer tools.

Here is the full list of fixes in ReSharper 10 EAP 6 and EAP 7.

ReSharper C++

In addition to a set of fixes, ReSharper C++ speeds up on solution load for already cached solutions and receives support for char16_t and char32_t built in types.

dotCover

dotCover comes with several fixes for Continuous Testing, and a fix for the issue with huge icons in high DPI.

dotMemory

dotMemory receives the start screen similar to dotTrace Home. The new dotMemory Home screen can be used as a starting point to memory profiling that lets you launch a new local or remote profiling session, attach to a running process, configure the profiling session and more.
Image may be NSFW.
Clik here to view.
dotMemory start screen

Every application type will offer different settings for running and profiling the application. Selecting the Advanced checkbox will provide additional options, such as filtering for child processes we might want to exclude from profiling session.

What’s next?

We plan to publish more EAP builds later this week, since the release is scheduled for November, 2. Please report any problem you might encounter to issue trackers of affected products. Here are the corresponding links for your reference: ReSharper, ReSharper C++, dotTrace, dotCover, dotMemory, dotPeek.

The post ReSharper Ultimate EAP 7 appeared first on .NET Tools Blog.

Welcome ReSharper Ultimate 10 RTM

We are here to let you know that the final release of ReSharper Ultimate 10 is now available for download!

Image may be NSFW.
Clik here to view.
ReSharper Ultimate 10

As described earlier, all ReSharper Ultimate family tools now share a common version number to simplify dealing with compatibility issues, so please welcome ReSharper 10, ReSharper C++ 10, dotTrace 10, dotCover 10, dotMemory 10 and dotPeek 10.

Watch this video for an overview of what is new in ReSharper Ultimate 10:

Here is a quick recap of what is new for each of the tools, if you prefer text.

ReSharper 10

In addition to around 450 fixes, highlights of ReSharper 10 include:

  • ReSharper Build is a new out-of-process incremental build tool that can take advantage of multiple processes, visualizes different kinds of project build status, and is optimized for large solutions with lots of dependencies. Image may be NSFW.
    Clik here to view.
    ReSharper Build

    Read this post for more details on ReSharper Build.
  • Built-in postfix templates. One of the most popular plugins gets integrated into mainline ReSharper. Postfix templates allow reducing backward caret jumps while typing C# code. For example, you can start with an expression and proceed to wrap it into an if statement to check whether it returns true. Another template allows you to throw an exception if certain condition is met. Image may be NSFW.
    Clik here to view.
    Postfix templates
  • Usage-aware Go to Declaration. ReSharper 10 extends the functionality of Go to declaration (as well as Ctrl+click) so that you can also use the shortcut to look up for usages. In case you have one declaration and one usage, you can use Go to declaration to simply switch between them. If you have multiple usage of a symbol, subsequent Go to declaration hits will take you to further found usages of the symbol, one usage at a time. Navigation between usages is aided by a Find Usages-like pane that enumerates found usages, contains additional controls to mouse-click between usages, and helps you flush all found usages to the regular Find Results window if you like. Image may be NSFW.
    Clik here to view.
    Usage-aware Go to declaration
  • Code style improvements. ReSharper 10 comes with a set of changes aimed to simplify configuration of and complying with code style settings. Inspection severity can now be configured right from the Alt+Enter menu, without using a modal window. Find similar issues window is now used only for searching in a custom scope. All default scopes, such as solution, project and file, can be applied right from the same old Alt+Enter menu. Additionally, there are new code inspections with quick-fixes that detect explicit or implicit access modifiers for types and type members, let you use a pre-configured order of modifiers, and help you join or separate attributes in a section.
  • Refined Stack Trace Explorer. Stack Trace Explorer was basically rewritten from scratch in ReSharper 10. This enabled Stack Trace Explorer to provide links to types in addition to methods and to parse more types of data, including WinDbg GCRoot dumps, Visual Studio Call Stack tool window contents and dotTrace snapshots.
  • NUnit 3.0 Beta 5 support. As the new major version of NUnit is approaching release, we have laid the groundwork to support it in ReSharper unit test runner. We will make more changes in order to support the release version of NUnit 3.0, though at this point the latest Beta 5 is supported.
  • JavaScript and TypeScript support improvements. Support for JSX syntax is now available in .js, .jsx and .tsx files to streamline React development in ASP.NET applications. Code completion, all ReSharper regular context actions for HTML and JavaScript, navigation to declarations and search for usages, as well as a couple of refactorings are available as well. JavaScript regular expressions that were originally supported in ReSharper 9.2 are now covered in more detail. TypeScript 1.6 support has been finalized with the addition of intersection types and class expressions. Moreover, code completion for JavaScript is now aware of types from JSDoc comments.
  • UWP device family-specific views. Universal Windows Platform enables using device family-specific XAML views to provide different UI for different types of devices. ReSharper 10 learns to handle this with dedicated code inspections, quick-fixes and context actions.Image may be NSFW.
    Clik here to view.
    Code inspections for UWP device family
  • Google Protocol Buffers (Protobuf). ReSharper 10 starts to provide support for .proto files. This includes syntax highlighting, code analysis, code completion and navigation for both 2.x and 3.0 Protobuf versions.

ReSharper C++ 10

ReSharper C++ 10 comes with 200+ fixes and a variety of enhancements:

  • Improved support for C language. ReSharper C++ 10 provides full support for C99, including designated initializers. C11 is supported to the same extent that Visual Studio supports it. Code completion and some context actions that are specific for C language are introduced with this release as well.Image may be NSFW.
    Clik here to view.
    Code completion for C in ReSharper C++
  • New context actions. There is a new action to create a derived class when standing on a class declaration. Other new context actions help replace decltype with the underlying type, as well as substitute a template type alias.
  • New code inspections and quick-fixes. We’ve introduced a new code inspection that detects whether a class needs a user defined constructor with a quick-fix to generate it. Another new code inspection detects uninitialized base class in a constructor and offers a quick-fix to initialize it. Additionally, we added quick-fixes for mismatched class tags highlighting, a quick-fix to add a template argument list and a quick-fix to make base function virtual.Image may be NSFW.
    Clik here to view.
    Make base function virtual quick-fix
  • ReSharper C++ 10 inherits the updated usage-aware Go to declaration mechanic from the mainline ReSharper. From now on you can use the single shortcut not only to switch from declaration to definition, but also to navigate through usages.
  • Code generation. ReSharper C++ 10 allows generating definitions for a function inline. We’ve also added support for generating Google Mock stubs for those who use Google Test framework.
  • Performance was one of our priorities for this release, and as a result ReSharper C++ 10 works significantly faster on solutions that had already been cached.

dotCover 10

The main highlight for dotCover 10 release is the long-awaited Continuous Testing functionality. Following an initial code coverage analysis of your solution, dotCover 10 learns to track your code changes, figure out which tests are affected by them, and then it can re-run the affected tests as soon as you hit Save, or use a different strategy of reacting to code changes.
Image may be NSFW.
Clik here to view.
Continuos testing session in dotCover 10

dotTrace 10

dotTrace integration in Visual Studio has been considerably improved with this update. With dotTrace 10 when you choose to profile your startup project from Visual Studio in Timeline mode, you can view the resulting snapshot right in Visual Studio, using the Performance Profiler tool window. You can select a particular time frame to investigate and drill into, make use of several filtering options, as well as export and save snapshots, all without leaving Visual Studio.
Image may be NSFW.
Clik here to view.
dotTrace 10 Timeline viewer in Visual Studio

dotMemory 10

dotMemory 10 introduces a new contextual option that lets you navigate from a type in an object set to its type declaration in an open Visual Studio instance. If the target type is a library type, this triggers ReSharper’s decompiling functionality and opens decompiled code in Visual Studio.
Image may be NSFW.
Clik here to view.
dotMemory 10 Find declaration in VS action

In addition, dotMemory receives a start view similar to dotTrace Home. The new dotMemory Home screen can be used as a starting point to memory profiling that lets you launch a new local or remote profiling session, attach to a running process, configure a profiling session and more.

dotPeek 10

dotPeek 10 delivers one of the most heavily requested features: you can now navigate to IL code from any point in the C# decompiled code viewer. IL code can be shown in a separate tool window or as comments to C# decompiled code.

Image may be NSFW.
Clik here to view.
IL viewer in dotPeek 10

Find Usages in dotPeek now works asynchronously, similarly to how it does in recent versions of ReSharper. This means that even if you started to look up for usages, you can still work with dotPeek without needing to wait until it finalizes the search.

In other news, dotPeek 10 supports color themes: you can now select one of 3 default themes, or choose to synchronize your color scheme preference with Visual Studio settings.


Get ReSharper Ultimate 10

Licensing and upgrade options

In terms of licensing and upgrades, some changes are introduced with this release:

  • ReSharper 10 is a free upgrade for you if you have a valid ReSharper upgrade subscription. ReSharper C++ 10 is free if you have a valid upgrade subscription to ReSharper C++.
  • In case your upgrade subscription expired, you can now subscribe to ReSharper, ReSharper C++, ReSharper Ultimate or All Products pack with a discount and get the second year of subscription for free. For details on how new subscription-based licensing works, please see JetBrains Toolbox.
  • Starting from November 2, 2015 dotTrace, dotCover and dotMemory are only licensed as part of ReSharper Ultimate. Read this post for details.
  • If you need a formal quote or any other assistance, you are welcome to contact JetBrains sales.

The post Welcome ReSharper Ultimate 10 RTM appeared first on .NET Tools Blog.

Navigating to Source Code from dotMemory

We always look for ways to increase the value of ReSharper Ultimate and synergize our .NET tools. For example, in ReSharper Ultimate 9.2, we made it possible to profile ReSharper’s run configurations, so if you have both dotTrace and ReSharper you can even profile individual static methods in your project.

Now the time has come for dotMemory to get its portion of ReSharper’s functionality. dotMemory always lacked the ability to examine the source code of the profiled application. Just imagine how easier life would get if you could seamlessly continue the investigation of a suspicious object (one that may cause a leak) by examining its source code. Well, starting with dotMemory 10 and ReSharper Ultimate 10, you can!

To navigate to the source code from dotMemory

  1. In Visual Studio, open the solution that you have a memory snapshot for.
  2. In dotMemory, in any view that displays object types, right-click the type you’re interested in.
    Image may be NSFW.
    Clik here to view.
    Find declaration context menu
  3. In the context menu, select Find declaration (Visual Studio)*. This will open the Find Type Declaration window that lists all found type declarations in running Visual Studio instances.
    * As an alternative to steps 2 and 3, select a type and press Ctrl+L.
    Image may be NSFW.
    Clik here to view.
    Find type declaration window
  4. Click on the found declaration to navigate to it in Visual Studio.
    Image may be NSFW.
    Clik here to view.
    Type declaration in VS

After you navigate to any type declaration at least once, the context menu will offer an additional item, Go to declaration (<solution_name>) (also available via the Ctrl+L shortcut). Selecting it instantly navigates you to the type declaration in a specific solution, bypassing the Find Type Declaration window.

Image may be NSFW.
Clik here to view.
Go to declaration context menu

To see for yourself how the feature works, download the latest dotMemory or ReSharper Ultimate. If you have any comments or questions, please feel free to ask in the comments to this post. Your feedback is greatly appreciated!

The post Navigating to Source Code from dotMemory appeared first on .NET Tools Blog.


Enters ReSharper Ultimate 10.0.2

Download ReSharper Ultimate 10.0.2, which includes a slew of bug fixes and improvements to ReSharper, ReSharper C++, dotTrace, dotMemory, dotCover and dotPeek.

Image may be NSFW.
Clik here to view.
ReSharper Ultimate 10.0.2

Highlights of this update

  • Unit testing. In addition to support for NUnit 3.0 RTM, unit testing has seen noticeable improvements in terms of support for test cases and grouping, handling of debugging sessions, time spent for setup and teardown code runs. Many presentation glitches in Unit Test Sessions have been fixed as well.
  • Bogus red code. We have fixed incorrectly highlighted red code in solutions containing .modelproj and .wixproj project types, as well as in DNX projects, projects targeting .NET Framework 4.6 and portable libraries.
  • ReSharper Build. There’s an array of improvements in the way ReSharper Build works, notably with regard to monitoring changed dependencies, respecting settings that govern whether to display results upon completing a rebuild, and better support for specifics of Visual Studio 2015.
  • JavaScript and TypeScript. Improvements include a performance tuneup, as well as fixes to incorrect code inspections, usage search and navigation.
  • In other news, Stack Trace Explorer has received a set of fixes; you can now disable ReSharper code tooltip if you prefer how other Visual Studio extensions decorate the tooltip; introducing a variable from inside a lambda expression doesn’t produce broken code anymore; and you can export items from File Structure again!

ReSharper C++, dotCover, dotTrace, dotMemory and dotPeek have received their varying shares of bug fixing in the past month but it’s ReSharper that leads the breed in terms of sheer number of improvements. For your reference, this is how distribution by subsystem looks like for issues fixed in ReSharper 10.0.2:

Image may be NSFW.
Clik here to view.
ReSharper 10.0.2: fixed issues by subsystem

If you’re interested, here’s the entire list of fixes across ReSharper Ultimate products.

Important note to Visual Studio 2015 users

If you have migrated to Visual Studio 2015, please make sure to install VS2015 Update 1. This is especially important if you are experiencing Visual Studio freezes upon starting debugging, pulling from your VCS repository, starting a refactoring, editing XAML in visual mode or in other scenarios described in comments to RSRP-450181. Visual Studio 2015 Update 1 is known to fix a part of MSBuild calls that these freezes are usually traced back to.

Time to download

Upon reading the above, we hope you’re now well prepared to download and install ReSharper Ultimate 10.0.2.

This release wraps up the year for the .NET team here at JetBrains. We’d like to welcome 2016, and we’re hoping to open EAP for a new ReSharper Ultimate release sometime in January.

The post Enters ReSharper Ultimate 10.0.2 appeared first on .NET Tools Blog.

ReSharper Ultimate 10.1 EAP 2

The first EAP build of ReSharper Ultimate 10.1 introduced a massive list of new features and improvements, which spanned two blog posts. And here we are today with another EAP build, which you can give a try right away.

ReSharper

The most notable changes in ReSharper were merged this time by the JavaScript/TypeScript team. Among these changes are improvements in performance of caches and File Structure view, reworked Rename refactoring (which can now rename files corresponding to TypeScript types), as well as support for TypeScript implementations and overrides in Find Usages.

TypeScript keywords var, let, and const are now resolved according to the types they reference. This means that you can Ctrl-click these keywords to go the corresponding type declarations or just hover the mouse over to learn what a keyword refers to.

Image may be NSFW.
Clik here to view.
ReSharper support for var, let, const in TypeScript

JavaScript/TypeScript formatter settings became much more granular. You can now specify the right margin for your code and define whether and how various code constructs should be wrapped. For example, you can specify where to place dots in multi-line chained method calls or you can opt for a ‘comma-first’ style for lists, object literals and function calls.

Image may be NSFW.
Clik here to view.
New features in JavaScript and TypeScript formatter

ReSharper 10.1 also brings initial support for Node.js. All ReSharper goodies you are well familiar with, like completion, code inspections, quick-fixes, and navigation features are now available for Node.js. However, we badly need your feedback on how ReSharper handles different things in your specific scenarios with Node.js.

Image may be NSFW.
Clik here to view.
ReSharper support for Node.js

dotPeek

For a long time, opening .nupkg files from disk was the only way to load assemblies from NuGet packages. In this dotPeek EAP build, you can try two more ways: find and load NuGet packages (and their dependencies if necessary) from any online package source, or load packages listed in a packages.config file in your Visual Studio project.

Image may be NSFW.
Clik here to view.
dotPeek: Loading assemblies from NuGet packages

Another handy improvement is that dotPeek automatically highlights usages of the symbol under the caret. We hope now that obfuscated identifiers will not get lost as easily in decompiled code.

Image may be NSFW.
Clik here to view.
dotPeek: highlighting symbol usages

dotMemory

All your navigation history through dotMemory profiling results is now recorded and you can quickly return to any view or diagram that you once opened using the browser-style Back and Forward buttons.

Image may be NSFW.
Clik here to view.
Back and Forward buttons for dotMemory

dotCover

Coverage filters, which let you ignore specific parts of your code when calculating coverage, are now supported in Continuous Testing.

Give it a try

Interested in the improvements described above? Please go on and download ReSharper Ultimate 10.1 EAP.

If you are experiencing any issues with the EAP, please report them to issue trackers of affected products: ReSharper, ReSharper C++, dotTrace, dotCover, dotMemory, dotPeek.

The post ReSharper Ultimate 10.1 EAP 2 appeared first on .NET Tools Blog.

ReSharper Ultimate 2016.1 is released

We’ve just finalized an update to ReSharper Ultimate and welcome you to download Resharper Ultimate 2016.1 RTM!

Watch the following video for a summary of what is new in ReSharper Ultimate 2016.1, or read on for the main highlights of this release:

ReSharper

Along with 950+ fixes, major highlights of ReSharper 2016.1 are the following:

  • A variety of new context actions: ReSharper 2016.1 brings a set of new Alt+Enter actions to check method input parameters, manipulate strings, convert strings to objects, comment and uncomment code selections, and many more!
  • A new Invert Boolean Member refactoring. The refactoring can be invoked on a method, property, local variable or a parameter to invert the boolean value it returns and update other members that receive values from it.
    Image may be NSFW.
    Clik here to view.
    Invert Boolean Member refactoring
  • Smart Paste feature that ensures the right escaping in string literals that you copy/paste around your code. It works in C#, VB.NET, JavaScript, XML, XAML and HTML files. Image may be NSFW.
    Clik here to view.
    Smart Paste

    Two new context actions, “Convert XML string to a LINQ to XML object” and “Convert JSON string to a Newtonsoft JSON.NET object”, complete the workflow of transferring existing XML or JSON into C# code.
  • Asynchronous Find Code Issues. Starting with version 2016.1, Find Code Issues works in the background both in ReSharper and ReSharper C++. This lets you keep editing or navigating your code while ReSharper runs its analysis.
  • New WCF-specific code inspections, quick-fixes and context actions.
  • Initial support for Node.js. All ReSharper goodies you are well familiar with, like completion, code inspections, quick-fixes, and navigation features are now available for Node.js.
    Image may be NSFW.
    Clik here to view.
    Node.js support
  • ReSharper 2016.1 is way better at understanding VB.NET 14, introducing support for string interpolation, multi-line strings, null-conditional operators, partial modules and interfaces, year-first date literals and XML documentation comments.
  • Out-of-the-box xUnit.net support. ReSharper 2016.1 provides built-in support for xUnit.net and doesn’t require a separate extension to be installed anymore. This means ReSharper will discover your xUnit.net tests and allow you to run and debug them right from the editor.
  • Support for JSON files and schemas includes the File Structure view, a “Convert JSON string to a Newtonsoft JSON.NET object” context action, JSON schema-aware code completion, inspections and quick-fixes.
    Image may be NSFW.
    Clik here to view.
    JSON file structure
  • JavaScript and TypeScript support enhancements include a reworked Rename refactoring (which can now rename files corresponding to TypeScript types), granular formatter settings, and full support for TypeScript 1.8. In addition, ReSharper starts to properly handle some bits of TypeScript 2.0: readonly properties, implicit indexers, private and protected constructors, abstract properties, and nullable types. Please expect a separate blog post describing TypeScript and JavaScript support in ReSharper 2016.1 shortly.
  • JSDoc improvements. ReSharper can now parse generics, HTML markup, and parameters with properties in your JSDoc comments. Everything that ReSharper infers from JSDoc becomes immediately available in code completion suggestions.
  • Code style features keep improving. Code styles can now be applied with a single command, ReSharper | Edit | Apply Code Style (Ctrl+Alt+S). Reformat Code, Apply Code Style and Run Code Cleanup commands are now accessible from Alt+Enter menu when you make a selection in the editor. In addition, a dedicated action for reformatting code is back, and it can be invoked from the main menu (ReSharper | Edit | Reformat Code) to reformat code depending on the context. Another improvement covers the use of braces, which ReSharper now helps you make consistent across your code base. Preferences for each kind of code block can be configured separately in a code style options page, and ReSharper makes sure to respect these preferences:
    Image may be NSFW.
    Clik here to view.
    Quick-fix to add missing braces
  • Intermediate Language viewer is now built into ReSharper. The IL Viewer, which first appeared in dotPeek 10, is now available for drilling down library code right in Visual Studio. To check how it works, navigate to any library symbol (which can be as easy as Ctrl-clicking it), and then choose ReSharper | Windows | IL Viewer in the menu.
  • Optimize References learns to handle NuGet references, and Remove Unused References starts to support NuGet references as well.
    Image may be NSFW.
    Clik here to view.
    Analyze NuGet references

ReSharper C++

ReSharper C++ 2016.1 comes with 270+ fixes and a set of larger improvements:

  • To-do Explorer: ReSharper C++ 2016.1 introduces the long-awaited navigation view, which lets you view, group and filter comments that contain one of the 3 default to-do patterns (Bug, Todo and Not Implemented) and any custom patterns that you might want to set up.
    Image may be NSFW.
    Clik here to view.
    To-do explorer in ReSharper C++ 2016.1
  • New context actions and quick-fixes. ReSharper C++ 2016.1 comes with quick-fixes to change variable type, function return type, type of unmatched out of class definition or declaration. Another new quick-fix lets you create a field from constructor parameter.
    Image may be NSFW.
    Clik here to view.
    Quick-fix to create field from constructor parameter

    We also added a set of new context actions and quick-fixes for working with #include directives; quick-fixes to change type of unmatched out-of-class function definition; to make a data member mutable or a member function non-const; to make a base class or a function non-final; to move all function definitions inside a selection.
  • The list of supported C++ language features is extended with generalized lambda captures, exception specifications, user defined literals and delegating constructors.
  • ReSharper C++ 2016.1 enhances Rename refactoring, which can now automatically rename corresponding files (both source and header) along with code symbols, and to update usages in include directives.
  • ReSharper C++ 2016.1 adds support for the Boost.Test framework to its Unit Test Runner. Please note that only Boost version 1.60 is supported.
    Image may be NSFW.
    Clik here to view.
    Boost.Test support in ReSharper C++
  • Code generation improvements. The Generate stream operations action available via Alt+Ins can now generate stubs for Boost.Serialization functions: save(), load() and serialize(). In addition, formatting options are now taken into account when generating code.
  • All ReSharper C++ actions are now banned from changing library headers.

Other tools within the ReSharper Ultimate family have received their shares of improvement as well.

dotCover

  • Test execution in Continuous Testing for MSTest and xUnit test becomes faster with dotCover 2016.1 thanks to pre-loading test runners.
  • Coverage filters are now supported in Continuous Testing.
  • Quick search results are now highlighted in the coverage tree.
  • We added a button to explore the stack trace of the selected test in Stack Trace Explorer:
    Image may be NSFW.
    Clik here to view.
    Improved Continuous Testing tool window
  • Another improvement applies to the relationship between dotCover console runner and TeamCity. TeamCity is now tuned to understand the output of the console runner and can highlight its errors and warnings in the build log.

dotTrace

  • dotTrace 2016.1 adds its Threads diagram into Visual Studio. Now, the integrated Timeline Viewer gets exactly the same diagram, which you can use to select threads, time range, and of course, view thread activity and filtered time intervals.
  • Moreover, the Threads diagram in both standalone and Visual Studio viewers gets smart tooltips. Hold the mouse over a specific time point on the timeline and a tooltip containing current thread state, executed method, and other info will appear. Tooltips are context-sensitive. This means that if some filter is applied, the tooltip will contain additional data on the filtered event. For example, when the File I/O filter is selected, the tooltip additionally shows info about file operation, file name, and data size.
    Image may be NSFW.
    Clik here to view.
    Threads diagram in Visual Studio with smart tooltips

dotMemory

dotMemory 2016.1 adds browser-style Back and Forward buttons to navigate across different views in profiling results.
Image may be NSFW.
Clik here to view.
Back and Forward navigation in dotMemory

dotMemory Unit

dotMemory Unit 2.2 gets a number of improvements:

  • Object selection queries now support open generic types, which is useful if you want to get all substitutions of your generic type.
  • The GetNewObjects, GetSurvivedObjects, and GetDeadObjects methods get overloads that accept query as a parameter. This allows to avoid one more GetObjects call and simplify assertions.
  • You can select objects by wildcards using the Like and NotLike queries on types, interfaces, and namespaces.
  • You can use three constants when specifying a directory for saving workspaces in the DotMemoryUnit attribute. The constants are written in angle brackets: <User>, <LocalAppData>, <CommonAppData> and stand for, correspondingly, %USERPROFILE%, %APPDATA%, and %LOCALAPPDATA% directories.
  • Improved performance of key queries: Type.Is, Interface.Is and Namespace.Like.
  • Tests that execute queries from child processes are now handled correctly.

Image may be NSFW.
Clik here to view.
Improvements in dotMemory Unit 2.2

dotPeek

  • dotPeek 2016.1 learns to handle extension methods as instance methods and automatically highlights usages of the symbol under the caret.
  • With dotPeek 2016.1 you can load NuGet packages and their dependencies from any online package source, or load packages listed in a packages.config file in your Visual Studio project.
    Image may be NSFW.
    Clik here to view.

Licensing

If you have an active license to ReSharper, ReSharper C++ or ReSharper Ultimate, we encourage you to start using 2016.1 straight away.

As we have just recently switched to subscription licensing, some of you may still use older, pre-subscription licenses. If you are not sure whether your licenses are eligible to use with 2016.1, or if you need a formal quote or any other assistance, please get in touch with JetBrains sales anytime.


Get ReSharper Ultimate 2016.1

The post ReSharper Ultimate 2016.1 is released appeared first on .NET Tools Blog.

ReSharper Ultimate 2016.1.1 is released

You can now download ReSharper Ultimate 2016.1.1, which includes a set of bug fixes and improvements to ReSharper and ReSharper C++.

Highlights of this update

Note that dotCover, dotTrace, dotMemory and dotPeek 2016.1.1 are basically all compatibility updates that have not received any considerable changes by themselves.

If you are interested in the improvements described above, please download and install ReSharper Ultimate 2016.1.1.

The post ReSharper Ultimate 2016.1.1 is released appeared first on .NET Tools Blog.

ReSharper Ultimate 2016.1.2 is here

We have just released a fresh bug fix update to our tools and welcome you to download ReSharper Ultimate 2016.1.2.

Major highlights

dotCover, dotTrace, dotMemory and dotPeek 2016.1.2 are updated solely for compatibility reasons and don’t include significant changes.

In case you were affected by the issues mentioned above, we recommend that you download and install ReSharper Ultimate 2016.1.2.

The post ReSharper Ultimate 2016.1.2 is here appeared first on .NET Tools Blog.

ReSharper Ultimate 2016.2 EAP: What’s new in builds 9-11

ReSharper Ultimate 2016.2 EAP has been open for over two months, and we are approaching release now. Most probably, the new things described below will round up the feature set of upcoming ReSharper Ultimate 2016.2. So here is what’s new in the latest EAP builds.

ReSharper

In addition to 100+ fixed issues in the mainline ReSharper, there are some new features worth mentioning:

  • Go to Text navigation (Ctrl+T,T,T) lets you quickly find and navigate to any text in source and textual files. This new feature uses trigram indexing to make text search blazingly fast. Similar to other navigation commands, if there are too many matching items you can hit + on the numeric keypad to explore results in the Find Results window.
    Image may be NSFW.
    Clik here to view.
    Go to Text command
  • Warnings in solution-wide analysis will help you constantly keep track of all warnings in your solution: both actual compiler warnings and ReSharper’s inspections with the ‘Warning’ severity level. Before, the status bar indicator would turn green as soon as the last error in the solution was fixed. Now, the indicator can stay orange while there are unresolved warnings. It is still up to you whether to enable the solution-wide analysis and whether to include warnings in it: just right-click the status bar indicator to configure everything.
    Image may be NSFW.
    Clik here to view.
    Warnings in solution-wide analysis
  • A way to propagate XML documentation with the <inheritdoc/> tag, which is a good alternative to copying documentation from base types/members to derivatives. Although the tag is non-standard, it is understood by tools such as NDoc, Sandcastle, and Stylecop; and there are also requests to support it in .NET Core and Roslyn.
    So you can now use a context action to add the <inheritdoc/> comment to derived members; you can enable adding <inheritdoc/> automatically when generating missing/overriding members; the Quick Documentation popup will display the correct documentation even if the tag explicitly refers to specific symbol, i.e. <inheritdoc cref="SomeSymbol"/>.
  • The Process Explorer window (ReSharper | Windows | Process Explorer), which was previously only available in dotPeek, provides you with the list of currently running processes, allows exploring their modules and decompiling those of them that are .NET assemblies.
    Image may be NSFW.
    Clik here to view.
    Process Explorer window
  • New formatter options that let you control spaces before and after ++ and -- operators as well as spaces before and inside parenthesis of checked and default expressions.
  • In terms of TypeScript, ReSharper now fully supports TypeScript 2.0. Another long awaited feature makes the main navigation commands (Go to Declaration and Find Usages) work correctly when dealing with type aliases.

ReSharper C++

  • You can now generate documentation comments for C++ symbols simply with a context action. If necessary, you can customize the comment stub by editing the ‘doc’ live template that ReSharper uses for generation.
    Image may be NSFW.
    Clik here to view.
    Surround templates in completion lists
  • When your caret is on one of a function’s exits (return, throw, etc.) ReSharper C++ will automatically highlight all other function exits including exits from loops and switch statements.
  • New code inspections and quick-fixes: ‘Missing default case in a switch statement’ and ‘Non-explicit conversion operator’
  • Code style for default pointer initializer. You can specify 0, nullptr or NULL as the preferred initializer in the options, and ReSharper will help you maintain this style in your code base.

dotTrace

Recursive call stacks can be deep and difficult to analyze. Previously, Timeline Viewer would show call stacks “as is”, i.e recursive calls were simply shown as they were called: one after another in the stack trace. Of course, on complex call stacks with multiple recursive calls this would result in almost infinite stack scrolling. Now, Timeline Viewer allows you to fold such calls to streamline stack analysis.

Image may be NSFW.
Clik here to view.
Recursive call stack in dotTrace Timeline Viewer 2016.2

dotMemory

dotMemory now allows you to compare memory snapshots stored in different workspaces, or, in other words, collected in different profiling sessions.

For example, this can be useful to find out how particular changes in code affect your application’s memory usage. All you need are two snapshots taken before and after committing changes.

Image may be NSFW.
Clik here to view.
Cross-workspace snapshots comparison

dotCover

  • Filtering processes from console runner lets you reduce unnecessary overhead by excluding child processes that are irrelevant to the coverage analysis. To enable a process filter, use the /ProcessFilters parameter. For example, /ProcessFilters=+:prA;+prB will exclude all processes except prA and prB; /ProcessFilters=-:prC will exclude prC from the coverage.
  • Hide auto-properties option allows you to exclude auto-properties from the coverage analysis.

Please feel free to download the latest 2016.2 EAP build and let us know what you think. If you have any problems, please raise issues in ReSharper, ReSharper C++, dotTrace, dotMemory or dotCover issue trackers.

The post ReSharper Ultimate 2016.2 EAP: What’s new in builds 9-11 appeared first on .NET Tools Blog.

ReSharper Ultimate 2016.2 Release Candidate

Ladies and gentlemen, you can now download ReSharper Ultimate 2016.2 Release Candidate!

All new features and improvements that we have revealed and blogged about in recent months are now in pre-final state.

This includes things as exciting as textual search via Go to Text, structural navigation with Tab, and warnings in solution-wide analysis, as well as more mundane fixes, of which there are plenty.

If you still have pressing issues with 2016.2 RC or if something that we assume fixed doesn’t actually solve your issues (btw, everyone who has been unhappy about Move to Folder behavior with TFS, we’re waiting for you to confirm a fix), this is probably your last chance to let us know via comments here, or better yet, via issues in respective product trackers: ReSharper, ReSharper C++, dotTrace, dotMemory, dotPeek or dotCover.

The post ReSharper Ultimate 2016.2 Release Candidate appeared first on .NET Tools Blog.


ReSharper Ultimate 2016.2 is here!

We at JetBrains have just finalized an update to the ReSharper Ultimate family, and we welcome you to download ReSharper Ultimate 2016.2 RTM!
Image may be NSFW.
Clik here to view.
ReSharper 2016.2 is released

Read on for the main highlights of this release:

ReSharper

In addition to 750+ fixes, major highlights of ReSharper 2016.2 are the following:

  • Support for ASP.NET Core 1.0 and .NET Core 1.0 projects, which means that ReSharper now correctly resolves project references and provides its core set of features (code inspections, code completion, navigation, search and refactorings) in projects of this type. Please note that unit testing is not yet supported .NET Core projects. This is going to be addressed in upcoming updates.Image may be NSFW.
    Clik here to view.
    ASP.NET Core support
  • Structural navigation, a new feature informally referred to as “Make Tab Great Again”. You can now use Tab and Shift+Tab keys to quickly move the text selection to the next or previous code element without having to use the cursor keys, letting you quickly navigate to the next important piece of code you need to edit.
    Image may be NSFW.
    Clik here to view.
    Structural Navigation in ReSharper 2016.2

    Tab will certainly continue to handle template expansion, and will also indent (and Shift+Tab will outdent) when the text caret is placed at the start of a line. However, when the text caret is within a code element, Tab and Shift+Tab will start navigating and selecting the structure of your code. You can change this behavior in ReSharper options anytime.
  • Go to Text navigation (Ctrl+T,T,T) lets you quickly find and navigate to any text in source and textual files. This new feature uses trigram indexing to make text search blazingly fast. Similar to other navigation commands, if there are too many matching items you can hit + on the numeric keypad to explore results in the Find Results window.
    Image may be NSFW.
    Clik here to view.
    Go to Text command in ReSharper 2016.2
  • Warnings in solution-wide analysis help you constantly keep track of all warnings in your solution: both actual compiler warnings and ReSharper’s inspections with the Warning severity level. The status bar indicator can now stay orange while there are unresolved warnings. It is still up to you whether to enable the solution-wide analysis and whether to include warnings into it: just right-click the status bar indicator to configure everything to your liking.
    Image may be NSFW.
    Clik here to view.
    Warnings in solution-wide analysis
  • Marking references as used at runtime to exclude them from code cleanup performed by the Optimize References and Remove Unused References features.
  • New C# typing assistant features, such as auto-replacing MethodName(.) with MethodName()., and correcting mistyped @$ prefixes for verbatim string interpolations.

  • Rearrange code improvements. For example, it is now available in interpolated string inserts, and in expressions with 3 and more operands; Greedy brace feature now works for opening brace, braces of types and namespace declarations.
  • Reworked surround templates. If you need to surround a piece of code with a template, just select the code, and type in the name of a template you need: no extra shortcuts required. In other news, a single template can now be used for for creating code (as a live template) and for surrounding existing code (as a surround template).
    Image may be NSFW.
    Clik here to view.
    Surround templates in completion lists
  • A new refactoring to move members to another part of a class. You can also use the refactoring over a region to move all region members into a new file with a name inferred from the region name.
  • New quick-fixes and context actions that help simplify string interpolation inserts, revert the order of iteration in simple for loops, or fix awaiting of a void method by making it return Task. (By the way, existing quick-fixes that make methods async now suggest using Task instead of void.) In other news, you can now check all parameters of a method for null (or empty strings) with a single context action. You can even uncomment or even delete a comment via Alt+Enter. Image may be NSFW.
    Clik here to view.
    Context action to add guard clauses for all arguments at once
  • Assembly dependency diagram that visualizes how assemblies are interrelated via references.
  • HTML analysis inside string literals in .cs, .js, and .ts files, which can be enabled with the context action or with a comment /*language=html*/ ahead of a string literal. You can now use the Mark HTML here action to enjoy syntax highlighting, error detection and other HTML goodies right inside the string literal.
  • Regular expression assistance in string literals can now also be enabled with a comment /*language=regexp|jsregexp*/ before the string literal. Image may be NSFW.
    Clik here to view.
    Language injection with comments
  • JSON value helpers allow you to tell ReSharper to provide code completion or validation for your own JSON files. You can add a helper in the JSON Value Helpers options page, matching based on a filename mask and/or schema match. Custom JSON schema catalogs can also be added in JSON options. These can be either a file, or a URL, which will be downloaded in the background, and periodically updated. Image may be NSFW.
    Clik here to view.
    JSON value helpers
  • Support for the <inheritdoc/> tag in XML documentation comments, which is a good alternative to copying documentation from base types/members to derivatives.
  • C# formatter improvements: new options for indenting of parentheses and code inside them; for controlling spaces before and after ++ and -- operators as well as before and inside parenthesis of checked and default expressions.
  • Improved IL Viewer: types, members, type parameters, local variables, etc. are contextually highlighted; loops in your code can be distinguished by indents and comments. Image may be NSFW.
    Clik here to view.
    IL viewer with highlighting and formatted loops
  • String interpolation suggestions, quick-fixes and context actions are now available for VB.NET. Context actions to convert a string literal to an interpolated string, or insert an interpolated argument are here as well.Image may be NSFW.
    Clik here to view.
    Concatenation to interpolation in VB.NET
  • Improved CSS support: ReSharper’s code inspections, code completion, navigation, search and refactorings are now also available for CSS variables. In addition, several fixes for better spec handling are introduced. Image may be NSFW.
    Clik here to view.
    CSS variables support in ReSharper 2016.2
  • Extended TypeScript/JavaScript support including:
    • Generating code with code completion in TypeScript (ctorf/ctorp, overrides, lambdas).
    • Improved Find Usages and Rename for union and intersection types.
    • Full support of TypeScript 2.0.0 features, including this for functions, control flow aware type guards, path mappings, optional class members, the never type.
    • If you have an abstract class implementing an interface, you can now generate missing members abstract, using the Generate action (Alt+Insert) or a quick-fix.
    • Go to Declaration and Find Usages work correctly when dealing with type aliases.
  • The Process Explorer window (ReSharper | Windows | Process Explorer), which was previously only available in dotPeek, provides you with the list of currently running processes, allows exploring their modules and decompiling those that are .NET assemblies.
    Image may be NSFW.
    Clik here to view.
    Process Explorer window in ReSharper 2016.2

ReSharper C++

ReSharper C++ 2016.2 comes with 200+ fixes and a set of larger improvements:

  • Inline Variable Refactoring is now available in ReSharper C++.Image may be NSFW.
    Clik here to view.
    Inline Variable refactoring for cpp
  • Quick Documentation pop-up appears in ReSharper C++ 2016.2. It can display documentation from Doxygen comment blocks, and even if there is no Doxygen documentation for a symbol, it will display the symbol signature. Image may be NSFW.
    Clik here to view.
    Quick documentation popup in ReSharper C++
  • New code inspections and quick-fixes: There is a new code inspection that warns you about missing include guards in your header files. As a quick-fix, it lets you automatically add #pragma once directive. Another new inspection detects a missing default case in a switch statement with a corresponding fix to add it.
  • Warnings about usages of classes and functions marked with the [[deprecated]]/__declspec(deprecated) attribute. Image may be NSFW.
    Clik here to view.
    ReSharper showing highlight for deprecated C++ code
  • Improved C++14 support: variable templates and decltype(auto).
  • Support of the [[noreturn]]/__declspec(noreturn) attribute in control flow analysis.
  • New code style preferences for #include directives in generated code.
  • Code style for default pointer initializer. You can specify 0, nullptr or NULL as the preferred initializer in the options, and ReSharper C++ will use it in generated initializers.
  • Automatic completion in C++ can now suggest symbols that are not included in the current file. The corresponding #include directives are added automatically.Image may be NSFW.
    Clik here to view.
    Import suggestions in C++ auto-completion
  • You can now generate documentation comments for C++ declarators, classes and macro definitions with a context action. The comment stub can be customized by editing the ‘doc’ live template that ReSharper uses for generation.
  • When your caret is on one of the exit points of a function/loop/switch (return, throw etc.), ReSharper C++ will automatically highlight all other exit points.
  • New formatter settings for single-line functions and lambdas, blank lines around single line function definitions, line breaks before member initializer list, and space between closing angle brackets in template arguments (for conformance with pre-C++11 compilers).
  • The mock function generator now supports the Trompeloeil framework.
  • Completion, usage search and rename of symbols in Doxygen comments.
  • __RESHARPER__ macro that allows you to detect when ReSharper is parsing your source code and, if necessary, disable ReSharper’s preprocessor for some code.
  • Performance improvements in indexing and code analysis.

Other ReSharper Ultimate tools have received their shares of improvement as well.

dotCover

  • dotCover 2016.2 lets you exclude auto-properties from coverage analysis with Hide auto-properties option.
  • Filtering processes from console runner allows you reduce unnecessary overhead by excluding child processes that are irrelevant to the coverage analysis. To enable a process filter, use the /ProcessFilters parameter. For example, /ProcessFilters=+:prA;+prB will exclude all processes except prA and prB; /ProcessFilters=-:prC will exclude prC from the coverage.

dotTrace

Recursive call stacks can be deep and difficult to analyze. Previously, Timeline Viewer would show call stacks “as is”, i.e recursive calls were simply shown as they were called: one after another in the stack trace, which would lead to long scrolling. With dotTrace 2016.2 Timeline Viewer, you can easily fold such calls to streamline stack analysis.Image may be NSFW.
Clik here to view.
Recursive call stack in dotTrace Timeline Viewer 2016.2

dotMemory

dotMemory now allows you to compare memory snapshots stored in different workspaces: that is, collected in different profiling sessions. This can be useful to check how particular changes in code affect your application’s memory usage. All you need are two snapshots taken before and after making the changes.
Image may be NSFW.
Clik here to view.
Cross-workspace snapshots comparison in dotMemory 2016.2

For the full list of fixes in dotMemory 2016.2 please refer to release notes.

dotPeek

  • With dotPeek 2016.2, the IL Viewer displays code in a more readable manner: types, members, type parameters and local variables are contextually highlighted; loops in your code can be distinguished by indents and comments.
  • dotPeek 2016.2 adds Assembly Dependency Diagram to the existing visual dependency analysis tools. You can invoke it on assemblies selected in the Assembly Explorer and explore how the assemblies are referencing each other. Image may be NSFW.
    Clik here to view.
    Assembly_Hierarchy

Licensing

If you have an active subscription for ReSharper, ReSharper C++ or ReSharper Ultimate, we encourage you to start using 2016.2 straight away.

As we have just recently switched to subscription licensing, some of you may still use older, pre-subscription licenses. If you are not sure whether your licenses are eligible to use with 2016.2, or if you need a formal quote or any other assistance, please get in touch with JetBrains sales anytime.


Get ReSharper Ultimate 2016.2

The post ReSharper Ultimate 2016.2 is here! appeared first on .NET Tools Blog.

ReSharper Ultimate 2016.2: video and code samples

We have released ReSharper Ultimate 2016.2 last week, which introduced a whole lot of updates across ReSharper, ReSharper C++ and dotPeek, as well as a bunch of fixes and improvements in dotTrace, dotCover, and dotMemory.

In case you feel that reading a multi-screen list of what’s new is too daunting, our old friend Hadi Hariri has come up with an under-10-minutes summary video:

In the video, Hadi uses a lot of code samples from a special repository that we maintain in order to illustrate changes in new ReSharper Ultimate versions in a very code-centric way.

If you like to learn what’s new in the latest ReSharper by playing with code that exposes the recent improvements, go ahead and clone this repository, which you can navigate using ReSharper’s own To-do Explorer.

The post ReSharper Ultimate 2016.2: video and code samples appeared first on .NET Tools Blog.

ReSharper Ultimate 2016.2.1 is available

What’s new in the latest ReSharper 2017.2 EAP builds?

Image may be NSFW.
Clik here to view.
ReSharper 2017.2 EAP
It’s been four weeks and 7 EAP builds since we blogged about the ReSharper Ultimate 2017.2 EAP (Early Access Program) — time to have a thorough look at what’s new since!

Improved C# 7.1 support in ReSharper

With C# 7.1 around the corner, several new language features will come available. In our first ReSharper 2017.2 EAP, we already added support for the default literal. This newest EAP comes with support for a change in pattern matching with generic types, full support for async main, and supports tuple projection initializers.

Traditionally, when we would want to project a collection and then run LINQ over it, we’d have to resort to using either a helper class or an anonymous type for doing that projection. Not only that: if we just wanted the values for name and age, we’d have to allocate those explicitly as well:

var item = list
    .Select(p => new { p.Name, p.Age })
    .FirstOrDefault(p => p.Age > 21);

var name = item.Name;
var age = item.Age;

It looks verbose, and in fact there are several things happening under the covers that make this less than optimal. The compiler will generate an anonymous type which we are allocating on the managed heap (for every element in our list). We then have to allocate our name and age as well.

Granted, we could make this a bit more efficient by rewriting the example a little bit, or use C# 7.1’s tuple projection initializers. No anonymous type, less allocatons on the managed heap, and pleasant to read:

(var name, var age) = list
    .Select(p => (p.Name, p.Age))
    .FirstOrDefault(tuple => tuple.Age > 21);

Just like with the anononymous type, C# 7.1 infers the value tuple’s element names from the projection here. We’ve also added an inspection for checking redundant value tuple component names:

Image may be NSFW.
Clik here to view.
Inspection for checking redundant value tuple component names

Note if you want to use this, the ValueTuple type is required. It’s built into .NET 4.7, .NET Core 2.0, Mono 5.0 and .NET Standard 2.0. If you’re on another target framework, the System.ValueTuple package will have to be installed.

When using ReSharper’s Go to Everything (Ctrl+T) or one of the other navigation features, we can find types, type members, files, text, … It’s a powerful search engine, much like the ones we use to find things on the Internet! ReSharper’s search supports partial search terms, CamelHumps, misspellings, … In this EAP build, we made finding things in our projects even more powerful!

ReSharper now returns results when word order is incorrect. What was that method called again? Was it ValidUser() or UserValid()? No worries, Go to … will find it:

Image may be NSFW.
Clik here to view.
Navigation - Word order no longer matters to find results

Sometimes we do know the correct name of what we are looking for. However when that name is something more generic like Service, ReSharper may return a lot of search results…

Image may be NSFW.
Clik here to view.
Navigation for general word returns lots of results

Just like with Internet search engines, ReSharper now supports adding quotes to enforce an exact match:

Image may be NSFW.
Clik here to view.
Navigation supports exact matching using quotes

It’s also possible to use wildcard * or ? inside quotes for a more exact wildcard match. For example "*Service" will show UserService, IssueService, WorkItemService – as long as it ends in Service.

ReSharper – Inspections and quick-fixes

We’ve always had a code inspection that encourages using implicit types using the var keyword (or, depending on your code style, the other way around, using explicit types). This EAP now also applies this inspection and its corresponding quick-fix to out variables:

Image may be NSFW.
Clik here to view.
Use var for out variable

A couple of other inspections were added as well:

  • New code inspection that detects possibly unintended transformations from IQueryable to IEnumerable.
  • More context actions and quick-fixes supporting <inheritdoc/>. We now show a warning when <inheritdoc/> is used in an invalid context. There is also a suggestion for adding <inheritdoc/> when implementing or overriding members, as not adding it would hide documentation from the base symbol.

There are many ways of checking for null values and there are many preferences with our users for what style of null checks should be used when generating code. We have added a new options page, Null checking, where the priority of null checking patterns used by quick-fixes, context actions and code generation actions can be configured:

Image may be NSFW.
Clik here to view.
Null checking priorities

ReSharper – Web

A lot of work in the latest ReSharper Ultimate 2017.2 EAP build was done on the TypeScript side:

  • We improved support for mapped type members in Find Usages and in the Rename refactoring (Ctrl+R, R). For example, the name property from our IDog interface will be found in mapped and derived types now:
    Image may be NSFW.
    Clik here to view.
    Find usages in mapped type
  • For TypeScript 2.3, we added the contextual this for object literals and the --strict option.
  • TypeScript 2.4 enums with string values (or mixed string/number values) are now supported by ReSharper. And when referenced via a mapped type property, string values are correctly found/renamed.
  • TypeScript 2.4 support for generic inference from contextual type returns and generic contextual signatures.

We made several JSON improvements as well, for example when working in package.json. ReSharper knows about the file type and when we invoke Quick Documentation (Ctrl+Shift+F1) on a package name, we can see additional package details as well as links to the home page, tarball and issue tracker:

Image may be NSFW.
Clik here to view.
Quick Documentation in package.json

While we’re in package.json: completion for scoped NPM packages like “@angular/core” now also works:

Image may be NSFW.
Clik here to view.
package.json scoped packages completion

ReSharper – More!

When generating a constructor using the Generate action (Alt+Insert), parameters for that constructor can be made optional:

Image may be NSFW.
Clik here to view.
Make parameters optional

ReSharper Build reduces the time it takes to build our solution by applying heuristics to only build projects that need updating. This latest ReSharper Ultimate 2017.2 EAP build adds .NET Core support to ReSharper Build.

dotPeek

Several other improvements and fixes went into dotPeek. We now have proper decompilation of assemblies that used nameof() in their original source code. We made various improvements and fixes for displaying and navigating in IL code.

SourceLink is a new way of embedding infomation about an assembly’s original source code into the PortablePDB format. Both our standalone decompiler as well as ReSharper now support SourceLink: when an assembly is compiled with the Roslyn compiler flag /sourcelink:<file> (and a source_link.json is generated using, for example, Cameron Taggart’s SourceLink tools), dotPeek will now download sources referenced in the PortablePDB or use the embedded source files when available.

Speaking of PortablePDB – we added some more features to the Metadata tree:

  • Navigation to embedded sources
  • Navigation to source_link.json
  • Display of embedded CustomDebugInformation blobs of the following kinds: AsyncMethodSteppingInformation, TupleElementNames, DynamicLocalVariables, EditAndContinueLocalSlotMap, EditAndContinueLambdaAndClosureMap

Image may be NSFW.
Clik here to view.
PortablePDB metadata with source_link.json

The Go to String (Ctrl+Alt+T) navigation is now integrated into Go to Everything (Ctrl+T). Additionally:

  • It searches for strings in attributes, making it easier to find occurences of a given string in a (decompiled) code base.
  • Improved presentation of long and multiline strings.
  • When searching for a substring in such string, dotPeek now navigates to the substring position instead of jumping to the start of that long or multiline string.

dotTrace and dotMemory

We have been working hard improving the profiler engine powering both dotTrace and dotMemory. First of all, we added support for profiling .NET Standard 2.0 applications, on our own machine or remote.

The profiler core engine now supports setting a directory where temporary files, diagnostics and snapshots are stored. This is especially handy when profiling remote applications: if the profiler has no write access on the system drive, dotTrace and dotMemory can still profile the application.

Several bugfixes went in as well. We fixed a crash of the CLR running the application being profiled when a forced garbage collection happens during garbage collector initialization. A deadlock when the profiler shuts down during forced garbage collection was fixed, too.

ReSharper C++ improvements

A number of changes and new features went into ReSharper C++, including performance improvements – for example on switching build configurations.

Let’s have a look at what else is new.

Code analysis and quick-fixes

An analyzer was added to check when a local variable can be defined as a constant. ReSharper C++ will inform us about that and display a suggestion in the editor.

From the ReSharper settings under Code Editing | C++ | Naming Style, we could already edit the naming styles for generating new entities. We now added an inspection that hints when existing code does not conform to these naming styles. The inspection can be enabled or disabled as well:

Image may be NSFW.
Clik here to view.
Naming Styles in ReSharper C++

An inspection for unused return values shows us when we forgot to return the value. Using a quick-fix, ReSharper C++ can solve things for us:

Image may be NSFW.
Clik here to view.
cpp-unused-return-value

Other inspections and quick-fixes that were added:

  • A quick-fix to add std::move when cannot bind rvalue reference to lvalue.
  • An inspection that shows unused entities with internal linkage.
  • Quick-fix to add an #ifndef/#define/#endif include guard for the Missing include guard inspection.

Editor formatting

Here’s an overview of enhancement to the editor formatter:

  • Support for line wrapping.
  • The formatter supports Clang-format style configuration files (in addition to EditorConfig).
  • Several code formatting settings were added:
    • Option to insert line breaks after template headers and function return types.
    • Options for indentation of parentheses in function declarations, method calls, if/while/for statements.

Language support

The ReSharper C++ team continuously works on adding additional support for the C and C++ languages. For example:

  • Find usages (Shift+F12) and the Rename refactoring (Ctrl+R, R) are now supported for user-defined literals.
  • Anonymous nested structures are now supported in C code .
  • Virtual methods that can be overridden are shown in completion inside class bodies.
  • The type traits std::is_trivially_constructiblestd::is_trivially_copy_assignable
    and std::is_trivially_move_assignable are now supported.
  • More C++17 support!
    • using for attribute namespaces.
    • Code inspections honor [[nodiscard]] and [[maybe_unused]] attributes.

That about wraps it up. We’re looking forward to any feedback you may have on the latest builds of ReSharper, ReSharper C++, dotCover, dotTrace, dotMemory, dotPeek, as well as various command-line packages included in this EAP.

Download the latest ReSharper Ultimate 2017.2 EAP and give it a try!

The post What’s new in the latest ReSharper 2017.2 EAP builds? appeared first on .NET Tools Blog.

ReSharper Ultimate 2017.2 is released

Please welcome ReSharper Ultimate 2017.2 RTM: this year’s second major update to a set of JetBrains .NET tools that includes ReSharper, ReSharper C++, dotCover, dotTrace, dotMemory, and dotPeek.

Image may be NSFW.
Clik here to view.
ReSharper Ultimate 2017.2

Highlights of ReSharper 2017.2 include:

  • Support for .NET Core 2.0 in Visual Studio 2017 15.3. Your favorite code inspections, navigation actions and refactorings are now available in .NET Core 2.0 projects, including the new ASP.NET Core Razor Pages projects. Lots of .NET Core unit testing issues have been resolved along the way, and you can now run xUnit.net, NUnit or MSTest in your .NET Core 2.0 projects.
  • Improved support for C# 7.0 including pattern matching and out variables, as well as initial
    support for C# 7.1
    : the default literal, tuple projection initializers, async main and pattern matching with generics.
  • New code inspections around IEnumerable usage and XML documentation inheritance.
  • Null checking preferences that let you tell ReSharper how you want it to introduce null checks when it generates code.
  • Multiple navigation improvements, including search in any order, exact search, textual search in Go to Everything, and navigating to nearby files.
  • TypeScript, JavaScript, JSON and Angular support improvements, including code completion performance, TypeScript 2.3 and 2.4 features, new kinds of language injections and new TypeScript refactorings.
  • Interactive tutorials to help you get started with ReSharper’s functionality or get up to speed with features in new ReSharper releases.

Other ReSharper Ultimate products have received their share of improvements as well:

  • ReSharper C++ 2017.2 is mostly focused on better language understanding and supporting features from C++11 and C++17. Other changes include enhancements in code formatter and navigation, improved performance, new code inspections and quick-fixes.
  • dotCover 2017.2 improves code coverage performance, starts to support MSTest unit tests in .NET Core applications, and introduces a new kind of markers for coverage and test status indication.
  • dotTrace 2017.2 enables profiling child processes in unit tests, introduces Timeline profiling from the command line, and learns to show navigation paths in the Call Tree view.
  • dotMemory 2017.2 enables importing raw Windows memory dumps and analyzing them using its full range of features.
  • dotPeek 2017.2 supports SourceLink and extends its feature set in terms of navigation and search.

Learn more about the new features and download ReSharper Ultimate 2017.2.

An active subscription to ReSharper, ReSharper Ultimate, ReSharper Ultimate + Rider or All Products pack makes you immediately eligible for this update. If you need to renew your subscription, discuss licensing or receive a formal quote, please get in touch with JetBrains sales anytime.

The post ReSharper Ultimate 2017.2 is released appeared first on .NET Tools Blog.

Viewing all 306 articles
Browse latest View live