Навигация и поиск

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

Контекстная навигация в ReSharper

Navigate To — это диалог, который объединяет в себе все виды контекстной навигации. В нем перечислены все возможные конечные пункты навигации, доступные в текущем положении курсора. Нажмите Alt+` для быстрого перехода к объявлению символа, определению типа, базовому классу, наследникам или использованиям символа, на котором находится курсор; для навигации от интерфейса к его реализации, от функции к точкам выхода и др.

Go to File Member (переход к члену файла)

Go to File Member (переход к члену файла)

Для быстрого перехода к определенному методу или полю в текущем файле, используйте команду Go to File Member, которая вызывается нажатием Alt+\. Как и в случае с командой Go to Type (переход к типу), начните вводить имя символа, а затем выберите нужный из списка совпадений. Эта команда работает с членами файлов на всех поддерживаемых языках.

Go to Everything/Type (переход ко всему/к типу)

Эта команда, вызываемая сочетанием клавиш Ctrl+T, объединяет в себе две функции:

Диалог Go to Everything появляется первым и служит для быстрой навигацию по всем возможным направлениям (к типам, символам или файлам). Варианты навигации появляются, как только вы вызываете команду, и поначалу представляют собой список файлов и мест в коде, которые вы недавно посещали. По мере ввода текста этот список обновляется. Дополнительно отфильтровать результаты поиска можно с помощью специальных команд, которые начинаются со знака /.

Диалог Go to Type открывается при повторном нажатии сочетания клавиш и позволяет перейти к любому типу в вашем решении.

Эти и другие действия Go to поддерживают символы подстановки: * (звездочка) представляет собой ноль или более произвольных символов; если поисковой запрос помещен в двойные кавычки будет выполняться поиск точного соответствия; ? (знак вопроса) при поиске точного соответствия означает ровно один произвольный символ;

Go to Text для текстового поиска

Go to Text для текстового поиска

Это действие, вызываемое нажатием Ctrl+T,T,T, позволяет быстро найти любой текст в исходных и текстовых файлах вашего решения. Как и в случае с другими командами навигации, если совпадений слишком много, вы можете нажать + на цифровой клавиатуре, чтобы просмотреть результаты поиска в окне Find Results. При вводе запроса можно использовать специальные команды для ограничения области поиска: /cp для поиска в текущем проекте, /ext: для поиска по файлам с определенным расширением или /fm: для отбора файлов по маске.

Отличия команд «Go to Implementation» и «Go to Derived Symbols»

Go to Implementation (переход к реализации)

Эта команда, вызываемая сочетанием клавиш Ctrl+F12, позволяет переходить от базового типа или члена к любой из его конечных реализаций, минуя промежуточные звенья цепочки наследования.

Команда работает аналогично действию Go to Derived Symbols (переход к производным символам), но позволяет сэкономить время, когда вам нужно пропустить один или несколько уровней иерархии типов. Посмотрите анимацию, чтобы увидеть разницу.

Навигация к действию

Go to Action (переход к действию)

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

Go to Exposing APIs

Go to Exposing APIs

Эта команда, доступная в диалоге Navigate To (Alt+`), осуществляет переход от типа ко всем местам в решении, где можно получить экземпляр этого типа: открытым полям и свойствам, возвращаемым значениям метода, параметрам out и т.д.

Go to Symbol (переход к символу)

Go to Symbol (переход к символу)

Команда Go to Symbol выполняет поиск методов, полей и других членов файла по имени. Поиск осуществляется по всему решению, команда вызывается нажатием Shift+Alt+T. Обратите внимание, что все команды Go to, включая Go to Symbol, поддерживают сокращения CamelHumps без учета регистра. То есть чтобы быстро найти testFixedSizeBuffer, достаточно ввести первую и любые последующие буквы имени, например tfixs.

Go to Base (переход к базовому символу)

Go to Base (переход к базовому символу)

Чтобы перейти вверх по иерархии к базовому типу или методу, поместите курсор на использование или объявление типа или метода в редакторе и нажмите Alt+Home.
Если метод переопределяет, реализует или скрывает другой метод, на поле редактора слева от объявления метода появится специальный значок. Кликните по нему, чтобы перейти вверх по иерархии методов.

Навигация к объявлению символа

Go to Declaration (переход к объявлению)

Чтобы перейти к объявлению символа, поместите курсор на любое использование символа и нажмите F12 или удерживайте Ctrl и кликните по символу левой кнопкой мыши. ReSharper перейдет к искомому объявлению типа, метода, поля или локальной переменной в соответствующем исходном файле. Для библиотечных символов соответствующая сущность будет отображаться в обозревателе объектов Visual Studio или в редакторе в виде метаданных или декомпилированного кода, в зависимости от настроек ReSharper.

