zurück zum Artikel

Wirbel um Visual Studio 2010: Neuerungen im Editor und Debugger

Dr. Holger Schwichtenberg

Trotz eines grafischen Designers sind und bleiben das Wichtigste in einer Entwicklungsumgebung der Editor und der Debugger. Mit Visual Studio 2010 bietet Microsoft einige nützliche Verbesserungen.

Trotz eines grafischen Designers sind und bleiben das Wichtigste in einer Entwicklungsumgebung der Editor und der Debugger. Mit Visual Studio 2010 bietet Microsoft einige nützliche Verbesserungen.

Die IntelliSense-Eingabeunterstützung ist seit Langem das wichtigste Produktivitätsfeature in Visual Studio. Eine zentrale Neuerung in Visual Studio 2010 bemerkt man bereits nach den ersten getippten Buchstaben: IntelliSense sucht nicht mehr wie bisher nur Wortanfänge, sondern führt eine Teilstringsuche aus. Gibt man "Consol.Col" ein, bietet die IDE nun die Attribute BackgroundColor und ForegroundColor sowie die Methode ResetColor an. Oder: Will der Entwickler einen Fehler auslösen und weiß, dass alle Fehlerklassen auf das Wort "Exception" enden, gibt es jetzt eine Liste aller erreichbaren Fehlerklassen. Bisher war Intellisense dabei nicht behilflich.

"Navigate To"-Fenster in Visual Studio 2010 kann der Anwender über einen Mausklick eine bestimmte Stelle anspringen (Abb. 1).

In früheren Versionen konnten Programmierer mit der Suchfunktion im Quellcode immer nur zur nächsten Fundstelle springen. Visual Studio 2010 besitzt nun ein zusätzliches Suchfenster (Navigate To), das alle Fundstellen zu einem Begriff anzeigt (siehe Abbildung 1). Mit einem Mausklick springt man die Fundstelle an.

Für die Übersichtlichkeit gibt es bei Visual Studio schon lange das Konzept der Coderegionen (engl. "regions"), die man "einklappen" kann. Bisher ging das für Namensräume, Klassen und Methoden sowie für Bereiche, die man mit "#Region...#End Region" markiert hat. Nun kann man mit der Tastenfolge Strg + m gefolgt von Strg + h eine beliebige Zeilenfolge einklappen. Aufheben lässt sich das wieder durch Strg +m[/code], gefolgt von [caps]Strg + p. Alternativ kann der Entwickler das Kontextmenü "Outlining" verwenden. Die Einklappungsinformation speichert Visual Studio in der .suo-Datei, die benutzerspezifische Konfigurationsinformationen enthält und die der Team Foundation Server im Standard nicht speichert. Daher gelten die Einklappungen nur für den einen Benutzer auf einem PC.

In Visual Studio 2010 lassen sich beliebige Befehlsfolgen einklappen (Abb. 2)

Ein wichtiges Thema bei der Überarbeitung des Editors war Test Driven Development (TDD), mit dem der Entwickler Klassen und Klassenmitglieder aufruft, die er noch gar nicht deklariert hat. Schon bei Visual Studio 2005 ließen sich Aufrufe für nicht vorhandene Methoden eingeben, und die Entwicklungsumgebung konnte dann eine passende Methode generieren ("Generate Method Stub" im Kontextmenü). Jetzt kann man auch Klassen und Attribute auf diese Weise deklarieren.

Bei Klassen besteht die Wahl, eine "Standardklasse" (private Klasse im gleichen Projekt und Projektordner wie der aktuelle Standort) zu erzeugen oder über den Dialog "Generate New Type" eine individuellere Auswahl zu treffen (Abbildung 3). Bei Attributen hat man die Wahl zwischen einem Field oder einer Property, wobei Letztere als sogenannte Automatic Property, also ohne explizites Field erzeugt wird. Dieses in C# 3.0 eingeführte prägnante Sprachkonstrukt gibt es nun ab Version 2010 auch für Visual Basic.

