title: How do you programmatically identify the number of references to a method with C#
body: <p>I've recently inherited C# console application that is in need of some pruning and clean up.  Long story short, the app consists of a single class containing over 110,000 lines of code.  Yup, over 110,000 lines in a single class.  And, of course, the app is core to our business, running 'round the clock updating data used on a dynamic website.  Although I'm told my predecessor was "a really good programmer", it obvious he was not at all into OOP (or version control).</p>
  
  <p>Anyway... while familiarizing myself with the code I've found plenty of methods that are declared, but never referenced.  It looks as if copy/paste was used to version the code, for example say I have a method called getSomethingImportant(), chances are there is another method called getSomethingImortant_July2007() (the pattern is functionName_[datestamp] in most cases).  It looks like when the programmer was asked to make a change to getSomethingImportant() he would copy/paste then rename to getSomethingImortant_Date, make changes to getSomethingImortant_Date, then change any method calls in the code to the new method name, leaving the old method in the code but never referenced.</p>
  
  <p>I'd like to write a simple console app that crawls through the one huge class and returns a list of all methods with the number of times each method was referenced.  By my estimates there are well over 1000 methods, so doing this by hand would take a while.</p>
  
  <p>Are there classes within the .NET framework that I can use to examine this code?  Or any other usefull tools that may help identify methods that are declared but never referenced?</p>
  
  <p>(Side question:  Has anyone else ever seen a C# app like this, one reeeealy big class?  It's more or less one huge procedural process, I know this is the first I've seen, at least of this size.)</p>