31日間ReSharper一周 Day 8: 使用箇所の検索
2012-12-30 18:17:12
「31日間ReSharper一周」の8日目にようこそ。
サバイバルガイドで書いたように、ReSharperはVisual Studioの「すべての参照の検索」(Shift+F12)を独自の「使用箇所の検索」(一貫性なくAlt+F7に変えられた)に差し替える。ReSharper版とVisual Studio版がどう違うのか、詳しい情報を記す。
「get」や「set」の使用箇所をフィルタリングする
そこかしこで読み取られるけどごく一部でしか書き込まれないようなプロパティってあるよね。そしたら「すべての参照の検索」でプロパティのセッターだけ探したくならなかった?こうすればいい。
フィールドでも同じことができる。あるフィールドが読み取られているところだけ、または書き込まれているところだけを探すことができる(Reflectorにもこの機能があればいいのになあ)。
スクリーンショットを見ればわかるが、「検索結果」ウインドウのフィルタメニューには、「読み取りを表示」と「書き込みを表示」と「呼び出しを表示」と「その他を表示」(どういう意味か分からない)、そして「ドキュメント中の使用箇所を表示」(XMLドキュメントのコメントのことだろうか)という選択肢がある。「その他を表示」はメソッドを参照するデリゲートのことかとも思ったが、明らかにそれらには「読み取りを表示」が使われている。
今後のバージョンでは、プロパティ宣言中の「get」や「set」を右クリックして「使用箇所の検索」を選択すれば、状況に応じて読み取りや書き込みだけが表示されるようになるとのことだ。これは待ち遠しい。
検索結果を前後移動する
「使用箇所の検索」を実行した後でCtrl+Alt+UpとCtrl+Alt+Downを使えば、検索結果を前後移動できる。カーソルが次の検索結果のところに移動し、場合によっては別のファイルが開かれる。端まで移動した後はループしない。最後まで来たことが分かるからある意味便利だ。
「検索結果」ツリー
嫌なところはといえば、「検索結果」ウインドウ内での検索結果の見せ方がどうにも好きになれない。
Visual Studioでは、全部が一覧表示されるだけだった。
全ての項目にはファイル名と行番号(とカラム番号。気にするかっつーの。)が表示されるから、少なくとも、それぞれの参照がどのクラスにあるのかは分かる。いっぽうReSharperでは、すべてはツリー表示される。
いつも最初はツリーが折りたたまれている。だから検索結果を見るだけじゃすまなくて、最低1回は(すべてを開くために)クリックしないといけない。しかも、ツリー表示をやめて結果をそのまま表示するために、「グループで分類」の設定を「なし」に変えたとする。そしたら検索結果がどのファイルに含まれているのか知ることができなくなる。各行は一致したコード行を表示するだけで、ファイル名や行番号といった情報が表示されなくなってしまう。
(僕はデフォルトで検索結果を展開表示できるように機能改善する要求を出した。回答には、まったく同じことをたくさんの人が要求しているとあった。だからどこかのタイミングで機能改善されるかもしれない。)
とはいえ、ツリーを展開さえすれば、結果がどのクラスに含まれるかだけじゃなくて、どのメソッドにあるのかといった、VSの一覧表示では表示されない情報を見ることができる。