Erzeugen einer neuen Klasse aus ihrer Verwendung heraus (Abb. 3)

Ebenfalls zum TDD gehört die Tastenkombination Strg + Alt + Leertaste. Damit versetzt man Visual Studio in einen Modus, in dem die Entwicklungsumgebung nach dem Drücken der Leertaste nicht mehr die Eingabe zu vervollständigen versucht, sondern in Hinblick darauf, dass es gewollt ein neuer Bezeichner sein könnte, der die angefangene Zeichenkette wie eingegeben stehen lässt.

Man sieht Visual Studio 2010 kaum an, dass es nun auf der Windows Presentation Foundation (WPF) basiert. WPF ermöglicht aber, dass man die Schriftgröße mit der Strg-Taste und dem Mausrad "nahtlos" vergrößern kann. Das ist vorteilhaft für Präsentationen oder, wenn ein Kollege mal über die Schulter auf den Code schauen soll.

Eine Veränderung ist jedoch eindeutig eine Verschlimmbesserung. In den bisherigen Visual-Studio-Versionen war der "add Reference"-Dialog immer eine Produktivitätsbremse, denn sein Aufruf dauerte viele Sekunden. Nun lädt Microsoft die Inhalte der Registerkarte ".NET" asynchron. Statt eines Geduldsspiels ist die Auswahl aber ein Geschicklichkeitsspiel, denn der Dialog "verblättert" durch das asynchrone Laden die aktuelle Position immer wieder. Ein einfacher Suchdialog, wie der, der sich nun in der Auswahl der Projekt- und Projektelementvorlagen findet, wäre eine echte Hilfe gewesen. Aber Suchen kann man hier leider immer noch nicht.

Abbildung 4 zeigt zwei weitere neue Funktionen: Beim Markieren eines Bezeichners hebt Visual Studio alle weiteren Vorkommen des Bezeichners in der aktuellen Datei durch graue Hinterlegung hervor. Außerdem gibt es als Alternative zu der flachen Liste, die bisher "Find all References" produziert hat, nun eine hierarchische Ansicht ("View Call Hierarchy"), in der man sich durch den gesamten Aufrufbaum hangeln kann.

Code-Hervorhebung und Aufrufhierarchieansicht (Abb. 4)

Alternativ lässt sich mit der Funktion "Generate Sequence Diagramm" ein UML-Sequenzdiagramm (Dateityp .sequencediagram[Code]) anzeigen, dass die Funktionsweise einer Routine visualisiert (siehe Abbildung 5).

Generiertes Sequenzdiagramm in Visual Studio 2010 (Abb. 5)

Die Refactoring-Funktionen sind bei Visual Studio 2010 genauso schwach wie zuvor. Ebenso hat sich nichts daran geändert, dass sie für Visual Basic nicht zum Standardlieferumfang gehören. Zu erwarten ist aber, dass Microsoft wieder über einen Vertrag mit Developer Express einen Teil der Refactoring-Funktionen der Firma einkauft und kostenfrei an die Visual-Basic-Nutzer weitergibt. Es bleibt kurios, dass C# weiterhin bedeutend weniger von den "Snippets" genannten Codefragmenten besitzt als Visual Basic. In der Vergangenheit musste der Entwickler weitere Code-Snippets für C# einzeln herunterladen, und das gilt leider auch für die neue Version. Neu ist, dass es Code-Snippets für HTML, ASP.NET und JavaScript gibt. Die Liste der Snippets ist wie bisher erweiterbar.

Der Debugger hat einige kleine, aber feine Überarbeitungen und eine große Verbesserung erfahren. Zu den kleinen zählen die Debugger-Data-Tipps. Schon bisher konnte man während einer Debugger-Sitzung mit der Maus Variablen überfahren, um ihren aktuellen Wert anzusehen. Wenn man aber die Maus wegbewegt hat, war die Anzeige sofort verschwunden. Nun lässt sich über eine Heftnadel (siehe Abbildung 6) die Anzeige "festheften". Der Vorgang gilt nicht nur für die aktuelle Sitzung, sondern übersteht auch einen Neustart von Visual Studio. Man kann die Tipps sogar exportieren ("Menu Debug"/"Export Data Tips") und auf einem anderen System wieder importieren ("Import Data Tips"). Da man außerdem zu jedem Debugger-Data-Tipp einen Kommentar schreiben kann, eignet sich die Funktion auch dazu, Debugging-Informationen an andere Teammitglieder weiterzugeben.

