Trace Markers
Click here to load reader
-
Upload
andreaskleffel -
Category
Technology
-
view
90 -
download
1
description
Transcript of Trace Markers
Trace Markers Softwarespezifikation
- 1 -
TraceMarkers 19.1.2013, Andreas Kleffel
Bearbeitet 6.4. 2013
Trace Markers ist eine API, die es erlaubt .NET Assemblies auf Marker-Attribute
zu scannen. Marker-Attribute sind solche Attribute, die Metadaten in den Source
Code einweben und in der Regel zur Ausführung des Programms nicht nötig
sind. Beispiele für solche Metadaten wären:
� Konzeptionelle Funktionen
� Features
� Akteure
� Aspekte
� Bugfixes
� Workarounds
� Sicherheitsrelevanter Code
� …
Ein Marker-Attribut sollte dabei folgende Struktur aufweisen:
� Einen eindeutigen, kollisionsfreien Namen, auch ohne Namespace
� Einen Konstruktor, der das Attribut als Konstante einfügt
Ein Beispiel für ein gültiges Marker-Attribut wäre:
Ein Beispiel für das Einweben der Metadaten wäre dann:
Trace Markers Softwarespezifikation
- 2 -
Trace Markers wurde für das Tracing von Spezifikations-Funktionen im Source
Code konzipiert – sprich: System Composer (bei der Entwicklung noch
„DonkeySpecs“ genannt). Es ist jedoch eine eigenständige Komponente, die
nicht von System Composer abhängt.
Als Ergebnis eines Tracings/einer Analyse werden Klassen, Methoden /
Funktionen Markern zugewiesen. Das Marker-Objekt beinhaltet lediglich eine ID
(extrahiert aus dem Konstruktor oder einem Property des Marker-Attributes) und
ist somit für beliebige Marker einsetzbar:
Das eigentliche Tracing kann auf zwei Arten passieren:
� Via Reflection
� Via PDB (mit Hilfe der CCI, Common Compiler Infrastructure)
Trace Markers Softwarespezifikation
- 3 -
Die Analyse der Attribute via Reflection ist die erste nahe liegende Variante, die
mit .NET-Boardmitteln durchgeführt werden kann. Leider können damit nicht
die Quelldateien der Klassen ermittelt werden, weshalb eine zweite Strategie
die PDB-Dateien der untersuchenden Assembly mit einbezieht. Dazu wird das
Microsoft-Projekt Common Compiler Infrastructure: Metadata API1 verwendet.
Die PDB-Strategie ist prinzipiell langsamer, weshalb die Reflection-Strategie
weiterhin angeboten wird. Man kann auswählen, ob man den schnelleren und
oder detailierteren Analyzer benötigt.
Diese Analyzer-Klassen können per API direkt verwendet werden. Jedoch bietet
Trace Markers die Möglichkeit den Aufruf in einem separaten Workerprozess zu
bearbeiten, dadurch ist die Analyse vollständig vom Caller isoliert und ggf.
geladene Typen werden nach der Analyse wieder entladen.
Ablauf:
1 http://ccimetadata.codeplex.com/
Trace Markers Softwarespezifikation
- 4 -
Was kompliziert aussieht ist lediglich ein Methodenaufruf:
var result = IsolatedAnalysis.Run(runnerPath, link, AnalysisStrategy.CCI);
Zusammenfassung
Akteure Anderes Programm, z.B. DonkeySpecs
Features Analysieren von .NET-Assemblies auf Marker-Attribute in Klassen
und Methoden
Separater EXE-Runner zur isolierten Ausführung der Analyse
Einbeziehung von PDBs zur Zuordnung Source Location (File,
Line Number)
XML-API via Console.Out leicht abzufragen
(evtl. Caching von Analyse-Ergebnisssen)
Funktionen Isolated Tracing
Simple Tracing
Reflection-basiertes Tracing
PE/PDB-basiertes Tracing