.NET: Programmierfehler bequem mit FxCop analysieren

(http://www.zdnet.de/magazin/39201878/net-programmierfehler-bequem-mit-fxcop-analysieren.htm)

von Tony Patton, 10. Februar 2009

Auch hervorragenden Programmierern unterlaufen von Zeit zu Zeit Fehler. Diese aufzuspüren und zu beheben gehört zu den wichtigsten Aspekten ihres Jobs. Microsofts .NET-Framework stellt dafür das Analyse-Tool FxCop zur Verfügung.

FxCop ist ein Analysewerkzeug für .NET, das gemanagte Code-Assemblies auf Verstöße gegen die Entwurfsrichtlinien des Microsoft-.NET-Frameworks[1] überprüft. Es verwendet eine regelbasierte Engine, um den Code mit den Richtlinien zu vergleichen. Außerdem gibt es die Möglichkeit, die Engine mit eigenen Regeln zu erweitern. Microsoft stellt dieses Tool kostenlos zur Verfügung.

Die aktuelle Version[2] von FxCop arbeitet mit .NET 2.0. Sie nutzt eine als Introspektion bezeichnete Technik, um einen Blick in die Assemblies zu werfen. Die Vorgängerversionen arbeiteten mit der sogenannten Reflexion. Das ist nicht unwichtig. Denn während die älteren Versionen immer zum Abbruch und Neustart aufforderten, sobald etwas am Code verändert wurde, ist dies nun nicht mehr nötig.

Die meisten Code-Analysetools lesen den Quellcode. FxCop analysiert hingegen den kompilierten Code. Jede Assembly in .NET enthält Metadaten, die die Assembly selbst und sämtliche verwendeten Typen beschreiben. FxCop verwendet exakt diese Metadaten, um herauszufinden, was im Code passiert. Außerdem überprüft das Tool auch die Microsoft Intermediate Language[3] (MSIL), die beim Kompilieren von Code erstellt wird.

Da FxCop also sowohl die Metadaten als auch MSIL analysiert, verfügt das Instrument über einige Informationen, anhand derer nachvollzogen werden kann, was genau der Code macht. Der Code wird mit den Entwurfsrichtlinien verglichen. Daraufhin erstellt FxCop für jede Instanz mit fehlerhaftem Code eine Meldung. Sobald FxCop heruntergeladen und installiert ist, kann man damit arbeiten. FxCop verwendet eine einfache Windows-Schnittstelle, die beim ersten Öffnen folgende drei Felder umfasst:

Das Message-Feld ist der wichtigste Teil der FxCop-Schnittstelle. Denn hier wird mitgeteilt, an welcher Stelle Verbesserungen notwendig sind. Und schließlich ist das der Hauptgrund, warum man FxCop verwendet.

Die vom FxCop-Tool erzeugten Meldungen umfassen die folgenden fünf Bereiche, die hinzugefügt oder auch entfernt werden können:

Durch einen Doppelklick wird die komplette Meldung mit ausführlichen Informationen angezeigt. Dazu zählen: Details zur Regel, gegen die verstoßen wird, die spezifische Codezeile, die gegen die Regel verstößt, sowie ein Link ins Internet für mehr Informationen zu dieser Regel und noch einiges mehr. Angenommen, eine einfache Windows-Anwendung in C# erstellt ein Array und zeigt dessen Inhalte an. Der nachstehende Code demonstriert, wie FxCop die Anwendung analysiert.

Der folgende Codeschnipsel zeigt eine der Meldungen, die beim Laden der Assembly in FxCop generiert werden:

Eine rasche Überprüfung der als "Critical" eingestuften Meldung zeigt, dass dieser Punkt für die Ausführung des Codes nicht von Bedeutung ist. Hier geht es um die Bereitstellung der Anwendung für Benutzer. Microsoft rät übrigens, der Assembly einen "Strong Name" zu geben und sie zu signieren.

Das Beispiel ist denkbar einfach. Aber am besten machen sich Interessierte mit FxCop vertraut, indem sie das Tool herunterladen und einfach einmal ausprobieren. Ein weiterer Pluspunkt von FxCop ist die Möglichkeit, Meldungen als Bericht im XML-Format zu speichern.

Arbeiten Sie mit FxCop oder einem vergleichbaren Tool, um Ihren .NET-Code zu analysieren? Teilen Sie doch im Forum[4] mit, welches Codeanalysetool Sie bevorzugt verwenden.

URLs in diesem Artikel:
[1] = http://msdn.microsoft.com/en-us/library/czefa0ke.aspx
[2] = http://www.microsoft.com/downloads/details.aspx?FamilyID=9aeaa970-f281-4fb0-aba1-d59d7ed09772&DisplayLang=en
[3] = http://articles.techrepublic.com.com/5100-10878_11-1027687.html
[4] = http://cgi.zdnet.de/forum/viewforum.php?f=1&c=2