Ich habe vor kurzem geerbt C# -Konsolenanwendung, die einige Beschneidung benötigt und bereinigen. Kurz gesagt, die App besteht aus einer einzigen Klasse mit über 110.000 Codezeilen. Yup, über 110.000 Zeilen in einer einzigen Klasse. Und natürlich ist die App der Kern unseres Geschäfts und läuft rund um die Uhr, um Daten zu aktualisieren, die auf einer dynamischen Website verwendet werden. Obwohl mir gesagt wurde, dass mein Vorgänger "ein wirklich guter Programmierer" war, lag es auf der Hand, dass er OOP (oder Versionskontrolle) überhaupt nicht kannte.Wie programmgesteuert identifizieren Sie die Anzahl der Verweise auf eine Methode mit C#
Wie auch immer ... während ich mich mit dem Code vertraut mache, habe ich viele Methoden gefunden, die deklariert, aber nie referenziert werden. Es sieht so aus, als ob copy/paste verwendet wurde, um den Code zu versionieren, zum Beispiel habe ich eine Methode namens getSomethingImportant(), wahrscheinlich gibt es eine andere Methode namens getSomethingImmortant_July2007() (das Muster ist in den meisten Fällen funktionsName_ [datestamp]). Es sieht so aus, als wenn der Programmierer aufgefordert wurde, eine Änderung an getSomethingImportant() vorzunehmen, dann copy/paste, dann getSomethingImmortant_Date, Änderungen an getSomethingImortant_Date, dann alle Methodenaufrufe im Code auf den neuen Methodennamen ändern und die alte Methode beibehalten der Code, aber nie referenziert.
Ich möchte eine einfache Konsolen-App schreiben, die durch die eine riesige Klasse kriecht und eine Liste aller Methoden mit der Häufigkeit zurückgibt, mit der auf jede Methode verwiesen wurde. Nach meinen Schätzungen gibt es weit über 1000 Methoden, also würde es eine Weile dauern, dies manuell zu tun.
Gibt es Klassen innerhalb des .NET-Frameworks, die ich verwenden kann, um diesen Code zu untersuchen? Oder andere nützliche Tools, mit denen Sie Methoden identifizieren können, die deklariert, aber nie referenziert werden?
(Seitliche Frage: Hat jemand sonst jemals eine C# App wie diese gesehen, eine reeeealy große Klasse? Es ist mehr oder weniger ein riesiger prozeduraler Prozess, ich weiß, das ist das erste was ich gesehen habe, zumindest in dieser Größe.)
Ihr Vorschlag zu streichen, da ich durch den Code mein erster Gedanke war zu. Ich werde diese Methode plus NDepend verwenden, wie andere vorgeschlagen haben, um weitere Analysen durchzuführen. – Duffy