Быстрые исправления

ReSharper предоставляет более 1200 автоматических исправлений, которые помогают мгновенно устранять большинство обнаруженных проблем в коде на C#, VB.NET, XAML, ASP.NET, JavaScript, TypeScript и других поддерживаемых языках. Чтобы применить быстрое исправление, просто нажмите Alt + Enter на строке с подсвеченной проблемой и выберите наиболее подходящий способ исправить ошибку или улучшить код.

Быстрые исправления ошибок в ReSharper

Применение быстрых исправлений

Там, где можно применить быстрое исправление, появляется значок красной (для ошибок) или желтой (для предупреждений, предложений и подсказок) лампочки, который загорается слева от подсвеченнной строки кода при перемещении курсора на нее. Кликните на лампочку или нажмите Alt + Enter, чтобы просмотреть список доступных исправлений для ошибки. Просто выберите нужное исправление из списка, и проблема будет решена.

Применение быстрых исправлений ReSharper в более широкой области (в файле, проекте, по всему решению)

Глобальные исправления

Некоторые быстрые исправления (Remove unused directives, Make field read-only, Remove redundant cast, и др.) могут находить и мгновенно устранять проблемы в текущем файле, проекте или даже во всем решении.

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

Быстрые исправления действия ReSharper для неразрешенных символов

Исправление неразрешенных символов

Для ошибок, вызванных ссылками на неразрешенные символы, ReSharper предлагает целый ряд быстрых исправлений, например:

Быстрые исправления ошибок в ReSharper

Интерактивные быстрые исправления

Быстрые исправления, создающие новые символы в коде, часто бывают интерактивными, как в этом примере, где ReSharper помогает исправить множественные перечисления IEnumerable путем предварительного задания перечисления в переменной List<>.

Когда ReSharper выделяет обязательные поля ввода красной рамкой, вы можете принять предложенное значение или изменить его, а затем нажать Tab или Enter, чтобы перейти к следующей позиции ввода, или нажать Shift + Tab для возвращения к предыдущей позиции. Как только вы закончите с последним полем ввода, курсор вернется в обычный режим.

Быстрые исправления и контекстные действия ReSharper

Быстрые исправления vs. контекстные действия

В ReSharper есть контекстные действия, которые отображаются в том же раскрывающемся списке, что и быстрые исправления.

Разница проста: ReSharper предлагает быстрые исправления только для подсвеченных проблем с целью их устранения, в то время как контекстные действия представляют собой мини-рефакторинги, которые всегда доступны в раскрывающемся меню по нажатию Alt + Enter.

Подсветка кода, соответствующего паттерну поиска, и замена его другим паттерном

Пользовательские быстрые исправления

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

Быстрые исправления ошибок в ReSharper

C#: интерполяция строк Пример

Долгие годы использование метода String.Format и других методов, поддерживающих составное форматирование, было единственным способом встраивания значений переменных C# в строковые литералы. Доступная с версии C# 6.0 интерполяция строк предоставляет более понятный и удобный синтаксис. Благодаря быстрому исправлению заменить составное форматирование на интерполяцию строк можно всего за пару нажатий.

Быстрые исправления ошибок в ReSharper

C#: обработка возможных исключений NullReferenceException Пример

При обнаружении вызова метода для объекта с возможным значением null, что может привести к исключению System.NullReferenceException, ReSharper предлагает два варианта быстрых исправлений. Традиционное исправление добавит процедуру проверки на null перед вызовом. Однако более лаконичный способ заключается в использовании оператора проверки на null .?, который был добавлен в C# 6.0 специально для обработки подобных сценариев.

Быстрые исправления ошибок в ReSharper

C#: преобразование цикла foreach в LINQ-выражение Пример

Если вам нравится синтаксис LINQ, ReSharper поможет проверить существующие кодовые базы на наличие циклов, которые могут быть преобразованы в LINQ-выражения. Используйте автоматическое исправление, чтобы выполнить преобразование быстро и безопасно.

Быстрые исправления ошибок в ReSharper

C#: удаление избыточного создания массива Пример

Если в метод C# может передаваться переменное число аргументов с ключевым словом params, компилятор автоматически генерирует массив аргументов, чтобы не приходилось создавать массив аргументов в вызове метода самостоятельно.

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

Быстрые исправления ошибок в ReSharper

C#: введение необязательных параметров Пример

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

Быстрые исправления ошибок в ReSharper

C#: использование явного приведения внутри цикла foreach Пример

foreach устроен так, что допускает скрытое приведение к производному типу. С одной стороны, так проще, но с другой стороны, это может привести к исключению System.InvalidCastException во время выполнения. Быстрое исправление, которое предлагает ReSharper, поможет сделать приведение явным. Это по-прежнему не безопасно, однако по крайней мере поведение больше не является скрытым.

Быстрые исправления ошибок в ReSharper

VB.NET: указание сравнения строк Пример

Многие быстрые исправления работают для нескольких языков. Рассмотрим пример быстрого исправления, доступного как в C#, так и в VB.NET: чтобы сделать более ясным сравнение строго двух строк, ReSharper предлагает заменить оператор равенства вызовом String.Equals(), который обрабатывает регистр символов и заставляет сравнение учитывать культурные особенности.

Быстрые исправления ошибок в ReSharper

TypeScript: добавление условия типа (type guard) Пример

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

Быстрые исправления ошибок в ReSharper

JSON: добавление недостающего обязательного свойства Пример

В файлах JSON ReSharper предлагает быстрые исправления для недостающих обязательных свойств, сверяясь со сведениями обо всех обязательных свойствах, полученными из связанных схем JSON.

Быстрые исправления ошибок в ReSharper

CSS: удаление компонента альфа-канала Пример

CSS уровня 3 и ниже не поддерживает значения альфа-канала в шестнадцатеричной нотации цвета. Поэтому ReSharper предлагает вам либо заменить шестнадцатеричный цвет на RGBA или HSLA, либо просто удалить значение альфа-канала.