Инструменты поиска Xcode

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

Горячие клавиши

Прежде всего, знакомство с поиском должно начинаться с Command + Shift + F. Открывается Find Navigator, и тогда все начинается, но печатать без каких-либо рычагов будет недостаточно, потому что требуется весь проект и просматривает его.

Затем Command + F дает вам возможность выполнить поиск в открытом в данный момент файле. Нажатие на следующий найденный код будет прыгать соответственно, пока не закончатся совпадающие коды.

Если вы пытаетесь выполнить поиск по определенному имени файла, не стесняйтесь использовать Command + Shift + O. Он откроет этот файл, а также дополнительное сочетание клавиш — Command + Shift + J. проведет вас к точному положению этого файла. Это перенесет вас прямо к его определению.

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

Область поиска

Если вы хотите сузить область, в которой может находиться искомый объект, Search Scopes — правильное решение для этого, потому что он инкапсулирует файлы или папки и дает вам возможность искать в строгих условиях, которые вам придется пометить. Нажмите кнопку «В проекте» под строкой поиска и создайте новую область.

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

Области поиска способны на гораздо большее, чем фильтрация только по именам. Он может ограничить ваши результаты поиска, отфильтровав: путь, расширение файла, тип и местоположение. Если у вас есть проект, содержащий файлы Swift и Objective-C, и вы хотите выполнять поиск только в файлах Swift, создайте Scope с фильтром, который выполняет поиск только в файлах с расширением .swift, как показано ниже:

Определения

Еще один уникальный параметр поиска, который предоставляет Xcode, — «Определения». Я часто использую его, и он стал моим основным решением для поиска определений, которые я ищу. Давайте рассмотрим этот случай, когда вы просматриваете все синглтоны, которые вы использовали в своем проекте. Если вы ищете слово «общий», вы получите все коды, содержащие это слово. Вместо этого используйте «Определения» над строкой поиска, щелкнув «Текст», затем переключитесь на «Определения». С помощью этого вы также можете искать имена классов, структур или перечислений, даже случаи перечисления и многое другое.

Иерархия вызовов

Изучение корней некоторых вызывающих методов может быть утомительным и занимать много времени, если вы шаг за шагом проходите через каждый вызывающий объект. «Иерархия вызовов» помогает разработчикам определить, как наши методы используются в нашем проекте, и информирует нас об этом, чтобы не тратить время на обработку возможных ошибок в будущем. Вы можете найти его, как «Определения» выше, а также щелкнув правой кнопкой мыши имя метода, «Найти» -> «Найти иерархию вызовов».

Узоры

Паттерны дают нам возможность найти коды или выражения данного состояния. Вы можете щелкнуть значок поиска и вставить шаблон (или просто Control + Option + Command + P), который указан ниже:

При нажатии на шаблон он вставляется в строку поиска. Например, если мы ищем в нашем проекте URL-адрес, имя которого содержит слово «url», мы можем использовать шаблоны. Это обнаружит это и даст нам список строк, содержащих URL-адреса, если они существуют. Наш поиск должен начинаться с текста «url», затем использовать «любой символ» и, наконец, сам шаблон «URL».

Следующий пример: давайте найдем какой-нибудь шаблон, который содержит строки об авторе файла. Нам нужно ввести: // -> «Разрыв строки» -> // -> «Любой символ» -> . -> «Цифры» -> . -› «Разрыв строки» -› // -› «Разрыв строки».

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

Найти и заменить

В Xcode есть функция, с помощью которой вы можете заменить текст в своем проекте в навигаторе поиска. Разработчики в основном используют его, чтобы избавиться от устаревших кодов и полностью заменить их новыми. Чтобы продемонстрировать это, я изменю некоторые методы в своем проекте. Итак, на панели нажмите «Найти» и переключитесь на «Заменить». Как только появится вторая строка поиска, все готово. Теперь я найду несколько методов, которые содержат точно такое же слово, и заменю их:

Как видите, я выбрал методы, и всего одним нажатием кнопки «Заменить» он будет изменен с setupView на setupViewController:

С помощью «Найти и заменить» вы можете пометить все переменные с неверными именами, инкапсулировать их в любой тип «Области поиска» и изменить их одним щелчком мыши. Я предполагаю, что вам никогда не придется ждать, пока ссылочные типы появятся, когда вы нажмете на переменную или метод с помощью Command + Left Click + Rename, что уже является большой проблемой в крупномасштабной кодовой базе.

Заключение

Подводя итог, можно сказать, что Xcode имеет довольно впечатляющие возможности для поиска, и с каждым годом он становится все более и более мощным. Как разработчики, мы пользуемся возможностью максимально использовать возможности поиска, отладки и написания лучшего кода.

Спасибо Гиоргию Сандрошвили за то, что он побудил меня написать мою первую статью!