Jetbrains resharper что это

Обновлено: 05.07.2024

Чем же может быть полезен ReSharper C++? Разберем основные возможности продукта.

Статический анализ кода

Как только вы открываете Visual Studio с плюсовыми проектами, ReSharper C++ начинает анализировать ваши проекты и предлагать исправления для проблем, которые находит, и рекомендовать те или иные улучшения. Например, если вы воспользуетесь типом, не прописав ему заголовок, ReSharper C++ предложит вам сделать это:


Если у вас есть прототип функции, но не хватает ее определения, ReSharper C++ предложит сгенерировать тело функции либо в этом же, либо в отдельном файле:


Если вы решите воспользоваться функцией printf() , ReSharper C++ проверит аргументы форматирования и предложит фиксы, если найдет проблемы:


Макросы и шаблоны

ReSharper С++ полностью понимает все макросы, так что анализ он осуществляет именно на том коде, который получится после препроцессинга. Это дает нам ряд уникальных возможностей: например, можно «разворачивать» макросы прямо в коде:

В случае реализации факториала через шаблоны ReSharper C++ может сразу проверить любой static_assert , написанный с использованием этого шаблона:


Навигация и поиск

ReSharper C++ позволяет очень быстро навигироваться по крупным проектам и искать в них нужный код. Вот некоторые из поддерживаемых возможностей навигации:


  • Go to Everything находит по названию любой тип сущности (класс, член класса, файл или папку) во всем солюшене сразу. Результаты также можно фильтровать более узкими командами, такими как Go to Type, Go to File и Go to Symbol.
  • Go to File Member позволяет быстро найти символ в том файле, где вы сейчас работаете.
  • Go to Base/Derived помогает искать наследников и родителей по классам или элементам класса. Go to Definition позволяет быстро перейти к месту объявления символа.
  • Go to Related Files применяется для перехода к файлам, которые имеют какое-то отношение к текущему. Это могут быть включенные заголовочные файлы или CPP-файлы. Кроме того, ReSharper позволяет быстро переходить между заголовочным и СРР-файлами (Ctrl+B).
  • Navigate to specializations позволяет найти все специализации шаблонного класса:

Для поиска всех вхождений того или иного символа в ReSharper C++ имеется механизм Find Usages с возможностями предварительного просмотра, группировки и фильтрации.

Следует отметить, что многие команды навигации доступны из контекстного меню, которое открывается по нажатию Alt+Enter:


Еще одно окно называется Inheritance Hierarchy, и в нем отображается иерархия наследования типов в виде дерева:


Завершая тему навигации, существуют команды для перехода по элементам класса (Go to Next/Previous Member) и по найденным в файле ошибкам (Go to Next/Previous Issue).

Шаблоны и генерация кода

Мы адаптировали систему генерации кода и шаблонов к С++. Это означает, что в ReSharper С++ есть поддержка следующих знакомых пользователям основного ReSharper механизмов:

    Live Templates — это шаблоны, которые ведут себя во многом подобно Visual Studio snippets, но они намного более чувствительны к контексту, а их поведение можно программировать под свои задачи.

Помимо шаблонов, ReSharper C++ также имеет штатные механизмы генерации кода в меню Generate:


Рефакторинги

Возможности рефакторинга кода — это своего рода визитная карточка ReSharper. Вот несколько рефакторингов, которые уже есть в ReSharper C++:

  • Rename позволяет переименовать символ (например имя класса или поля) и его вхождения во всем проекте.
  • Introduce Variable позволяет выделить часть вычислений и сохранить их в отдельной переменной:

Заключение

Вот видео, в котором показана вышеописанная функциональность в действии:

Для использования ReSharper C++ нужна либо отдельная лицензия, либо лицензия ReSharper Ultimate.

ReSharper C++ можно скачать отдельно или в составе полного инсталлятора ReSharper Ultimate. В обоих случаях действует 30-дневный пробный период.

Куырфкзук Resharper Решарпер jetbrains скриншоты

Несмотря на то, что большинство наших читателей не только знают что такое ReSharper, но и активно используют его в своей работе, давайте кратко поясним всем остальным, что же такое ReSharper сегодня? Очень кратко — каковы его основные возможности?

