Refactoring ist in Entwicklungsumgebungen im Java Bereich seit vielen Jahren Standard. Mit kleinen Schritten nähert sich nun auch die .NET Welt langsam an das dort Mögliche an. Nachdem ich schon seit vielen Jahren IntelliJ IDEA verwende (seit Version 2.6 übrigens), freue ich mich natürlich, daß viele der Funktionen nun durch Resharper 4 auch für Visual Studio 2008 zur Verfügung stehen.
In der aktuellen Versionen haben nun auch die bereits aus Java bekannten Annotationen endlich Einzug gehalten. Häufig hat man jedoch das Problem, daß externe Bibliotheken nicht mit den entsprechenden Attributen entwickelt wurden. Dies trifft natürlich auch für das komplette .NET Framework zu. Dies wiegt aber nicht so schwer, da Jetbrains dies für Microsoft nachgeholt hat.
Genau diesen Mechanismus kann man sich nun zu Nutze machen, wenn man selbst die Code Analyse für Funktionen aus einer Bibliothek verwenden möchte, deren Code man nicht ändern kann. Im Verzeichnis c:\Program Files\JetBrains\ReSharper\v4.0\Bin\ExternalAnnotations\
“ legt man einfach Datei für die entsprechende DLL an. Der Name ist dabei nicht wichtig, so lange die Endung .xml
ist.
Für die DLL „ulitmate.framework.dll“, die eine Methode bereitstellt, um Zusicherungen zu überprüfen, sieht der Eintrag zum Beispiel so aus:
<assembly name="ultimate.framework">
<!– public static void Assert(bool condition) –>
<member
name="M:ultimate.framework.Diagnostics.Assert(System.Boolean)">
<attribute
ctor="M:JetBrains.Annotations.AssertionMethodAttribute.#ctor"/>
<parameter name="condition">
<attribute
ctor="M:JetBrains.Annotations.AssertionConditionAttribute.#ctor(
JetBrains.Annotations.AssertionConditionType)">
<argument>0</argument>
</attribute>
</parameter>
</member>
</assembly>
Analog funktioniert das für die anderen Attribute, die von Jetbrains bereitgestellt werden. Infos über die verfügbaren Attribute findet man in der Onlinehilfe. Außerdem kann man sich natprlich auch ganz gut an den XML Dateien für die anderen Bibliotheken orientieren.
Ach ja: Man sollte auf die genaue Signatur achten, da Fehler kommentarlos ignoriert werden. Mehrere Parameter einer Methode werden mit Komma, aber ohne Leerzeichen getrennt. Ich hoffe, ich erleichtere allen, die das nicht beachtet haben, die Suche nach dem Fehler ein wenig mit dieser Info…