ReSharper to Support C++

You already know that we have been working on ReSharper 8 for quite a while, improving navigation, extending the scope of XAML support and introducing a project dependency viewer, among a plethora of other improvements.

We’re setting our sights beyond the immediate 8.0 release though: for several months now, a part of the team has been working on something entirely new yet requested for a couple of years already: support for C++ in Visual Studio.

This is a part of a wider plan to make C++ a first-class citizen of JetBrains tools, along with the intent to come up with a cross-platform C++ IDE announced earlier this year.

C++ is a very powerful and flexible language that has never really went away despite the rise and fame of its inheritors such as C# and Java: there’s a lot of code being written today in C++ and will continue this way for years to come. At JetBrains we feel that many developers using C++ could benefit from some of the tooling that we provide for other languages.

The feature set

C++ is not an easy language to write a parser for, taking into account the preprocessing and resolving necessary, especially when it comes to parsing complex and large code bases. Our biggest goal was and is to perfect this and a lot of effort has gone into it. As such, right now many of the more visible features aren’t there but much of the ground work is done. Right now, internal builds that are being cooked here on the .NET team in JetBrains include:

  • First and foremost, ReSharper-style syntax highlighting.
  • The full stack of context-insensitive navigation including Go to Type, Go to Symbol, Go to File Member and of course the new Go to Everything from ReSharper 8.
  • Context-sensitive navigation including Go to Declaration, Derived Symbols, Base Symbols: all the major features that you’d expect to see when you open ReSharper’s Navigate To menu:
    ReSharper's Navigate To options for C++
  • We also have Find Usages with preview, occurrence filters, different kinds of grouping and everything else that is inherent to ReSharper’s Find Results window.
  • Gutter marks in ReSharper 8′s new action indicator to keep track of inheritance and navigate between hierarchy nodes:
    Gutter marks for C++ inheritance
  • Introduce Variable refactoring:
    ReSharper's Introduce Variable for C++
  • Context actions to substitute macro calls, individual ones as well as nested calls:
    ReSharper's context actions to substitute a single macro call or all nested calls
  • Understanding of templates which enables ReSharper to correctly resolve different template specializations and navigate between them:
    Navigation to C++ template specializations in ReSharper

To give you a better idea of what’s going on, watch the following introductory video:

How can you play with it?

As of now, we don’t have any early builds for you to play with, and the current ReSharper 8 EAP doesn’t include C++ support. We’ll need a few more months to be able to come up with anything public. If you’re impatient, here’s what you can do:

  • Go to C++ support page on the ReSharper web site.
  • Fill in the form specifying C++ language versions, libraries and extensions that you’re using and more relevant information about your C++ development experience. Apologies for making the form a bit lengthy but we’re not collecting this data just for the sake of it.
  • Submit the form to subscribe to private builds of ReSharper with C++ support. As soon as we have a private build that we expect to work in your development environment, we’ll send you an e-mail with a link to that build.

What’s next?

  • First of all, we should emphasize again that C++ support is not going to be a part of ReSharper 8.0 because it’s still very far from production quality.
  • In the coming months, the ReSharper team will be improving C++ support internally in order to eventually come up with a public EAP sometime in the Fall this year. As new language versions and extensions, as well as Visual Studio versions are supported and stability grows, we’ll be sending out private builds to those who have subscribed to receive them.
  • Right now, we’re more or less done with support for С/С++03 with small to medium solutions that don’t use libraries at all or use small libraries. The current development roadmap for the next several months is the following:
    • Support small to medium solutions that use larger libraries including Boost
    • Support С++11
    • Ensure adequate stability with large solutions
    • Support VS-specific extensions and MFC/ATL/WTL
  • As soon as we’re ready to make things public, we’ll open the Early Access Program for C++ support and following the public testing we’ll merge C++ support into the main ReSharper code base so that it becomes a part of ReSharper Full Edition.

Are you excited? Have you been waiting for this for a long time? Subscribe to receive private ReSharper builds with C++ support and by playing with them as they come, help us roll this major part of ReSharper out to the public quicker. In addition, feel free to share your thoughts on the scope of C++ support required for you and specific features you’d like to see right here in comments to this post.

This entry was posted in News and Events, ReSharper Tips&Tricks and tagged , . Bookmark the permalink.

