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:
- Configuration (linke Bildschirmseite): Hier wird über zwei Reiter mit den Bezeichnungen Target und Rules festgelegt, welche Assemblies analysiert werden sollen und welche Regeln dabei als Grundlage dienen. FxCop bezeichnet die zu analysierenden Assemblies, Ressourcen, Namespaces oder Typen als Target. Die Rules werden dann auf das Target angewendet.
- Message (rechte Bildschirmseite): Die Ergebnisse der Analyse - die über die Analyze-Schaltfläche in der Symbolleiste gestartet wird - stehen im Message-Feld. Bei den Meldungen handelt es sich im Grunde genommen um eine Liste aus Verbesserungsvorschlägen, die FxCop für den Code beziehungsweise die Assembly empfiehlt.
- Properties (unterer Bildschirmteil): In diesem Feld gibt es einen Reiter namens Output und einen mit der Bezeichnung Properties. Unter Output werden - ausgehend von den Regeln - Informationen, Warnungen und Fehlermeldungen angezeigt. Unter Properties findet man Informationen über die ausgewählte Assembly, Namespace, Typ, Typ-Mitglied, Regelgruppe, Regel oder Meldung.
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:
- Level: FxCop beurteilt jeden Punkt nach seiner Wichtigkeit. Folgende Stufen existieren: Critical Error, Error, Critical Warning, Warning und Informational. Die Stufe Critical Error ist die schärfste. Critical Error bedeutet, dass der Code in den meisten Fällen nicht richtig funktioniert. Bei der Stufe Informational gibt es dagegen kaum Anlass zur Sorge. Hier werden einem lediglich einige Informationen zum Code angezeigt.
- Fix Category: Für jede Meldung wählt FxCop eine Fix Category. Diese kann beispielsweise den Wert Breaking - das heißt, der Code wird beschädigt und es geschieht nicht das, was geschehen sollte - oder Not Breaking annehmen.
- Certainty: Diese Angabe in Prozenten indiziert, wie sicher sich FxCop ist, dass es sich bei dem gefundenen Fehler um ein Problem handelt. Das heißt: Einige Meldungen stellen sich nach der Überprüfung und Analyse des fraglichen Codes womöglich als unproblematisch heraus. Deshalb zeigt der Prozentwert an, wie groß die Wahrscheinlichkeit ist, dass es sich um ein wirkliches Problem handelt.
- Rule: der Name der Regel, die für die Meldung verantwortlich ist.
- Item: das Zielelement, das die Meldung verursacht.
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:/
[2] = http:/
[3] = http:/
[4] = http:/