Trace Markers Softwarespezifikation

TraceMarkers
19.1.2013, Andreas Kleffel
Bearbeitet 6.4. 2013

Trace Markers ist eine ...
Trace Markers Softwarespezifikation

Trace Markers wurde für das Tracing von Spezifikations-Funktionen im Source
Code konz...
Trace Markers Softwarespezifikation

Die Analyse der Attribute via Reflection ist die erste nahe liegende Variante, die
mi...
Trace Markers Softwarespezifikation

Was kompliziert aussieht ist lediglich ein Methodenaufruf:
var result = IsolatedAnaly...
Nächste SlideShare
Wird geladen in …5
×

Trace Markers

253 Aufrufe

Veröffentlicht am

Softwarespezifikation für ein Analyseprogramm für Marker-Attribute

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
253
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
5
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Trace Markers

  1. 1. Trace Markers Softwarespezifikation 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: -1-
  2. 2. Trace Markers Softwarespezifikation 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) -2-
  3. 3. Trace Markers Softwarespezifikation 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 API verwendet. 1 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/ -3-
  4. 4. Trace Markers Softwarespezifikation 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 -4-

×