Грудневий реліз ReSharper Ultimate 2016.3

Привіт, хабр!

Більше року ми не ділилися тут новинами про релізах в сімействі інструментів ReSharper Ultimate. Це не означає, що робота встала, навпаки: її було багато.

Читачі нашого англомовного блогу вже в курсі, що в ReSharper 2016.3 з'явилася початкова підтримка Visual Studio 2017, C# 7, VB.NET 15 і можливість запуску і відладки .NET Core юніт-тестів. Під катом ви знайдете огляд цих та інших оновлень .NET продуктах і в ReSharper C++.



Сумісність з Visual Studio 2017 RC
Всі інструменти в складі ReSharper Ultimate можна встановити в Visual Studio 2017 RC. Є кілька нових функцій Visual Studio, над підтримкою яких ми працюємо і уявимо виправлення в найближчих оновленнях. Зараз в ReSharper не підтримується режим инкрементальной завантаження рішень (Lightweight Solution Load).NET Core юніт-тести. Для роботи з ReSharper C++ відключіть опцію Enable Faster Projects Load у налаштуваннях текстового редактора Visual Studio.

Початкова підтримка C# 7 VB.NET 15
ReSharper розпізнає локальні функції C# 7 і надає безліч інспекцій коду в їх контексті, таких як Possible System.NullReferenceException, Access to disposed closure Access to modified closure.

В C# 7 підтримуються out змінні та зіставлення з шаблоном для конструкцій
is
та
case
в операторі
switch
.

Бінарні літерали в C# 7 VB.NET 15 розпізнаються, і їх можна перетворити в шістнадцяткову систему, а також додати тисячних розрядів.

image

генераторів коду
Ми поліпшили механізм Generate (Alt+Ins) для C# та VB.NET і доповнили його трьома новими діями для генерації Relational members, Relational comparer і шаблону Dispose.

Generate relational members перевантажує оператори порівняння (> <, ≥, ≤) і реалізує інтерфейс
IComparable
та
IComparable<T>
з використанням вибраних полів і властивостей. Generate relational comparer створює клас для порівняння обраних об'єктів, успадкований від
Comparer<T>
. ReSharper також визначає типи полів: якщо клас містить рядкові поля, можна вибрати опцію для порівняння рядків і включити перевірку на значення null.

Перевірка параметрів на значення null тепер доступна для генератора Generate constructor. При виборі опції Check parameters for null створюється захисний код, який викидає виключення
ArgumentNullException
в конструкторі.

Використовуйте Generate Dispose pattern для реалізації інтерфейсу
IDisposable
з додатковими перевірками на null деструктором для некерованих ресурсів.

image

Нагадаю, що меню Generate викликається поєднанням клавіш Alt+Ins. Дії, які реалізують інтерфейси
IDisposable
,
IEquatable<T>
та
IComparable<T>
, доступні по Alt+Enter на виділеному фрагменті коду.

Нові контекстні дії, швидкі виправлення і рефакторинг
У ReSharper 2016.3 з'явилося швидке виправлення (quick-fix), за допомогою якого створюються поля і властивості для невикористаних аргументів. Раніше це дія виконувалася лише для одного аргументу, але тепер поля і автосвойства генеруються відразу для всіх аргументів. Можна задати тип генерованого властивості, вибравши відповідне значення у меню Configure default.

image

З'явилося нове контекстне дію для полів типу
Lazy<T>
, яке створює властивість для інкапсуляції
fieldname.Value
.

image

Новий рефакторинг Transform Parameters замінив два інших: Transform Out Parameters і Extract Class from Parameters. Він переписує параметри методу, змінюючи вхідні параметри на новий клас або кортеж. Для значення, що повертається, або будь-якого вихідного параметра можна створити новий клас. Як завжди, рефакторинг Transform Parameters викликається з меню Refactor This (Ctrl+Shift+R).

image

Навігація і пошук стали зручніше
Ми оновили механізм пошуку входжень, спростивши пошук посилань на символи, що часто використовуються. У спливаючому вікні Search for usages (Shift+Alt+F12) з'явилася кнопка Show in Find Results. Якщо пошук займає багато часу, натисніть цю кнопку (або на цифровому блоці) і продовжуйте роботу над проектом, поки пошук виконується у вікні Find Results. Це вікно тепер теж наповнюється асинхронно, дозволяючи працювати з частковими результатами пошуку.

image

