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

Здесь перечислены отличия между ReSharper C++ и расширением Visual Assist от Whole Tomato.

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

Если вы обнаружите неточности в таблице, сообщите нам об этом в комментариях — мы как можно скорее обновим данные.

в Visual Studio 2019 + Visual Assist Build 2024.8 (2537)

в Visual Studio 2022 + ReSharper C++ 2024.3

Поддерживаемые версии Visual Studio
Visual Studio 2022
Visual Studio 2022
Visual Studio 2019
Visual Studio 2019
Visual Studio 2017
Visual Studio 2017
Visual Studio 2015
Visual Studio 2015
Visual Studio 2013
Visual Studio 2013
Visual Studio 2012
Visual Studio 2012
Visual Studio 2010
Visual Studio 2010
Visual Studio 2008
Visual Studio 2005
Поддерживаемые спецификации C/C++
C/C++
C/C++
C++/CLI
Исходные файлы CUDA
Обнаружение проблем в коде
Подсветка неразрешенных символов
Отключение инспекций кода с комментариями
Отключение инспекций кода с комментариями
Отметки рекурсивных вызовов на полях редактора
Быстрые исправления
Помощь в написании кода
Подсветка парных объектов (включая макросы и аргументы формата в printf и boost::format)
Подсветка синтаксиса (20 различных идентификаторов)
Автоматическое раскрытие многострочных комментариев /**/ и /// и создание шаблонов документации нажатием Enter
Генерация комментария Doxygen при вводе ///
Подсветка совпадающих слов (в коде и комментариях)
Автоподсветка точек выхода из функции
Соответствие выбранному стилю кода
Форматирование после вставки (правила форматирования унаследованы из Visual Studio)
Применение правил форматирования в любой области (собственный расширенный набор правил форматирования ReSharper C++)
Применение настроек стиля кода и удаление избыточного кода в любой области с помощью действия Code Cleanup
Настраиваемый стиль модификаторов const and volatile в сгенерированном коде
Настраиваемый стиль директив #include в сгенерированном коде
Настраиваемый стиль инициализаторов указателей по умолчанию (0|nullptr|NULL) в сгенерированном коде
Рефакторинги и преобразования кода
Инкапсуляция поля (действие Generate getters and setters)
Добавление/удаление фигурных скобок
Отрицание логического выражения
Перемещение определений функций
Перемещение класса
Преобразование экземпляра в указатель и наоборот
Упрощение объявления
Сортировка методов в источнике
Преобразование лямбды в метод
Добавление спецификатора = default, = delete, pure или virtual к функции
Упорядочивание cv-квалификаторов
Преобразование ?: в if и обратно
Замена угловых скобок вокруг директивы #include на кавычки и наоборот
Преобразование вызова в канал и обратно
Преобразование условия в ограничение параметра
Преобразование объявления typedef в объявление псевдонима и наоборот
Преобразование в определение пространства имен с вложенностью
Преобразование обычного типа возвращаемого значения в trailing return type и обратно
Создание производного типа: класса, интерфейса, структуры, класса интерфейса, структуры интерфейса, ссылочного класса или ссылочной структуры
Перестановка операндов бинарного оператора сравнения
Перестановка аргументов оператора
Инициализация поля из параметра конструктора
Инверсия инструкции if, инверсия условия ?:
Замена auto на явное объявление типа
Замена 'decltype' явных значением типа
Замена 'decltype(auto)' явным объявлением типа
Разделить или объединить объявление с несколькими объявлениями
Подстановка вызова макроса
Замена псевдонима шаблонного типа
Явное указание аргументов шаблона
Замена typedef (или вложенных typedef) на тип из определения
Замена UNREFERENCED_PARAMETER на [[maybe_unused]]
Преобразование строки в необработанный строковый литерал C++11 и обратно
Перемещение ограничения параметра шаблона в условие requires
Генерация кода
Создание производного типа
Сниппеты и шаблоны
Создать файл (нужно вызывать дважды для файлов заголовков и cpp)
Поиск и навигация
Переход к объявлению (команда Goto)
Переход к реализации (команда Goto)
Отладка
Временное отключение всех включенных точкек останова
Временная привязка всех точек останова к текущему потоку
Unreal Engine
Исключение исходных файлов из навигации
Исключение исходных файлов из индексации
Поддержка удаленного вызова процедур UE4
Юнит-тестирование
Помощь при юнит-тестировании с фреймворками Google Test, Catch 2.5, Boost.Test, и doctest
Управление настройками
Другие улучшения
Локализация интерфейса (китайский, корейский и японский языки)