Using Resharper's structural search and replace to find usages.

Resharper structural search and replace Part I - Searching

There isn't much documentation on Resharper's Structural Search and Replace (SSR) so here is 2 such ways you might find it useful.

Consider the case where you want to find all the usages of the Text property on a Windows Form:


If you use Find Usages (Shift F12) you get all usages of any inheritor of System.Windows.Forms.Control which isn't what we want in this case.


Enter Resharpers 'Search with pattern' (Alt-R,F,R)


which returns the following usages only:


I can hear the guys up the back:

you can already do that with Resharper's Advanced Find Usages (Ctrl+Shift+Alt+F12)

but this only works in this instance because Text is overridden by System.Windows.Form. Consider a property of Form that isn't overridden (eg form.Font) - your only option here is to use SSR.

Other applications

You are searching for places where an Address is added to a List<Address>

namespace ExampleApp
    public class Address


    public class Program
        private static void SomeMethod()
            var strings = new List<string>();
            strings.Add("test3");//not these usages

            var addresses = new List<Address>();
            addresses.Add(new Address());//this usage only

Find Usages will return all usages of List<T>.Add (which likely is very high in a real application)

Search with pattern to the rescue again!


This returns only the one usage above instead of 4 usages using F12.

Important! Make sure when specifying the type of $list$ that you specify the fully qualified class name eg List<ExampleApp.Person> - on that note it appears Resharper is showing the < and > characters as their escaped versions in the UI which is a display-only thing.

Part II will cover an example of finding usages and replacing them with a predefined template.

Posted by: Wallace Turner
Last revised: 13 Apr, 2013 01:58 AM History


No comments yet. Be the first!

No new comments are allowed on this post.