Xcodeを使って開発する上で、多くの方が下記の検索機能を使ったことがあると思います
規模が小さいうちはテキスト検索だけで充分だったりしますが、大規模なプロジェクトになると検索1つするにしても意図していない検索結果が沢山出てしまったりと、痒いところに手が届かないと思ったことはないでしょうか
そこで本記事ではXcodeの検索を有効利用するために幾つか検索Tipsを紹介しようと思います
Insert Pattern
まずはInsert Pattern
検索です
検索窓の虫眼鏡マークをクリックするとInsert Pattern
という項目が表示されます
Insert Pattern
をクリックすると、どのパターンの検索をするか項目が出てきます
検索パターンの種類は上記画像の通りTab
、Line Break
、Any Characters
、Any Word Characters
、Non-ASCII Characters
、Word Break
、White Space
、Digits
、Hexadecimal Digits
、Email Address
、Web Address
、IP Address
があります
URLの定義を検索する場合を想定してURL
を選択してみます
すると検索窓にURL
という項目が追加され、実際に検索を実行してみるとURLの定義っぽいところを検索結果として表示してくれます
ソースコード上にURLを定義する時は文字列リテラルとして定義することが多いと思います
文字列リテラルのURLを検索したい場合には検索窓に表示されたURL
項目をダブルクォーテーションで囲んであげれば良いです
これで文字列リテラルとして定義されているURLの定義っぽいところを検索結果として表示してくれます
Definitions
プロトコル、クラス、メソッド、変数など定義部だけを対象として検索したい場合に有効なのがDefinitions
です
使い方はFind
のText
になっている部分をDefinitions
に変更するだけです
よく、シングルトンパターンで用いられる名前であるshared**
という名前の定義部分を検索したい場合、Text検索でshared**
を検索しても、当然ながらシングルトンを利用する側のコードやコメント部分も対象として検索するため、期待している検索結果よりも大分ノイズが入ったものになってしまいます
Definitions
を使えば定義部分だけが検索結果として表示されます
検索スコープを絞る
検索窓の下にあるIn My Scope
と記載されている部分をクリックすることで検索するスコープを設定することができます
WORKSPACE
と記載されているセクションで、どのプロジェクトのどこのフォルダ配下を検索スコープにするかなどを指定できます
SEARCH SCOPES
セクションのNew Scope..
をクリックするとスコープの条件を指定するWindowが表示されます
このWindowでは検索するファイルタイプなどを指定できます
上記の画像を見てわかるように現在ではファイルTypeにSwiftがないので、Swiftファイルを検索スコープにしたい場合は、Type
ではなく、Path Extension
でswift
を指定することで実現可能です
Call Hierarchy
あるメソッドや変数がどこから呼ばれているかなど知りたい場合に使えます
使い方はDefinitions
と同じく、Find
のデフォルトでText
になっている部分をCall Hierarchy
を指定するだけです
下記はgetExampleUserResultSet
というメソッドを呼び出している箇所が検索結果として表示されています
また、Hierarchy
は検索からだけでなく、実際のコードファイルで検索対象にしたいメソッドを選択して、右クリックしてFind Call Hierarchy
から同じことができます
コードから選択することでクラス名
.メソッド名
が検索対象になるのでより詳細です
ファイル検索
Command + Shift + O
のショートカットで検索窓が表示されます
ここでプロジェクトからファイルやシンボル名でインクリメンタル検索し,マッチしたものを即座に開くことができます
Command + Shift + J
のショートカットで、現在Xcode上で開いているファイルをプロジェクトナビゲーターで選択した状態にできます