Навигация между использованиями

Переключение между использованиями символа

Вызвать команду Go to Declaration также можно, когда курсор уже находится на объявлении символа. Если у символа одно объявление и одно использование, вы можете просто переключаться между ними одним сочетанием клавиш. Если же у символа много использований, каждый последующий вызов команды Go to Declaration будет приводить к новым обнаруженным использованиям — по одному за раз. В навигации между использованиями помогает панель, подобная Find Usages, на которой отображаются найденные использования, содержатся дополнительные элементы для переключения между использованиями с помощью мыши, а также есть возможность перенести все найденные использования в обычное окно Find Results.

Переход к связанным файлам

С помощью действия Go to Related Files (вызывается нажатием Ctrl+Alt+F7) вы сможете перейти к любому файлу, на который так или иначе ссылается текущий файл. Это особенно полезно при разработке веб-сайтов и веб-приложений: можно переходить с веб-формы на мастер-страницу, к пользовательским элементам управления, ссылочным изображениям или JavaScript-файлам. В приложениях ASP.NET MVC эта функция упрощает навигацию от представлений к контроллерам и обратно.

Узнайте больше о продвинутых возможностях навигации и других функциях, которые ReSharper предлагает веб-разработчикам, в разделе «Инструменты для ASP.NET и ASP.NET MVC».

Навигация к соседним файлам

Переход к соседним файлам