Никогда не мог дать короткий ответ на такой вопрос.

Если утверждать, что ReSharper — это просто плагин к Microsoft Visual Studio, то это не совсем так, так как на платформе ReSharper построен декомпилятор dotPeek, также как существует ReSharper command line tool для запуска анализа кода на сервере (сейчас только на TeamCity).

С другой стороны рассматривать ReSharper как полноценную IDE тоже пока нельзя, так как у нас нет, например, дебаггера или поддержки систем контроля версий. Из основных возможностей ReSharper я бы выделил прежде всего: анализ кода, рефакторинги, интеллисенс, навигацию и поддержку unit testing, и все это — для более 12 языков.

Сергей Шкредов Куырфкзук Resharper Решарпер jetbrains скриншоты


Сергей Шкредов, JetBrains

Для нас в новом ReSharper 7 было несколько вещей, которые мы не могли оставить без внимания. Для поддержки асинхронной загрузки проектов, нам пришлось переработать асинхронную инициализацию самого нашего продукта, и результат меня лично радует. Мы полностью стартуем нашу модель кода еще до того, как все проекты (а у нас их более 300) успевают загрузиться. Так же хочу отметить огромную работу по поддержке новых цветовых схем. Только иконок прошлось перерисовать более 800.

Кстати говоря, насколько я понял, в последний ReSharper вы интегрировали свой самый последний dotTrace из ветки, можно немного рассказать о его возможностях и новшествах?

Сейчас в последнем ReSharper 7 интегрируются два наших продукта — это dotTrace и dotCover. Интеграция dotTrace заключается в возможности профилировать тесты и start-up проект, а вот интеграция dotCover гораздо более глубокая, он может использовать ReSharper’s Unit tests runner и обладает знаниями о код-модели.

Куырфкзук Resharper Решарпер jetbrains скриншоты

Рассказ о каждом из этих продуктов может быть очень долгим, как и для других продуктов JetBrains. Поэтому скажу лишь, что Вы можете месяц бесплатно использовать полноценную версию каждого из них и посмотреть, насколько эти инструменты подходят именно для Ваших нужд. И даже если что-то не так — всегда можно написать нам отзыв, мы это очень ценим.

Можете поделиться с нами, каких успехов достиг Resharper (в том числе и коммерческих)? Какова динамика его развития?

Об успехах ReSharper я мог бы говорить бесконечно. Главный успех, или даже ключ к успеху ReSharper — это команда, которая над ним работает, команда профессиональных, неординарных и заинтересованных людей, с которой можно не сомневаться в успехе.

ReSharper покупают активно и много. И с каждым годом покупают все больше. Мы работаем над тем, чтобы программирование с ReSharper было доступно каждому. Например, для выявления performance-проблем мы встроили в ReSharper профилятор, и наши пользователи одной кнопкой могут сделать снэпшот того, что происходит с производительностью именно на их конфигурации.

Также не могу не отметить, что у нас очень сильная команда тестирования. Конечно, EAP-программа по-прежнему очень важна для нас, но мы работает над тем, чтобы даже EAP-пользователи получали продукт очень высокого качества. Могу поделиться, что в EAP-программе для последнего ReSharper 7 участвовало более 10 тысяч пользователей. В ReSharper сейчас более 35 тысяч unit-тестов и более 600 integration-тестов, запускающих фичи в живой Visual Studio. Сейчас мы работаем над автоматизацией тестирования производительности, и я надеюсь, что когда-нибудь мы сможем поделиться наработками в этой области с нашими пользователями.

Существует мнение, что 90 процентов пользователей используют лишь 10 процентов функциональности ReSharper. Отчасти это подтверждается нашими данными из статистики использования ReSharper. Увеличение discoverability является сейчас одним из приоритетов развития продукта. Мы действительно хотим, чтобы наши пользователи использовали ReSharper на 100%.

Куырфкзук Resharper Решарпер jetbrains скриншоты

Я знаю, что вы очень плотно взаимодействуете в своей работе с Microsoft, можете рассказать про ваше сотрудничество?