58 Responses to ReSharper to Support C++

  1. Ahmad says:

    just curious, was there some collaboration between Appcode and Resharper team for c++ support?

  2. @Ahman Yes, actually some developers are shared between the two projects.

  3. Anton says:

    The form isnt submitting for me. Just scrolls up a bit every time I click the button. All fields filled and tried in multiple browsers.

  4. Omer Mor says:

    +1 on form submitting bug.

  5. pjmlp says:

    Just to congratulate the team to get this work done and contributing to improving the quality of the tools available to C++ developers.

  6. Jason says:

    This is quite awesome.

    I’m curious what the size of a small to medium project could be described as (I assume number of files/lines of code)?

    Also, any chance there will be support for C++/CLI?

  7. Chris says:

    Awesome! Been wanting this for a long time.

  8. micha says:

    @Jason <1Mb or <100 files is small project for us. Yes, we plan to support c++/cli in future. But probably not in first version.

  9. @Anton, @Omer
    There seems to be a bug in the form that affects a part of those trying to submit. Sorry, we’re trying to sort out what’s happening.

  10. @Anton, @Omer
    Seems like we’ve fixed the problem (which was apparently related to selecting “C” in the list of language version).
    Can you please try fill in the form again? Thanks

  11. Bk says:

    Love the new “substite macro” feature. Is there also a “substite correct spelling” feature? Now THAT would be handy :)

  12. @Bk
    You got us ) Now you have the secret knowledge of one of the reasons why we don’t give out public builds so far

  13. C. Taylor says:

    Wow! Adding Resharper to Visual C++ will make the platform work-able. I recently abandoned a C++/CX project for C# because I couldn’t live without Resharper. THe process of creating classes, refactoring and header files is so time consuming especially since I’ve been spoiled with Resharper on C# for years now. However, C++/CX with its adoption of C++11 has made C++ very attractive. Now with Resharper I look forward to being productive with C++ as well!
    Thank you!

  14. fridge says:

    Finally, it’s on the horizon. I’ve been waiting for such a tool for eons!

  15. Gleb says:

    That’s awesome news!
    Is other Resharper goodness planned to be supported (more complex refactorings, code formatting)?

  16. @Gleb
    Sure. Which refactorings are you looking for in the first place?

  17. ta.speot.is says:

    We have one file that is 33k SLOC, one file that is 24K, and two functions that are 9k+ SLOC.

    It’s a legacy C++ application, I hope I can lean on RePlusPlusser to help me with those sorts of files/functions.

    Also if you could make a R++ Resource Editor and Dialog Editor (or extensions to the existing ones?) that make native Win32 programming a bit less of a chore, that would be amazing.

  18. ticktock says:

    Curious – are you using CLang and the AST to do this?

  19. Omer Mor says:

    @Jura,
    Thanks for fixing the form. Submitted!

  20. John Schroedl says:

    Excellent! I look forward to using this and will try to get in on the private beta cycle if it’s still open.

    Also, please add a few more votes for C++/CLI from my team. That support would mean an easy sell for us.

  21. Andrew Burnett-Thompson says:

    Wow, yes please – Resharper & C++ will be great. Also looking forward to cross-platform C++ IDE.

    Now, if only you could build a cross-platform WPF/C# API and I think you’re on to a winner :)

  22. Joao says:

    Another vote for C++/CLI from me.

  23. David Champion says:

    Would really like to see Resharper for Oxygene language

  24. jixiangqd says:

    When will you make a release on this?I’m really excited about this. But as so long time no updated, I wonder if this project still in active.

  25. @jixiangqd Rest assured it’s active and the team is working hard to have a build that’s worth showing as private EAP. We had hoped ourselves that it would take a bit less time between announcement and build availability but apparently the early development process has turned out as tricky as the language itself.

  26. tivadj says:

    Is there plans for providing plugin framework for your tool? What language it would be in?
    Thanks.

  27. @tivadj Yes, definitely, C++ support will be extensible as part of ReSharper extensibility, and you’ll be able to use any .NET language to write extensions.

  28. douga says:

    Any news on the public EAP for c++ in resharper?

  29. douga says:

    Any news on public EAP?

  30. @douga We’re not ready for public EAP yet but private is underway.

  31. JayKay says:

    If anything makes me buy VS for myself, this plugin will do it. I hope it comes out soon.

  32. @JayKay
    A dedicated C++ IDE which is also in the works could be a better fit for you (no need to buy VS in this case)

  33. JayKay says:

    @Jura
    The features on that IDE look very nice. If there is a way of getting projects out of VS and into it, I will be very interested. CMake and I are not good friends unfortunately.

  34. Russ Weston says:

    FYI – We love/use Resharper for are C# code, but like most shops we have many lines of C++ code. In our shop it is a 70/30 ratio of C++/C#. The C++ code originated in Quick C 6.0, but through the years we migrated to Borland/Imprise/Code/Embarcadero C++ Builder. We don’t have any short term plans to migrate to something else.

    That being said, is there any plans for ReSharper to support other C++ ides?

    Thanks!

  35. @Russ
    There are unfortunately no plans to support any IDEs other than Visual Studio.
    JetBrains are going to provide C++ support via ReSharper and via a separate, IntelliJ IDEA-based C++ IDE that is a different project and is also in the stage of private EAP.

  36. tivadj says:

    Jura, just to clarify, by ‘different project’, do you mean that these two projects do not share common source?

  37. @tivadj
    AFAIK this is correct.

  38. Dave Harris says:

    Is there any way to extend the C++ EAP trial? Mine has expired. You get kind of used to the find usages feature correctly restricting to the class instead of whole solution :)

  39. @Dave
    There’s currently no way to do that. However, which build are you on?
    The latest built has been sent out in late November as far as I recall, and it should be working at this point.

  40. Jason says:

    We have several mixed C# and C++\Cli projects. Since using resharper the C# projects are getting all of the love. Would love to bring the same to C++\Cli.

  41. Tariq says:

    Submit button for c++ is not working. I am unable to submit the form

    Regards,

    • Jura Gorohovsky says:

      Unfortunately I was unable to reproduce the problem. It could however related to the browser you’re using and specific options that you’re selecting in the form. If you let me know more details about your browser and selected options, we can try reproduce and hopefully fix the problem.
      Thank you

  42. Marco says:

    Is there a time estimate on when the support for C++ will be usable in Visual Studio with resharper? (perhaps beta access?)

    • Jura Gorohovsky says:

      Can you please clarify what you mean when you say “usable”? Did you receive the private builds but found them unusable, or are you waiting for public builds of any quality instead?
      Thanks

      • Marco says:

        I did not receive any private builds, I’ve been in touch with the sales support and they tell me that there is nog info yet about these builds. Now I hear they are available?

        I would really like to test these private builds of Resharper.

  43. Marco says:

    I did not receive any private builds, I’ve been in touch with the sales support and they tell me that there is nog info yet about these builds. Now I hear they are available?

    I would really like to test these private builds of Resharper.

    • Jura Gorohovsky says:

      Marco, if you’re subscribed to the private EAP but you haven’t received any builds, it means that something in your dev setup is not supported in the builds that we’ve made available to subscribers so far.
      At this point the only thing that I can suggest is that you wait until this changes.
      We’re also thinking about making the EAP public but that alone wouldn’t make the builds compatible with your environment (
      Thanks

  44. Dave Harris says:

    Are there going to be any more private builds for the C++ resharper? 8.1.1000.329 has expired on my machine, and I’ve not seen a newer one come through. If not, is there a way to extend it until it comes out for sale?

    Thanks,
    Dave.

  45. Darren Evans says:

    Quite an undertaking considering the swath of changes being made by the ISO C++ Committee as the standard progresses through C++11, C++14 and onto C++17 :)

    • Stian says:

      Indeed, c++17 is already here. Same goes for C# aswell, rumors says that vs14 won’t be supported until version 9. Is this correct?

  46. Magnus says:

    Really excited to try ReSharper C ++.
    Unfortunately, our project uses MFC, so I have unfortunately not had the opportunity to test the EAP yet.
    How much more time do I have to wait before the EAP has support for MFC?

    • Jura Gorohovsky says:

      Magnus, in fact, latest EAP builds of ReSharper should already support MFC. It’s probably time for download and give them a try. Note that since the EAP is common for all .NET tools, there’s no separate deliverable for ReSharper C++: you’re supposed to download the ReSharper (.exe) intaller or the Web Installer, then launch it and select which products you want to install, and ReSharper C++ will be one of the options presented. Also note that if you’re using the mainline ReSharper 8.x or earlier in the same version of Visual Studio where you’re going to install ReSharper C++ EAP, the former will be most probably removed.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">