Um die Antwort des Stusmith abzuschließen, scheint NDepend das zu sein, wonach Sie suchen. NDepend ermöglicht das Schreiben von Code-Abfragen und -Regeln über LINQ-Abfragen, (was wir CQLinq nennen). Disclaimer: Ich bin einer der Entwickler des Werkzeugs
Zum Beispiel sind hier einige CQLinq Anfragen:
-> Klassen Liste, deren Namen mit x beginnen
from t in Application.Types.WithNameLike("^x")
where t.IsClass select t
-> Liste alle Subklassen von x
from t in Application.Types
where t.DeriveFrom("MyNamespace.MyTypeX")
select t
-> Liste Methoden, die ein Objekt der Klasse instanziiert x
from m in Application.Methods
where m.CreateA("MyNamespace.MyTypeX")
select m
-> Liste Methoden Aufruf der Methode y - ...
Mehr als 200 code rules werden standardmäßig vorgeschlagen. Das Anpassen vorhandener Regeln oder das Erstellen eigener Regeln ist dank der bekannten C# LINQ-Syntax problemlos möglich.
CQLinq Abfragen können live in Visual Studio bearbeitet werden und bieten sofortiges Ergebnis, mit Surfen Ausstattung:
Eigentlich ist CQLinq basierend auf NDepend.API und insbesondere auf Typen im Namensraum NDepend.CodeModel. Mit NDepend.API können Sie Programme schreiben, die die CQLinq-Abfragen komplizierter machen, zum Beispiel haben wir eine Code Duplicate Finder tool mit NDepend.API geschrieben.
Regeln können verifiziert werden live in Visual Studio und zur Build-Prozesszeit, in einem generated HTML+javascript report.
Es sei denn, @monkeyget schaut sich den Quellcode an. Dann werden sie wahrscheinlich einen Parser wollen. – kenny
Oder ein Compiler :). Ja, ich habe verpasst, dass er "Quellcode" gesagt hat. Ich denke, NDepend und einige der IDE-Plugins könnten dann hilfreich sein. Es tut uns leid! – MichaelGG
System.Reflection ist in der Tat eine Option, die ich untersuchen werde, aber es scheint begrenzt und ich bin mir sicher, dass es leistungsfähigere und einfachere Werkzeuge für das, was ich tun möchte, gibt. Ich erwähnte den Quellcode in der Frage, aber ein Werkzeug, das an IL arbeitet, wäre auch in Ordnung. – Monkeyget