Donnerstag, 24. Mai 2012


Artikel

April 2010 | Artikel

Neuigkeiten zum ReSharper 5 Fortsetzung, Teil 2

Teil 1   Teil 2   Teil 3   Teil 4   

Dynamischer Code

Dynamischer Code stellt den ReSharper vor eine neue Herausforderung. Lässt sich bei statischer Typisierung noch das meiste berechnen beginnt bei dynamic die Raterei.

Ein wenig Raten kann der ReSharper bereits:

Wird eine Eigenschaft oder Methode einmal benutzt, nimmt sie der ReSharper in die Vorschlagliste mit auf:

Sobald es jedoch etwas komplizierter wird, gibt er auf:

Nicht das JetBrains zu wenig Erfahrung mit dynamischen Typsystemen und der damit verbundenen Raterei hätte. Sowohl RubyMine als auch PhpStorm, beides JetBrains-Produkte, tun darin einen guten Job. Es bleibt also zu hoffen, dass dieses Wissen auf den ReSharper in zukünftigen Versionen übertragen wird.

Wird in C# 3.0 von einem IEnumerable auf IEnumerable ein explizites Cast() benötigt, erkennt ReSharper, dass dies in C# 4 durch die Unterstützung von Varianzen in generischen Interfaces überflüssig wird.

Codeanalyse

Zwei neue Features steuert der ReSharper 5.0 für die Analyse von Quellcode bei. Aufrufverfolgung (Call-tracking) und Wertverfolgung (Value-tracking).

Für den Beispiel-Code in Listing 1 lassen sich eine Reihe von Reports ableiten:

Im Kontext-Menu von Methode2 ist über Inspect > Incoming calls einzusehen welche Aufrufpfade diese Methode erreichen.

Inspect > Value origin auf den Parameter meinWert zeigt woher und über welchen Weg Werte ankommen.

Zu diesen beiden Auswertungen gibt es ebenfalls die Pendants Outgoing calls und Value destination.

Teil 1   Teil 2   Teil 3   Teil 4   

Kommentare