Сравнение функциональности ReSharper C++ 2021.2 и Visual Studio 2019

В этом документе перечислены некоторые функции, которые реализованы в ReSharper C++ 2021.2, но не поддерживаются или поддерживаются не полностью в Visual Studio 2019 без расширений.

Microsoft Visual Studio 2019 16.10
ReSharper C++ 2021.2

Поддерживаемые спецификации C/C++

C/C++ C/C++
C++/CLI C++/CLI
C++/CX Не поддерживается
HLSL HLSL

Анализ кода и исправления

Анализ кода на лету во время разработки (ошибки и предупреждения компилятора) Анализ кода на лету во время разработки (ошибки и предупреждения компилятора, более 230 собственных инспекций кода)
Быстрые исправления для решения проблем в коде Более 290 быстрых исправлений для решения проблем в коде
Интегрированная диагностика и проверки Clang-Tidy Интегрированная диагностика и проверки Clang-Tidy
Интегрированная диагностика и проверки UnrealHeaderTool
Проверка правописания
Анализ включенных заголовочных файлов
Уведомление обо всех ошибках и проблемах качества кода в любой области, вплоть до всего решения
Настраиваемые инспекции кода: настроить 5 уровней критичности ошибок можно прямо в меню по Alt+Enter
Настройки анализа кода на уровне решения и их совместное использование внутри команды разработчиков

Рефакторинги и преобразования кода

Переименование Переименование
Изменение сигнатуры Изменение сигнатуры
Извлечение функции Извлечение метода
Реализация чисто виртуальных функций Генерация переопределяющих членов
Создание объявления/определения Генерация определения/реализации по объявлению
Перемещение определения функции Перенос реализации в исходный файл
Преобразование в необработанный строковый литерал Преобразование в необработанный строковый литерал и обратно
Преобразование в перечисление с областью видимости
Введение поля
Введение псевдонима пространства имен
Введение typedef
Введение using enum
Введение переменной
Встроенные функции
Подстановка переменной
Встроенный typedef
65+ контекстных действий (автоматические локальные преобразования кода)

Помощь при написании кода

Автодополнение кода Автодополнение кода с умными подсказками и использованием CamelCase
Подсветка синтаксиса Подсветка синтаксиса (настройка цветов 25+ различных идентификаторов)
Подсказки для элементов кода Подсказки для подсвеченного кода и отображение документирующих комментариев
Расширение/сужение области выделения Расширение/сужение области выделения
Комментирование выделенных фрагментов (тип комментария выбирается автоматически) Блочное и однострочное комментирование выделенных фрагментов
Быстрые подсказки и информация о параметрах Быстрая документация и информация о параметрах
Встроенные подсказки для имен параметров и типов, пространств имен, преобразований типов и директив препроцессора; режим Push-to-Hint
Реорганизация элементов кода
Автоматическое добавление пропущенной директивы #include
Автодополнение импортов и постфиксное автодополнение
Автоматическое завершение блоков кода
Выделение текущего члена

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

Навигация к элементу Поиск по всей кодовой базе
Переход к объявлению Переход к объявлению (переход от использования к соответствующей директиве препроцессора), в том числе работающий для неразрешенных идентификаторов и комментариев
Быстрый просмотр объявлений Быстрый просмотр объявлений, использований, базовых символов, реализаций
Закладки в коде Закладки в коде
Быстрый запуск Поиск действий и настроек
Поиск ссылок Поиск использований
Генерация графа включенных файлов Окно иерархии включений
Иерархия вызовов Не поддерживается
Переход к символу Переход к символу
Переход к типу Переход к типу
Переход к файлу Переход к файлу
Переход к члену файла Переход к члену файла
Переход к тексту с применением нечеткого поиска
Переход к базовым символам
Переход к производным символам
Переход к связанным файлам
Переход к соседним файлам
Переход к местам в коде, которые были недавно просмотрены или отредактированы
Переход к основному шаблону или к его специализациям
Переключение между заголовочными/исходными файлами
Подсветка использований в файле
Навигация вверх и вниз по иерархии наследования в редакторе
Контекстная навигация по точкам останова
Окно иерархии типов
Просмотр структуры файла
Навигация между объектами To-do
Нахождение текущего файла в Solution Explorer

Генерация кода

Фрагменты кода (шаблоны) Фрагменты кода (шаблоны), в том числе шаблоны live, surround и postfix
Генерация файлов из шаблона Генерация файлов из шаблона
Генерация кода с помощью автодополнения Генерация кода с помощью автодополнения
Визуальный редактор фрагментов кода (шаблонов)
Добавление предваряющего объявления (forward declaration) или автодополнение директивы #include с автодополнением для импорта
Генерация кода на основе использований
Генерация конструкторов
Генерация определений
Генерация пропущенных операторов case
Генерация документирующих комментариев
Генерация отсутствующих/переопределяющих членов
Генерация операторов copy и move
Генерация функций get и set
Генерация операторов равенства
Генерация операторов сравнения
Генерация операторов потока ввода-вывода (включая функции Boost.Serialization)
Генерация hash-функции
Генерация swap-функции
Генерация методов Google Mock
Генерация функции для преобразования перечисления в строку (настраиваемая)
Генерация пропущенных членов

Форматирование и очистка кода

Переформатирование кода Применение правил форматирования в любой области видимости (с использованием собственных правил форматирования ReSharper C++)
Поддержка EditorConfig Поддержка EditorConfig
Поддержка Clang-Format
Обучение правилам форматирования на основе существующего кода
Визуальный редактор для настройки правил форматирования выделенного кода
Окно File Formatting для исследования значений настроек и файлов, влияющих на текущий файл
Настраиваемые правила именования с предустановленными схемами (STL, Google, LLVM, CamelCase, Microsoft)
Настраиваемые правила для сортировки директив #include
Настаиваемый стиль синтаксиса для инициализации, объявлений, переопределяющих функций, использования auto, положения cv-квалификаторов и скобок

Юнит-тестирование

Окно Unit Test Explorer Окно Unit Test Explorer
Поддержка Microsoft Unit Testing Framework для C++ Не поддерживается
Поддержка Google Test Поддержка Google Test
Поддержка Boost.Test Поддержка Boost.Test
Поддержка CTest Не поддерживается
Поддержка Catch
Поддержка Doctest
Запуск тестов из редактора
Несколько сеансов юнит-тестирования

Отладка

Подсказки DataTips в редакторе DataTips с возможностью поиска и настраиваемым отображением объектов в редакторе
Окно точек останова Окно точек останова с предварительным просмотром, контекстным поиском, группировкой и экспортом
Отслеживание значений переменных
Фильтры для пошаговой отладки

Поддержка Unreal Engine

Поддержка правил именования Unreal Engine
Встроенные инспекции UnrealHeaderTool
Работа с файлами шейдеров (HLSL)
Поддержка удаленного вызова процедур Unreal Engine
Автодополнение спецификаторов рефлексии Unreal Engine
Поддержка проектной модели Unreal Engine (дает возможность делать автодополнение на основе ссылок на плагины и модули)
Динамические обновления в соответствии с изменениями в .Build.cs, .Target.cs, .uproject и .uplugin

Управление настройками

Синхронизация настроек через Microsoft ID Синхронизация настроек и пользовательских шаблонов внутри команды через VCS или любой файловый хостинг
Многоуровневая система хранения настроек, поддерживающая разные настройки для разных решений
Скачать
Бесплатная пробная версия на 30 дней