Ми також попрацювали над представленням інформації у вікнах Recent Files Recent Edits. Тепер у них показується шлях до файлу, щоб уникнути плутанини у разі однакових імен. В Recent Files можна видаляти записи за допомогою клавіші Delete. В Recent Edits кілька змін в одному і тому ж методі об'єднуються в один запис.

В Go to Text з'явилася підтримка нових форматів файлів: .less, .hbs, .coffee, .scss, .dart, .as .styl.

У налаштуваннях ReSharper з'явилася нова опція Remember last search. Якщо її включити і виконати пошук, то його результати відобразяться у вікні при наступному виклику Go to Everything, Go to Text та інших пошукових команд. Це корисно, якщо не підійшов перший результат пошуку, на який ви перейшли, і ви хочете походити по іншим результатами.

ReSharper Build
Використання ReSharper Build дозволяє скоротити час на складання рішення, т. к. перебудовуються тільки проекти, в яких були зміни. Результати складання тепер відображаються в окремому вікні Build Results, яке надає ряд опцій для зручного перегляду попереджень і помилок. Можна показати або приховати попередження, вивести код з помилкою у вікно попереднього перегляду і згрупувати результати за різними критеріями.

image

ReSharper Build обзавівся власним механізмом відновлення пакетів NuGet (NuGet Restore). Раніше доводилося використовувати інтеграцію NuGet в Visual Studio, але це працювало тільки у версії 2015. Тепер механізм відновлення працює у всіх версіях Visual Studio за умови, що у вас встановлено .NET Framework 4.5 або вище.

Невеликі зміни з'явилися в опціях ReSharper Build. З цікавого — висновок журналу помилок у вікно Output Visual Studio або запис журналу у файл.

Підтримка .NET Core
Ми поліпшили підтримку .NET Core по всіх інструментах ReSharper Ultimate. ReSharper тепер дозволяє запускати юніт-тести xUnit і NUnit в проектах .NET Core і ASP.NET Core 1.0.x Visual Studio 2015. Все, що ви звикли робити з тестами .NET Framework — запускати, налагоджувати, організовувати по сесіях, — тепер доступно і в проектах .NET Core.

image

dotCover тепер вміє вимірювати покриття коду юніт-тестів проектах .NET Core.

У dotTrace і dotMemory можна профілювати продуктивність і споживання пам'яті в додатках .NET Core. Для цього виберіть тип профілювання .NET Core Application і вкажіть шлях до програми.

image

Покращена підтримка TypeScript, JavaScript і JSON в ReSharper
У TypeScript з'явилося автодоповнення коду для строкових літералів. Якщо у нас є метод з певним набором параметрів, то автодоповнення коду їх покаже. Це працює і для чисел.

Go to Implementation (Ctrl+F12) працює для типів TypeScript. Переходьте від базового типу до будь-якої з його реалізацій, пропустивши проміжні кроки в ланцюжку спадкування. Структурний пошук (Structural Navigation) з використанням клавіш Tab або Shift+Tab працює в JavaScript, TypeScript і JSON.

Нове швидке виправлення Surround with type guard генерує перевірку типу змінних. У прикладі нижче ми додали захист типу для padding, щоб виключити помилку в тому випадку, якщо змінна містить число.

image

Ми також додали підтримку CSS, JSON і JavaScript коду в строкових литералах. В C#, TypeScript або JavaScript строковому литералу можна присвоїти певну мову, щоб отримати доступ до функцій ReSharper з аналізу коду та автодополнению. Зробити це можна двома способами: за допомогою комбінації клавіш Alt+Enter викликати контекстне дію Mark as або додати коментар з таким синтаксисом:
//language=javascript|html|regexp|jsregexp|json|css 


ReSharper автоматично розпізнає код в литералах для відомих сценаріїв, таких як введення коду JavaScript в шаблони AngularJS або CSS в індексатори
$[] 
jQuery. Включити або відключити автоматичну підтримку коду в строкових литералах можна в опціях ReSharper: Options | Code Editing | Language Injections.

Нарешті, в ReSharper з'явилася нова опція для налаштування роботи зі стороннім кодом. На сторінці Third-Party Code можна відзначити JavaScript, TypeScript або JSON файли як «Skipped code» або «code Library», виключивши таким чином сторонній код з індексації та інспекцій ReSharper.

image

Декомпілятор в ReSharper і dotPeek
У вікні ReSharper Assembly Explorer з'явилася можливість відкрити збірку, завантаживши його безпосередньо з nuget.org або іншого сховища пакунків.

image

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