Действие Go to File Nearby, доступное в диалоге Navigate To (Alt+`), помогает быстро перемещаться по той части структуры проекта, в которой находится текущий файл. Во всплывающем окне вы увидите проект, к которому принадлежит текущий файл, сможете легко перейти к папкам и файлам того же уровня или создать новый файл или папку.

Выбор возможности навигации «Sources from Symbol Files» для библиотечного символа

Навигация к библиотечному коду

Любое решение содержит как собственный исходный код, так и ссылки на библиотеки. Мы подумали, что было бы здорово перемещаться по библиотекам так же, как по исходному коду.

Некоторые компании публикуют части своих исходников, используя функцию Source Server файлов отладочной информации (PDB). А Microsoft использует эту технологию для предоставления доступа к исходному коду .NET Framework. Если у вас есть доступные PDB-файлы и установлен ReSharper, вы можете получить доступ к иcходному коду, хранящемуся таким образом, так же как коду, являющемуся частью вашего решения. Если нужно узнать содержимое определенного класса .NET Framework, ReSharper покажет вам его.

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

Вот как это работает, когда исходный сервер доступен:

  1. Нажмите Alt+` на символе библиотеки, чтобы открыть диалог Navigate To с вариантами навигации.
  2. Выберите опцию внешней навигации для библиотечного символа.
  3. ReSharper загрузит PDB-файлы с исходного сервера.
  4. ReSharper отобразит объявление выбранного символа так, как если бы он был определен в вашем решении.
Поиск использований символа

Find Usages (поиск использований)

Действие Find Usages быстро находит использования любого символа (типа, метода, поля и т.д.) в коде. Чтобы обнаружить использования символа, просто поместите на него курсор и нажмите Shift+F12. В многоязычных проектах ReSharper позволяет находить использования в коде на разных языках.

Результаты поиска отображаются в окне Find Results в иерархическом представлении. Из этого окна можно непосредственно перейти к найденному использованию с помощью клавиатуры или мыши. В окне Find Results предусмотрены дополнительные возможности работы с результатами поиска:

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

Для навигации между использованиями при открытом окне Find Results можно нажать Ctrl+Alt+PageUp/PageDown (даже прямо в редакторе).

Поиск использований связанных символов

Расширенный поиск использований

Указать область поиска и тип использований, которые требуется найти, можно с помощью функциональности Find Usages Advanced, вызываемой сочетанием клавиш Ctrl+Shift+Alt+F12.

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

Структурный вид файла

Навигация по структуре файла

Окно File Structure работает со всеми поддерживаемыми языками и типами файлов. Для файлов C# или VB.NET отображаются методы, поля, классы и регионы, которые в них содержатся; также из этого окна можно перейти непосредственно к их объявлениям: для этого достаточно нажать Ctrl+Alt+F.

В файлах ASP.NET окно File Structure позволяет исследовать теги, скриптлеты, элементы управления и другие структурные элементы файла, открытого в данный момент, а также переходить непосредственно к объявлениям. Подробнее об этих и других возможностях навигации для веб-разработчиков рассказывается в разделе «Инструменты для ASP.NET и ASP.NET MVC».

Для скриптов сборки окно File Structure показывает свойства и цели, содержащиеся в текущем скрипте.

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

Окно File Structure полностью синхронизировано с редактором. Все изменения, вносимые в файл, немедленно отражаются в окне File Structure и наоборот.

Навигация по структуре с помощью Tab

Навигация по структуре с помощью Tab

С помощью клавиш Tab и Shift+Tab вы можете переключаться между логическими частями кода аналогично тому, как вы перемещаетесь в веб-браузере.

Например, при редактировании выражения for клавиша Tab выбирает выражение-инициализатор, затем конечное условие, и наконец, выражение-итератор. Сочетание клавиш Shift+Tab выбирает элементы выражения в обратном порядке.

Если, однако, курсор расположен перед первым непробельным символом в строке, клавишу Tab можно использовать для задания отступа.

Подробнее: как ReSharper возвращает былое величие табуляции

Просмотрщик Intermediate Language в ReSharper

Просмотрщик IL

Просмотрщик Intermediate Language позволяет рыться как в коде сторонних библиотек, так и в IL, созданном из своего кода (отметим, что код сначала необходимо скомпилировать).

Чтобы ознакомиться с работой просмотрщика IL, можно выбрать команду меню ReSharper | Windows | IL Viewer.

Просмотрщик трассировки стека в ReSharper

Просмотрщик трассировки стека

Трассировку стека из стороннего источника (например, из сообщения об ошибке) можно вставить в Stack Trace Explorer и перейти к месту возникновения исключения. Строки, входящие в трассировку стека, отображаются как гиперссылки. Чтобы открыть Stack Trace Explorer, необходимо скопировать трассировку стека в буфер обмена и нажать Ctrl+E, T.

Go to File (переход к файлу)

Go to File (переход к файлу)

Команда Go to File позволяет перейти к любому файлу в решении. Эта команда, вызываемая сочетанием клавиш Ctrl+Shift+T, поддерживает все приемы поиска и символы подстановки, которые используются в других командах Go to.

Переход к производным символам

Переход к производным символам

Команда Go to Derived Symbols позволяет перейти к производному типу или методу с помощью сочетания клавиш Alt+End. Промежуточные производные типы выделяются жирным шрифтом.

Переход к подстановкам обобщенных типов

Переход к подстановкам обобщенных типов

Команда Go to Generic Substitutions, которую можно вызвать по сочетанию клавиш Navigate To, выводит список всех типов, замещающих выбранный параметр обобщенного типа, а также все места в коде, где используется каждая подстановка.

Переход к типу символа

Переход к объявлению типа

Сочетание клавиш Ctrl+Shift+F11 позволяет перейти к объявлению типа, к которому принадлежит переменная, поле или параметр. ReSharper переходит к объявлению в исходном коде, а в случае библиотечных типов соответствующий символ отображается в Object Browser или отображается декомпилированный код.

Переход к следующему члену/тегу

Сочетание клавиш Alt+Up позволяет быстро перейти к следующему члену файла в файлах исходного кода C# или VB.NET или к следующему тегу в файлах XML или XAML.

Переход к предыдущему члену/тегу

Аналогично команде Go to Next Member, эта команда позволяет перейти к предыдущему члену или тегу — достаточно нажать Alt+Down.

Навигация к использованию символа

Переход к использованию

Для быстрой навигации к символам, у которых немного использований (например, с закрытым полем) можно нажать Shift+Alt+F12. При этом полномасштабное окно инструмента не открывается, а использования отображаются во всплывающем окне.

Однако если выяснится, что список использований символа слишком длинный, можно нажать на значок увеличения в верхнем правом углу всплывающего окна, чтобы перенести список использований в окно Find Results.

Подсветка использований в ReSharper

Подсветка использований

Чтобы подсветить все использования символа в текущем файле, достаточно расположить курсор на любом использовании символа и нажать Shift+Alt+F11. Также можно подсвечивать использования директив импорта и даже выражений. В больших файлах для навигации между подсвеченными использованиями можно использовать правую панель маркеров.
ReSharper быстро находит и выделяет использования символов в разметке XAML, а также использования на разных языках.

Паттерны поиска и замены из каталога паттернов в ReSharper

Структурный поиск и замена

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

Создавать паттерны и контролировать правильность подходов к разработке теперь проще, чем когда-либо. Корпоративные и командные политики, собственные фреймворки, любимые библиотеки с открытым кодом и инструменты — структурированные паттерны пригодятся везде. А лучшие паттерны можно импортировать и экспортировать, чтобы ими могли пользоваться коллеги, а также переносить их между копиями ReSharper.

Вид иерархии типов