Не могу рассказать тут много в силу NDA, но с Microsoft мы работаем. В процессе разработки ReSharper 7 мы взаимодействовали очень тесно. Конечно, мы сталкиваемся с проблемами во многих аспектах взаимодействия с Visual Studio. Основная проблема тут, наверное, в том, что extensibility-интерфейсы в VS в основном ориентированы на рост IDE именно вширь.

Сейчас в VS всё сделано так, что здесь легко завести новую проектную систему или реализовывать Language Service для нового языка. Нам же, напротив, часто надо перекрывать существующую функциональность. Иногда простых способов это сделать — просто нет. В качестве примера приведу такой факт: функциональность, отключающая IntelliSense VS когда активен наш, реализована с помощью более 50 классов.

Если говорить откровенно, несмотря на объективно очень интересный продукт, самое больное место ReSharper по моему мнению — это его тормоза. Чтобы не казаться голословным, позвольте несколько типичных примеров.

Чаще всего тормоза VS с активированным ReSharper проявляются при большом количестве открытых вкладок (утечки памяти, вероятно), также иногда выскакивает «ошибка компиляции проекта», которая почти всегда исчезает после банального перезапуска всей Студии. И, кстати говоря, по моему субъективному мнению именно у 7 версии «ошибка компиляции» стала весьма навязчивой. Что вы может сказать по этой острой теме, что предпринимается для устранения этих багов и повышения надежности работы?

Тут Вы совершенно правы, производительность традиционно является причиной номер один по которой пользователи отказываются от ReSharper. Точнее, я бы говорил не про производительность вообще, а именно про тормоза, долгое открытие файлов и проектов, задержки при быстрой печати или зависание UI при построении проекта.

Тут можно долго рассуждать о природе этих задержек. Первый большой источник проблем — это архитектура самой Visual Studio, построенная на COM-объектах работающих только в UI-потоке. Например, нам приходится полностью дублировать всю проектную модель Студии, чтобы иметь возможность обращаться к ней из разных потоков. На каждом старте нам все равно приходится производить синхронизацию.

Куырфкзук Resharper Решарпер jetbrains скриншоты

Кстати, одну из таких проблем мы сейчас и решаем, она связана с разным подходом к резолву ссылок на сборки у ReSharper и у компилятора и проявляется при наличии проектов с разными версиями рантайма.

Завершая эту тему порцией здоровой самокритики — какие самые слабые стороны вы сами видите в ReSharper, какие вызовы беспокоят вас прямо сейчас?

Одна из самых слабых сторон — это то, что нам уже почти 10 лет. И проект уже становится несколько неповоротлив, нам приходится значительную часть времени уделять рефакторингу подсистем в которых, с течением времени, накопилось много скрытых зависимостей, переписывать и переосмысливать такие модули для того, чтобы иметь возможность быстро делать там изменения, когда этого потребует очередная версия Visual Studio.

Есть у нас проблемы и с изменениями API, которые не очень просто переживают наши уже не такие редкие, как несколько лет назад, плагинописатели. Несмотря на то, что ReSharper изначально создавался расширяемым, практически все подсистемы были созданы для поддержки CLR-языков, а общая функциональность ядра во многом ориентирована на решение сложностей взаимодействия с Visual Studio и поэтому подвергается частым изменениям. Сейчас мы уделяем особое внимание консистентности API, что должно позволить большему числу пользователей использовать ReSharper как платформу для решения своих бизнес задач.

В заключение нашего интервью, расскажите, пожалуйста, о возможных скидках, которые доступны для ваших новых потенциальных пользователей. Насколько я знаю, у вас достаточно гибкая политика в этом плане.

И конечно, если вы MVP, студент, тренер или занимаетесь OpenSource-проектом, то получить такую лицензию Вы можете бесплатно. Кроме того, практически круглый год (где-то 8 из 12 месяцев) у нас открыта программа EAP для очередной версии ReSharper. EAP-билд также можно использовать совершенно бесплатно в течение месяца, после чего необходимо просто скачать и установить новый билд.

Иногда мы проводим акции. В частности совсем недавно, в конце декабря, у нас была совершенно фееричная распродажа, и я поздравляю всех, кто успел купить ReSharper и другие наши продукты по чисто символической цене!

Читайте также: