Как многие могли заметить, в мире .NET сейчас происходят значительные изменения. Появление Roslyn, C# 6, ASP.NET vNext, Visual Studio «14» и других технологий вдохновляют ReSharper на новые шаги в своем развитии и поддержке различных языков и платформ.
В связи с этим мы приглашаем всех присоединиться к программе раннего доступа для ReSharper 9. В этом посте мы обсудим основные фичи новой версии.
TL;DR в ReSharper 9 добавлена поддержка VS «14», C# 6 и регулярных выражений, улучшена поддержка JS/TS и глобальных изменений (bulk fixes), добавлен новый редактор для форматирования кода и новые возможности навигации, а также все наши .NET продукты переезжают на новую общую платформу.
Поддержка C# 6
Мы уже публиковали обзорный блог-пост о поддержке C# 6, так что вот список тех вещей, которые на текущий момент поддерживает ReSharper 9 (мы помним, что C# 6 еще не зарелизился, и конечный фичесет пока что тяжело угадать):
- Поддержка оператора условного доступа (?.) дает нам возможность писать цепные null-проверки (также известные как монада Maybe). ReSharper не только знаком с этой новой конструкцией, но также поможет вам безболезненно обновить ваш код, заменив или удалив ненужные проверки на
null
. - Поддержка членов класса, написанных через выражения (expression-bodied members) упрощает процесс создания элементов, основанных на простых однострочных выражениях. Решарпер предоставляет возможность использовать этот новый конструкт, а также поможет трансформировать большие куски уже написанного кода с учетом этой новой парадигмы.
- Автосвойства получили новые возможности по инициализации, а также возможность автоматически удалять приватные сеттеры, и тем самым получать действительно немутабельные автосвойства.
- Поддержка статических
using
-ов (наконец-то можно писатьSin
вместоMath.Sin
), фильтров для исключений и других новых конструкций C# 6.
Глобальные действия и Fix in Scope
В ReSharper 9 расширен механизм глобальных изменений (Fix in Scope), для того, чтобы обширные изменения больших объемов кода проходили легче и проще. В число улучшений вошли:
- Bulk Import (механизм массового импорта) гарантирует, что импортировав большой кусок кода, ReSharper пройдется по вставленному коду и добавит нужные директивы импорта для всех типов и элементов – включая методы расширения.
- Redundant code removal (удаление лишнего кода) теперь существует как отдельная опция, так что если вы стоите курсором на лишнем квалификаторе
this.
, с этого места можно как удалить квалификаторыthis.
глобально (в рамках файла/папки/проекта/решения), так и удалить все лишние элементы (не толькоthis.
но и лишниеusing
директивы, и т.п.) в аналогичных диапазонах применения. - Глобальные изменения для имен позволяют вам быстро импортировать чужой код и массово изменить стили именования методов, полей и т.д. по своему вкусу.
- Move to File/Namespace (механизм перемещения кода в другой файл или namespace) теперь гарантирует правильную обработку файлов, содержащих несколько объявлений классов.
- Удаление регионов — еще одно глобальное действие, которое дает возможность удалить все использования регионов в рамках файла, проекта или solution.
Улучшения в навигации
Изменения в навигации включают в себя:
- Универсальный Go to Action — теперь шорткат Alt+Enter предоставляет список общих действий, а также возможность поиска по всем action'ам.
- Navigate to Exposing API — новая опция навигации, которая позволяет искать все методы, способные вернуть определенный тип.
- Assembly Explorer теперь еще более тесно интегрирован с Решарпером. Он получил собственные возможности навигации в меню Navigate To а также в студийном Solution Explorer.
- Механизм Go to Type теперь помогает при навигации на дженериках, так что если вы стоите на переменной типа
List<Foo>
, он предложит вам навигироваться либо наList<T>
либо наFoo
. - Find Usages (поиск использования символа) теперь имеет настройку для использования студийной вкладки предпросмотра (Preview Tab), а также больше не блокирует UI при длительном поиске.
- Окошко Find Results больше не плодит вкладки при поиске одного и того же элемента, и, наконец, можно фильтровать элементы в результирующем списке.
Настройки Code Style
В 9ке появились следующие настройки:
- Настройки использования var — их теперь 3 штуки (для встроенных типов, простых типов и всех остальных). Это позволяет более точно контролировать, как и где появляются связанные с
var
подсказки и варианты коррекции. - Instance member qualification — настройка отвечает за то, к каким членам класса применим квалификатор
this.
- Static member qualification контролирует, как мы обращаемся к статическим членам класса: либо через имя класса где элемент объявлен, либо через текущий класс.
- Все три предыдущие настройки доступны как элементы настройки профиля в механизме Code Cleanup.
- Наконец, для контроля за раскладкой элементов в файле, мы полностью переписали старый XML редактор и вместо него встроили новый визуальный интерфейс.
Поддержка регулярных выражений
ReSharper научился работать с регулярными выражениями, так что теперь вам больше не понадобятся сторонние программы. Вот что он умеет:
- Подсветка синтаксиса доступна для регулярных выражений, включая частичную подсветку строк для индикации ошибок.
- Автодополнение кода упрощает процесс выбора разных подстановок. Также появилось автодополнение для именованных групп!
- Escaping Quick-Fix позволяет быстро заменять символы
, используемые для подстановок, на валидные в C# с использованием verbatim строк (строки, начинающиеся с
@
). - Отдельная валидационная утилита позволяет быстро проверить тестовые варианты ввода на соответствие регулярному выражению и разобрать их на совпадения и группы.
- Конверсия в прекомпилированные выражения позволяет вам улучшить производительность путем переноса обычных регулярных выражений в статические инстансы
Regex
.
Улучшения в поддержке TypeScript и JavaScript
Вот несколько улучшений в поддержке TypeScript:
- Новые инспекции и возможности коррекции покрывают более 270 различных ошибок.
- Новые рефакторинги включают в себя Introduce Field, Copy Type, Move Refactorings (перемещение кода в модуль/файл, перемещение в соответствующие файлы, перемещение в папку), Rename File, а также механизм импорта типов для вставленного кода.
- Кодогенерация для TypeScript поддерживает автоматическую реализацию интерфейса/генерацию недостающих элементов, а также генерацию конструкторов и перекрывающих (overriding) элементов.
- Механизм live templates поддерживает два новых диапазона использования (scope) — Module Member и Type Member. ReSharper также поставляет несколько своих TypeScript шаблонов для генерации классов,
enum
-ов, интерфейсов и модулей. - Parameter Info для TypeScript теперь поддерживает не только аргументы функций, но также аргументы типов.
- Появилась поддержка специализированных сигнатур (specialized signatures).
Помимо этого, ReSharper предоставляет механизм автоматической конвертации кода из JavaScript в TypeScript, а также раннюю поддержку ASP.NET vNext.
Унифицированный инсталлятор
Мы планируем предоставить пользователям один унифицированных инсталлятор для всех наших .NET продуктов (ReSharper, dotTrace, dotMemory, dotCover и dotPeek). В процессе инсталляции можно выбрать, что именно вы хотите установить. Также, все наши продукты теперь используют одну общую платформу, что экономит ресурсы компьютера, когда несколько наших приложений работают одновременно.
Прошу заметить, что первая сборка ЕАР, которую мы выложили, пока что дает возможность установить только сам ReSharper. Также, она удаляет предыдущие версии ReSharper’а и других наших .NET инструментов; VS 2005 и 2008 тоже пока не поддерживаются (но мы обязательно поддержим их чуть позднее).
И еще несколько улучшений
Вот еще несколько новых или улучшенных фич:
- Поддержка VS 14
- Возможность частичного отключения подсистем ReSharper’a — теперь отключать поддержку разных функций R# стало проще. Из тех возможностей, что можно отключить — поддержка unit-тестирования, MsBuild/NAnt, CSS, JavaScript, TypeScript а также Internationalization.
- Отладка декомпилированного кода теперь доступна и в ReSharper. Конечно, для этих целей можно пользоваться нашим бесплатным декомпилятором dotPeek.
- Архитектурный инструментарий ReSharper’a теперь поддерживает возможность генерации диаграмм зависимости между типами. Эта форма визуализации помогает понять, какой код зависит от определенного типа, и от чего зависит сам тип. Эта диаграмма интегрирована и с другими инструментами R#.
В этом посте я описал основные нововведения, доступные в первой ЕАР сборке — мы, конечно же, будем добавлять новые фичи по мере их готовности. А пока приглашаем всех желающих скачать EAP и самим оценить новые возможности.
Нам интересно ваше мнение, поэтому не стесняйтесь писать нам о своих наблюдениях (тут, или в наш баг трекер). Спасибо! ■
Автор: mezastel