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

Resharper structural search and replace Part I - Searching

You are looking at revision 10 of this page, which may be out of date. View the latest version.  

There isn't much documentation on Resharper's Structural Search and Replace (SSR)

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

form_usages.png

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.

usages1.png

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

structural<em>search</em>and_replace2.png

which returns the following usages only:

usages2.png

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>

public class Address
{

}

static void SomeMethod()
{
    var strings = new List<string>();
    strings.Add("test1");
    strings.Add("test2");//we dont want these usages.
    strings.Add("test3"); 

    var addresses = new List<Address>();
    addresses.Add(new Address());//we want 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!

structural<em>search</em>and_replace3.png

This returns only the one usage above instead of 4 usages using F12. note, Resharper is showing the < as < in the UI but everything still works.

Posted by: Wallace Turner
Last revised: 13 Apr, 2013 01:58 AM History
You are looking at revision 10 of this page, which may be out of date. View the latest version.

Comments

No comments yet. Be the first!

No new comments are allowed on this post.