Возможности навигации ReSharper позволяют легко перемещаться по всему решению. Вы можете быстро переходить к любому файлу, типу или члену в кодовой базе, навигироваться от определенного символа к его использованиям, базовым и производным символам или реализациям.
Navigate To — это диалог, который объединяет в себе все виды контекстной навигации. В нем перечислены все возможные конечные пункты навигации, доступные в текущем положении курсора. Нажмите Alt+` для быстрого перехода к объявлению символа, определению типа, базовому классу, наследникам или использованиям символа, на котором находится курсор; для навигации от интерфейса к его реализации, от функции к точкам выхода и др.
Для быстрого перехода к определенному методу или полю в текущем файле, используйте команду Go to File Member, которая вызывается нажатием Alt+\. Как и в случае с командой Go to Type (переход к типу), начните вводить имя символа, а затем выберите нужный из списка совпадений. Эта команда работает с членами файлов на всех поддерживаемых языках.
Эта команда, вызываемая сочетанием клавиш Ctrl+T, объединяет в себе две функции:
Диалог Go to Everything появляется первым и служит для быстрой навигацию по всем возможным направлениям (к типам, символам или файлам). Варианты навигации появляются, как только вы вызываете команду, и поначалу представляют собой список файлов и мест в коде, которые вы недавно посещали. По мере ввода текста этот список обновляется. Дополнительно отфильтровать результаты поиска можно с помощью специальных команд, которые начинаются со знака /
.
Диалог Go to Type открывается при повторном нажатии сочетания клавиш и позволяет перейти к любому типу в вашем решении.
Эти и другие действия Go to поддерживают символы подстановки: *
(звездочка) представляет собой ноль или более произвольных символов; если поисковый запрос помещен в двойные кавычки, будет выполняться поиск точного соответствия; ?
(знак вопроса) при поиске точного соответствия означает ровно один произвольный символ;
Это действие, вызываемое нажатием Ctrl+T,T,T, позволяет быстро найти любой текст в исходных и текстовых файлах вашего решения. Как и в случае с другими командами навигации, если совпадений слишком много, вы можете нажать + на цифровой клавиатуре, чтобы просмотреть результаты поиска в окне Find Results. При вводе запроса можно использовать специальные команды для ограничения области поиска: /cp
для поиска в текущем проекте, /ext:
для поиска по файлам с определенным расширением или /fm:
для отбора файлов по маске.
Эта команда, вызываемая сочетанием клавиш Ctrl+F12, позволяет переходить от базового типа или члена к любой из его конечных реализаций, минуя промежуточные звенья цепочки наследования.
Команда работает аналогично действию Go to Derived Symbols (переход к производным символам), но позволяет сэкономить время, когда вам нужно пропустить один или несколько уровней иерархии типов. Посмотрите анимацию, чтобы увидеть разницу.
ReSharper помогает быстро найти и применить любое действие, не копаясь в меню (под действием подразумевается исполняемая команда, доступная для текущей позиции курсора, или команда, которая открывает окно инструмента). Чтобы найти нужное действие, просто нажмите Alt+Enter, находясь в редакторе, и начните вводить имя команды или связанные слова.
Эта команда, доступная в диалоге Navigate To (Alt+`), осуществляет переход от типа ко всем местам в решении, где можно получить экземпляр этого типа: открытым полям и свойствам, возвращаемым значениям метода, параметрам out и т.д.
Команда Go to Symbol выполняет поиск методов, полей и других членов файла по имени. Поиск осуществляется по всему решению, команда вызывается нажатием Shift+Alt+T. Обратите внимание, что все команды Go to, включая Go to Symbol, поддерживают сокращения CamelHumps без учета регистра. То есть чтобы быстро найти testFixedSizeBuffer, достаточно ввести первую и любые последующие буквы имени, например tfixs.
Чтобы перейти вверх по иерархии к базовому типу или методу, поместите курсор на использование или объявление типа или метода в редакторе и нажмите Alt+Home.
Если метод переопределяет, реализует или скрывает другой метод, на поле редактора слева от объявления метода появится специальный значок. Кликните по нему, чтобы перейти вверх по иерархии методов.
Чтобы перейти к объявлению символа, поместите курсор на любое использование символа и нажмите F12 или удерживайте Ctrl и кликните по символу левой кнопкой мыши. ReSharper перейдет к искомому объявлению типа, метода, поля или локальной переменной в соответствующем исходном файле. Для библиотечных символов соответствующая сущность будет отображаться в обозревателе объектов Visual Studio или в редакторе в виде метаданных или декомпилированного кода, в зависимости от настроек ReSharper.
Вызвать команду Go to Declaration также можно, когда курсор уже находится на объявлении символа. Если у символа одно объявление и одно использование, вы можете просто переключаться между ними одним сочетанием клавиш. Если же у символа много использований, каждый последующий вызов команды Go to Declaration будет приводить к новым обнаруженным использованиям — по одному за раз. В навигации между использованиями помогает панель, подобная Find Usages, на которой отображаются найденные использования, содержатся дополнительные элементы для переключения между использованиями с помощью мыши, а также есть возможность перенести все найденные использования в обычное окно Find Results.
С помощью действия Go to Related Files (вызывается нажатием Ctrl+Alt+F7) вы сможете перейти к любому файлу, на который так или иначе ссылается текущий файл. Это особенно полезно при разработке веб-сайтов и веб-приложений: можно переходить с веб-формы на мастер-страницу, к пользовательским элементам управления или ссылочным изображениям. В приложениях ASP.NET MVC эта функция упрощает навигацию от представлений к контроллерам и обратно.
Узнайте больше о продвинутых возможностях навигации и других функциях, которые ReSharper предлагает веб-разработчикам, в разделе «Инструменты для ASP.NET и ASP.NET MVC».
Действие Go to File Nearby, доступное в диалоге Navigate To (Alt+`), помогает быстро перемещаться по той части структуры проекта, в которой находится текущий файл. Во всплывающем окне вы увидите проект, к которому принадлежит текущий файл, сможете легко перейти к папкам и файлам того же уровня или создать новый файл или папку.
Любое решение содержит как собственный исходный код, так и ссылки на библиотеки. Мы подумали, что было бы здорово перемещаться по библиотекам так же, как по исходному коду.
Некоторые компании публикуют части своих исходников, используя функцию Source Server файлов отладочной информации (PDB). А Microsoft использует эту технологию для предоставления доступа к исходному коду .NET Framework. Если у вас есть доступные PDB-файлы и установлен ReSharper, вы можете получить доступ к иcходному коду, хранящемуся таким образом, так же как коду, являющемуся частью вашего решения. Если нужно узнать содержимое определенного класса .NET Framework, ReSharper покажет вам его.
Даже если исходный сервер недоступен, не стоит беспокоиться: ReSharper умеет реконструировать структуру библиотечного кода из метаданных.
Вот как это работает, когда исходный сервер доступен:
Действие 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 и Shift+Tab вы можете переключаться между логическими частями кода аналогично тому, как вы перемещаетесь в веб-браузере.
Например, при редактировании выражения for
клавиша Tab выбирает выражение-инициализатор, затем конечное условие, и наконец, выражение-итератор. Сочетание клавиш Shift+Tab выбирает элементы выражения в обратном порядке.
Если, однако, курсор расположен перед первым непробельным символом в строке, клавишу Tab можно использовать для задания отступа.
Просмотрщик Intermediate Language позволяет рыться как в коде сторонних библиотек, так и в IL, созданном из своего кода (отметим, что код сначала необходимо скомпилировать).
Чтобы ознакомиться с работой просмотрщика IL, можно выбрать команду меню ReSharper | Windows | IL Viewer.
Трассировку стека из стороннего источника (например, из сообщения об ошибке) можно вставить в Stack Trace Explorer и перейти к месту возникновения исключения. Строки, входящие в трассировку стека, отображаются как гиперссылки. Чтобы открыть Stack Trace Explorer, необходимо скопировать трассировку стека в буфер обмена и нажать Ctrl+E, T.
Команда 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.
Чтобы подсветить все использования символа в текущем файле, достаточно расположить курсор на любом использовании символа и нажать Shift+Alt+F11. Также можно подсвечивать использования директив импорта и даже выражений. В больших файлах для навигации между подсвеченными использованиями можно использовать правую панель маркеров.
ReSharper быстро находит и выделяет использования символов в разметке XAML, а также использования на разных языках.
Эта функциональность позволяет создавать паттерны для поиска проблем в структуре кода или старого кода, который ReSharper не умеет находить без дополнительной настройки, и заменять их хорошим кодом. Более того, чтобы дополнительно облегчить регулярную уборку сомнительного кода, можно создать свои инспекции кода и настроить быстрые исправления для них в ReSharper.
Создавать паттерны и контролировать правильность подходов к разработке теперь проще, чем когда-либо. Корпоративные и командные политики, собственные фреймворки, любимые библиотеки с открытым кодом и инструменты — структурированные паттерны пригодятся везде. А лучшие паттерны можно импортировать и экспортировать, чтобы ими могли пользоваться коллеги, а также переносить их между копиями ReSharper.
ReSharper позволяет просматривать иерархию наследования определенного типа в отдельном окне. В этом окне отображаются базовые и производные типы для выбранного типа, а перейти к любому из них можно одним щелчком. Для любого узла в иерархии можно просматривать все члены или только полиморфные члены на отдельной панели предпросмотра.
Чтобы открыть окно Type Hierarchy для типа, необходимо разместить курсор на имени этого типа и нажать Ctrl+Alt+H или вызвать команду меню ReSharper | View | Type Hierarchy.
Это простая, но очень полезная функция: вы можете установить пронумерованный маркер одним шорткатом и вернуться к этому месту в любой момент с помощью другого сочетания клавиш. Вы можете создать до 10 пронумерованных закладок и неограниченное количество ненумерованных. Для быстроты навигации все места, в которых есть закладки, отображаются в одном всплывающем окне.
При нажатии Ctrl+, открывается всплывающее окно со списком недавно открытых файлов, из которого вы можете перейти к любому из них.
Команда Recent Edits работает аналогично команде Recent Files и открывает всплывающее окно со списком файлов и символов, которые недавно были изменены. Если текущая сессия редактирования началась уже давно, для уменьшения количества позиций в списке можно ввести имя файла, который требуется переоткрыть.
Вы также можете использовать команду перехода к последнему месту редактирования (Ctrl+Shift+Backspace), чтобы быстро переместить курсор к месту самого последнего изменения кода, без открытия всплывающего окна. Последующие нажатия этого сочетания клавиш приведут вас к более ранним изменениям.
To-do Explorer помогает следить за своими напоминаниями, отмеченными тегами todo
, note
или bug
, а также места в коде, где генерируются исключения NotImplementedException
. To-do Explorer собирает все подобные места из всех файлов в решении и отображает их в едином окне инструмента.
Если для заметок в комментариях используются собственные маркеры, можно настроить пользовательский шаблон, чтобы To-do Explorer находил и их.
В окне Process Explorer отображаются все процессы, выполняемые в текущий момент: можно исследовать их модули и декомпилировать те из них, которые представляют собой сборки .NET.
В этом окне можно скрыть или показать нативные процессы и модули, а также включить иерархическое представление процессов.
Список можно отфильтровать, чтобы найти нужный модуль или процесс, а затем добавить соответствующие сборки в Assembly Explorer для более подробного изучения.
Все сочетания клавиш, приведенные на этой странице, соответствуют набору сочетаний «Visual Studio», использующемуся в ReSharper по умолчанию. Подробнее о двух наборах сочетаний клавиш, доступных в ReSharper, вы можете узнать в его документации.