Debugger-Data-Tipps (Abb. 6)

Verbesserungen der Verwaltung von Haltepunkten im Debugger (Abb. 7)


Ähnliche Funktionen gibt es für Haltepunkte (Breakpoints). Die Kommentare heißen hier "Labels". Ein Haltepunkt kann mehrere Labels besitzen. Leider hat Microsoft die neue Ex- und Importfunktion für Haltepunkte nicht bei den Funktionen für die Data Tipps angeordnet, sondern versteckt. Die Exportfunktion findet man im Kontextmenü der Haltepunktleiste links im Editor, die für den Import im Fenster "Breakpoints" hinter einem Symbol verborgen ist.

Die große neue Funktion im Debugger ist IntelliTrace. Während der Beta-Phase war ihr Name noch sprechender: Historical Debugger. IntelliTrace zeichnet während einer Debugger-Sitzung laufend Daten auf. Das sind zum einen Interaktionen mit dem System (etwa Mausklicks, Dateisystem- und Registry-Zugriffe, Starten von Threads, Datenbankzugriffe, Datenbindung, Laden von XML-Dokumenten) und zum anderen Methodenaufrufe im Programmcode. Abbildung 8 zeigt die Debugger-Situation in der Ereignisansicht (Events View).

IntelliTrace-Ansicht für Ereignisse (Events View) (Abb. 8)

Abbildung 9 in der Aufrufansicht (Call View). In beiden kann man an die einzelnen Zwischenstationen zurückspringen und dort konkrete Werte der Vergangenheit sehen. Leider bezieht sich die Werteanzeige immer nur auf Methodenparameter. Die Inhalte lokaler, statischer und der Instanzen-Variablen speichert Visual Studio nicht; wie bisher sieht man von ihnen nur den Zustand am aktuellen Haltepunkt.

IntelliTrace-Ansicht für Aufrufe (Call View) (Abb. 9)

Interessant bei IntelliTrace ist, dass sich die Daten auch außerhalb von Visual Studio mit dem Kommandozeilenwerkzeug [code]intellitrace.exe aufzeichnen lassen. Die entstandenen .tdlog-Dateien kann man dann in Visual Studio öffnen, um wieder zu der gleichen Ansicht zu kommen, die man beim Debugging in Visual Studio gehabt hätte. Einigen Entwicklern funkeln nun schon die Augen bei dem Gedanken, das Werkzeug auf Kundensystemen einzusetzen, bei denen ihre Anwendung nicht korrekt läuft. Leider gibt es die IntelliTrace-Funktion nur, wenn man in die mehr als 10.000 Euro teure Ultimate-Version investiert.

Visual Studio 2010 hat einige neue Funktionen im Editor und Debugger, die den Arbeitsalltag mit der Entwicklungsumgebung etwas schöner gestalten. Weiterhin gibt es aber viele Komfortfunktionen nur über Drittanbieterwerkzeuge wie CodeRush und ReSharper. C#-Entwickler denken da sofort daran, dass sie die schließende Klammer auch in Visual Studio 2010 noch immer selbst eingeben müssen.

Dr. Holger Schwichtenberg
unterstützt mit seiner Firma www.IT-Visions.de [1] viele Unternehmen beim Einsatz von .NET-Techniken. Er hält Vorträge auf Fachkonferenzen und ist Autor zahlreicher Fachbücher.
( [2])


URL dieses Artikels:
https://www.heise.de/-977344

Links in diesem Artikel:
[1] http://www.IT-Visions.de/
[2] mailto:hs@ix.de