В автономному dotPeek тепер показуються метадані .NET збірок: таблиці, BLOB-об'єкти, рядка і т. д. Вікно Assembly Explorer дозволяє автоматично знайти і відобразити входження табличних елементів метаданих, декодувати і вивести значення BLOB, досліджувати заголовки PE-файлу. І, звичайно, можна подивитися декомпилированный код для будь-якого елемента метаданих.

image

Нова підсвічування коду в dotCover
У dotCover змінився механізм підсвічування коду. Раніше покриті тестами рядка коду виділялися зеленим кольором, а непокриті — червоним. Замість цього в текстовому редакторі з'явилися кольорові маркери, які показують як стан покриття коду, так і статус покривають їх юніт-тестів. Зелений маркер поряд з рядком означає, що всі інструкції на цій рядку покриті і тести проходять. Червоний — не працюють тести, пов'язані з поточною інструкцією. Сірий маркер повідомляє про те, що інструкція не покрита тестами.



dotTrace: доопрацьоване подання Timeline
В режимі Timeline з'явилася нова опція Collect native allocations, яку можна вибрати перед запуском профилировщика. Потім при аналізі даних профілювання можна відфільтрувати події за зверненням до нативної пам'яті (Native Memory Allocation), щоб виявити місця в коді з можливими витоками пам'яті, проблемами використання некерованих компонентів у вашому керованому коді і т. д.



Timeline viewer тепер містить підсистеми (Subsystems) — одну з кращих фіч Performance Viewer. Механіка підсистем проста: у більшості випадків, кожна підсистема групує виклики, виконані в певному просторі імен або складання. Ця інформація корисна для швидкої оцінки розподілу часу в певному поддереве виклику серед різних компонентів: інтерфейс і системний код, WPF, LINQ, колекції, рядка і т. д.



Якщо ви використовуєте в своєму рішенні сторонні фреймворки, додайте відповідні підсистеми в dotTrace. Навіть швидкий погляд на підсистеми в дереві викликів дозволить зрозуміти, скільки часу в цьому дереві припадає на той чи інший фреймворк.

Вікно Call Stack отримало цілий набір поліпшень. Ми повернули опцію Show system functions, корисну при аналізі часу виконання методів. Список методів крім часу кожного методу показує загальний час піддерева виклику. Клікніть по часу методу або загального часу, щоб застосувати фільтр по відповідному методу або методу і його поддереву.

У dotTrace 2016.3 ми додали нове вікно подій (Events), в якому видно всі події в ході профілювання: файлові операції, JIT, SQL запити та ін



Нова автоінспекція dotMemory
dotMemory надає ряд автоматичних інспекцій для діагностики витоків пам'яті. На додаток до виявлення дублікатів рядків, розріджених масивів та інших проблем, dotMemory тепер дозволяє перевірити програму на наявність завершених об'єктів і об'єктів у черзі на завершення. Ці об'єкти, відсортовані по типу, показуються в розділі Finalizable objects, і є кандидатами на реалізацію в їхніх класах інтерфейсу
iDisposable
.



ReSharper C++
Постфиксные автодоповнення і шаблони — одне з найбільш цікавих оновлень, які прийшли з ReSharper, дозволять вам повністю сфокусуватися на даних, а не на синтаксисі. Коли ви додаєте крапку (.) або стрілку (->) після вирази, ReSharper С++ запропонує вільні функції, які можуть прийняти це вираз в якості першого параметра. Постфиксные шаблони допомагають заощадити час при необхідності змінити те чи інше вираження. Обертайте вираз з використанням шаблонів if, else, while, do, return, switch і foreach, додавши відповідний постфікс.

image

Ми додали нові рефакторинги typedef. Introduce typedef швидко визначає тип для вибраного типу даних і замінює цей тип і всі його входження на новий typedef. Inline typedef робить протилежне: замінює існуючий typedef фактичним типом даних.

image

Ще в ReSharper C++ з'явилася підтримка тестового фреймворку Catch, можливість аналізу коду з командного рядка і багато іншого. У відео-огляді наш технічний євангеліст Phil Nash докладно розповів про всі оновлення ReSharper C++:



Спробуйте інструменти в роботі та поділіться думкою
У цій статті розглянуті найбільш помітні оновлення ReSharper Ultimate. Більше подробиць ви знайдете на сторінці what's New. Там же можна скачать продукти.

Як завжди, ми будемо раді вашим коментарям. Обов'язково пишіть про свій досвід використання інструментів, побажання і виникли проблеми тут або в наш баг-трекер.

Спасибі за увагу і до нових релізів ;)
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.