As you probably know, we have been working on the 8th version of ReSharper for quite a long time - during the development we improved navigation, expanded support for XAML, added our own mechanism for viewing dependencies between projects, and added many more new and interesting features.
But now I want to talk about something beyond our plans for 8-ke: for several months already, a part of our team has been working on something completely new, which our users have been asking for years for - with support for ReSharper in the C ++ programming language .
')
This initiative is part of our plan to make C ++ one of the languages ​​that would be fully supported in our products - both in ReSharper and in a separate cross-platform development environment that we announced earlier this year.
C ++ is a very powerful language that has not gone away for all these years, despite the emergence and growth of its “hereditary languages” C # or Java: today a lot of code is written in this language and will be used for a very long time. . We at JetBrains believe that our toolkit can help C ++ developers develop faster and more efficiently.
Feature set
Parsing a language like C ++ is not easy, especially if you consider all that preprocessing and template processing, which is especially time-consuming in large projects. Our main goal is precisely the correctness of processing all possible nuances, and a large amount of effort was taken just to “understand” C ++, regardless of the specific features used in the language. At the moment we have not so much visible functionality, but a lot of fundamental work has been done. Today, those internal builds that we prepare include the following functionality:
Syntax highlighting support
A complete set of navigation support mechanisms including mechanisms such as Go to Type , Go to Symbol , Go to File Member and of course the new Go to Everything specific to ReSharper 8.
Support for contextual navigation , incl. Navigation to the declaration ( Go to Declaration ), inherited symbols ( Derived Symbols ), basic symbols ( Base Symbols ) - in other words, support for all the basic features that can be expected when you open the Navigate To menu:
We also have a search mechanism for using an item ( Find Usages ) with a preview, search filters, various grouping options, and everything that usually appears in the Find Usages window.
The side markers (gutter marks) in the new indicator of possible actions in ReSharper 8 help to track the links between non-traceable elements and make transitions between them:
Introduce Variable Refactoring:
Contextual actions for the substitution of macros , both individual and nested (i.e. fully completed):
Understanding templates gives ReSharper the ability to correctly calculate and enable the transition to specific specializations of a particular template:
To give you an idea of ​​what can be expected from the current support of C ++ in ReSharper, I suggest watching this screencast:
How to try it all?
At the moment we have no public builds with which to experiment, and the current EAP does not include support for C ++ . It will take us a few more months to get something that is worth showing to the general public. But if you don’t want to wait, here’s what you can do:
Fill out the form with a description of the C ++ extensions, libraries and language versions that you use. We apologize for such a large “questionnaire”, but believe me - this information is very important for us to understand what it is worth working on in the first place.
Send us a subscription request for private assemblies ReSharper with built-in C ++ support . As soon as we have a private build that can function with your environment settings, we will send you an e-mail with a link to download.
What is next?
First of all, I would like to emphasize once again that C ++ support will not be included in ReSharper 8 because it is still “raw” for a full production release.
In the next few months, our team will work on supporting C ++ to present a public EAP this fall . As we add support for new language versions, platform-specific extensions, as well as support for new versions of Visual Studio, we will send private builds to those who subscribe to them.
At the moment, we are almost ready to support C / C ++ 03 for small and medium-sized projects that either do not use third-party libraries at all, or use small ones. The current development plan for the next few months looks something like this:
Support for small and medium-sized projects that use larger libraries, such as Boost
C ++ 11 support
Guarantee of adequate work with large projects
Support for Visual Studio-specific extensions, as well as support for MFC / ATL / WTL
Once we have everything ready for a public release, we will open the early access program (EAP) and, after public testing, add C ++ support to the main ReSharper build so that C ++ support will become part of ReSharper Full Edition .
Well, interesting? Maybe you have been waiting for this news? Then sign up for private builds and, working with them, help us make C ++ support part of ReSharper as quickly as possible. Well, do not hesitate to tell us exactly what you would like to see in terms of C ++ support in the comments to this post. Thank!