Code Lens und Peek Definitions in Visual Studio 2013

In Visual Studio 2013 gibt es einige Neuerungen im Code Editor. Zwei Features die mir dabei besonders gut gefallen sind Code Lens und Peek Definitions. Diese will ich hier kurz näher beschreiben.

Code Lens

Code Lens fällt einem Sofort auf, wenn man die erste Solution in VS 2013 öffnet. Über einer Klassen- oder Methodendefinition steht in einem hellen Grau die Anzahl der Referenzen. Wenn man dann für die Methode noch ein paar Tests geschrieben hat, werden neben den Referenzen noch die Testergebnisse für die Methode angezeigt.

image

Man kann mit der Maus auf die einzelnen Indikatoren klicken um sie zu öffnen. Mann kann aber auch die ALT-Taste gedrückt halten und bekommt Zahlen angezeigt, mit denen man direkt einen Indikator öffnen kann. Bei gedrückter ALT-Taste kann man auch mit den Pfeiltasten zwischen den Indikatoren wechseln (Pfeil rechts und links).

image

Öffnet man den Indikator für Referenzen, so erhält man eine Liste mit allen Methoden, die die aktuelle Methode aufrufen. Mit einem Mouseover erhält man eine Preview des Codes. Über einen Doppelklick kann man direkt zum Code springen (mit dem Zurück-Button kann man wieder zurück navigieren).

Außerdem kann man sich mit dem Link “Show on Code Map” das Ganze noch grafisch als Code Map anzeigen lassen.

image

Der Indikator für Test öffnet eine Liste mit allen Tests, die diese Methode Testen. Über einen Doppelklick kann man zur Testdefinition springen. Man kann Tests einzeln oder alle zusammen direkt von hier aus ausführen.

image

An dieser Stelle war bei mir leider immer Schluss, obwohl ich aus der Dokumentation (und den Einstellungen) wusste, dass es noch viele weitere Indikatoren gibt. Es scheint, dass Code Lens noch nicht vollumfänglich mit TFSOnline funktioniert. Ich habe dazu bereits einen Bug erstellt.

Damit Code Lens funktioniert muss auf dem TFS Server (natürlich 2013) die Code-Indizierung aktiviert sein. Außerdem ist es nur mit der Ultimate Lizenz verfügbar. In Visual Studio kann auch noch konfiguriert werden, welche Indikatoren angezeigt werden sollen – standardmäßig sind aber alle aktiviert.

Leider habe ich gerade keine andere Umgebung mit TFS 2013 zur Verfügung. Deshalb muss ich für die anderen Indikatoren vorläufig auf die Dokumentation in MSDN verweisen.

Es gibt noch Indikatoren für Code-History (Changes), Bugs, Workitems und Code-Reviews.

image

Ich werde diesen Teil nachpflegen, sobald ich wieder eine lauffähige TFS 2013 Installation habe.

Eine schöne Einführung gibt auch das Video auf Channel 9.

Peek Definition

Die meiste Arbeitszeit verbringt ein ein Entwickler mit der Navigation durch bestehenden Code. Tools wie “Goto Definition (F12)” helfen bei der Navigation zu Definitionen. Allerdings immer mit dem Resultat, dass man sehr viele offene Fenster in VS hat und sich erst mal im Dschungel der Fenster zurechtfinden muss. Ein Feature aus 2010, das hier Abhilfe Leisten sollte war das Preview Fenster. VS 2013 geht jetzt noch einen Schritt weiter.

Peek Definition kann aus dem Kontextmenü oder über ALT+F12 aufgerufen werden.

Unbenannt

Darauf öffnet sich die Definition in einem “Frame” innerhalb des aktuellen Fensters. Die Definition kann hier auch direkt editiert werden. Möchte man das “Frame” als Fenster öffnen, dann kann man das über ein kleines Icon (Promote to window) im Tab direkt neben dem Kreutz (Close) tun.

image

Öffnet man innerhalb des Frames eine neue “Peek Definition”, dann erhält man über dem Fenster eine schöne Breadcrump, über die man schnell und einfach zwischen allen geöffneten Definitionen navigieren kann – und alles ohne die aktuelle Seite zu verlassen!

image

Fazit

Ich denke die Arbeit wird sich in VS 2013 wieder deutlich vereinfachen, sobald man sich an die neuen Features gewöhnt hat. Wie man einmal ohne “Refactoring” oder “Goto Definition” arbeiten konnte kann man sich heute kaum noch vorstellen. Ich denke die Peek Definitions und Code Lens gehört zur selben Kategorie – in ein paar Jahren können wir uns nicht mehr Vorstellen ohne diese zu entwickeln.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s