ReSharper предоставляет более 1200 автоматических исправлений, которые помогают мгновенно устранять большинство обнаруженных проблем в коде на C#, VB.NET, XAML, ASP.NET и других поддерживаемых языках. Чтобы применить быстрое исправление, просто нажмите Alt + Enter на строке с подсвеченной проблемой и выберите наиболее подходящий способ исправить ошибку или улучшить код.
Там, где можно применить быстрое исправление, появляется значок красной (для ошибок) или желтой (для предупреждений, предложений и подсказок) лампочки, который загорается слева от подсвеченнной строки кода при перемещении курсора на нее. Кликните на лампочку или нажмите Alt + Enter, чтобы просмотреть список доступных исправлений для ошибки. Просто выберите нужное исправление из списка, и проблема будет решена.
Некоторые быстрые исправления (Remove unused directives, Make field read-only, Remove redundant cast, и др.) могут находить и мгновенно устранять проблемы в текущем файле, проекте или даже во всем решении.
Такие исправления легко узнать по маленькой стрелке рядом с ними. Кликните по этой стрелке или нажмите клавишу со стрелкой вправо на клавиатуре, чтобы выбрать область, в которой следует применить исправление.
Для ошибок, вызванных ссылками на неразрешенные символы, ReSharper предлагает целый ряд быстрых исправлений, например:
Быстрые исправления, создающие новые символы в коде, часто бывают интерактивными, как в этом примере, где ReSharper помогает исправить множественные перечисления IEnumerable
путем предварительного задания перечисления в переменной List<>
.
Когда ReSharper выделяет обязательные поля ввода красной рамкой, вы можете принять предложенное значение или изменить его, а затем нажать Tab или Enter, чтобы перейти к следующей позиции ввода, или нажать Shift + Tab для возвращения к предыдущей позиции. Как только вы закончите с последним полем ввода, курсор вернется в обычный режим.
В ReSharper есть контекстные действия, которые отображаются в том же раскрывающемся списке, что и быстрые исправления.
Разница проста: ReSharper предлагает быстрые исправления только для подсвеченных проблем с целью их устранения, в то время как контекстные действия представляют собой мини-рефакторинги, которые всегда доступны в раскрывающемся меню по нажатию Alt + Enter.
В ReSharper есть функция Structural Search and Replace, которая позволяет найти код, соответствующий определенному паттерну, и при необходимости заменить его кодом, соответствующим другому паттерну. Более того, ReSharper может вести непрерывный мониторинг решения на предмет заданных паттернов поиска, подсвечивать код, соответствующий паттерну, и предлагать быстрые исправления для замены кода в соответствии с паттернами замены.
Долгие годы использование метода String.Format
и других методов, поддерживающих составное форматирование, было единственным способом встраивания значений переменных C# в строковые литералы. Доступная с версии C# 6.0 интерполяция строк предоставляет более понятный и удобный синтаксис. Благодаря быстрому исправлению заменить составное форматирование на интерполяцию строк можно всего за пару нажатий.
При обнаружении вызова метода для объекта с возможным значением null, что может привести к исключению System.NullReferenceException
, ReSharper предлагает два варианта быстрых исправлений. Традиционное исправление добавит процедуру проверки на null перед вызовом. Однако более лаконичный способ заключается в использовании оператора проверки на null .?
, который был добавлен в C# 6.0 специально для обработки подобных сценариев.
Если вам нравится синтаксис LINQ, ReSharper поможет проверить существующие кодовые базы на наличие циклов, которые могут быть преобразованы в LINQ-выражения. Используйте автоматическое исправление, чтобы выполнить преобразование быстро и безопасно.
Если в метод C# может передаваться переменное число аргументов с ключевым словом params
, компилятор автоматически генерирует массив аргументов, чтобы не приходилось создавать массив аргументов в вызове метода самостоятельно.
Более того, ReSharper предложит быстрое исправление, которое уберет весь избыточный код в выбранной области, включая ненужные квалификаторы, аргументы, преобразования типов, проверки условий, неиспользуемые присвоения, недостижимый код и многое другое.
Если единственная задача перегружаемой функции заключается в вызове «реализующей» функции, в которой для некоторых аргументов заданы значения по умолчанию, ReSharper помогает убрать эту перегрузку и использовать необязательные параметры в «реализующей» функции.
foreach
устроен так, что допускает скрытое приведение к производному типу. С одной стороны, так проще, но с другой стороны, это может привести к исключению System.InvalidCastException
во время выполнения. Быстрое исправление, которое предлагает ReSharper, поможет сделать приведение явным. Это по-прежнему не безопасно, однако по крайней мере поведение больше не является скрытым.
Многие быстрые исправления работают для нескольких языков. Рассмотрим пример быстрого исправления, доступного как в C#, так и в VB.NET: чтобы сделать более ясным сравнение строго двух строк, ReSharper предлагает заменить оператор равенства вызовом String.Equals()
, который обрабатывает регистр символов и заставляет сравнение учитывать культурные особенности.
Работать с типами объединений TypeScript бывает непросто. Например, если в значении типа объединения используется член, не являющийся общим для всех типов, компилятор выдает ошибку. В этом случае ReSharper предлагает ряд быстрых исправлений, добавляющих различные условия типа для устранения двусмысленности такого члена.
В файлах JSON ReSharper предлагает быстрые исправления для недостающих обязательных свойств, сверяясь со сведениями обо всех обязательных свойствах, полученными из связанных схем JSON.
CSS уровня 3 и ниже не поддерживает значения альфа-канала в шестнадцатеричной нотации цвета. Поэтому ReSharper предлагает вам либо заменить шестнадцатеричный цвет на RGBA или HSLA, либо просто удалить значение альфа-канала.