...someplace, where there isn't any trouble? Do you suppose there is such a place, Toto?

PREfast für ganz, ganz Arme

Vor ziemlich genau zwei Jahren habe ich hier beschrieben, wie man sich PREfast zu VS2005 Professional ergänzen kann. Nochmal Zur Erinnerung: PREfast ist ein statisches Codeanalyzetool, das seit VS2005 bei den etwas teureren Ausgaben mitshippt. Bei der Professional Edition von VS2005/VS2008 ist es nicht dabei, erst in der "Team System 2008 Developer Edition" und der "Team System 2008 Team Suite" ist es enthalten. Aber man kann es mit ein paar einfachen Handgriffen nachrüsten und an dieser Stelle zeige ich nun wie das geht. Die hier beschriebene Vorgehensweise funktioniert mit der Express Edition von VS2008 und der Professional, also nehme ich mal an, sie geht auf allen anderen auch, bei denen PREfast nicht mit enthalten ist.

Am allereinfachsten geht das Nachrüsten von PREfast durch Installation des Server 2008 Windows SDKs. Die Installation des SDKs kopiert einfach die notwendigen Dateien an die richtige Stelle und schon funktioniert die Sache. Wer aber das gigantische Server 2008 SDK nicht downloaden und installieren will (VS2008 enthält das Vista SDK), weil ihm die 4 GB, die das Ding braucht zuviel sind oder eine einfachere Lösung haben will, sollte jetzt weiterlesen. Zuerst mal brauchen wir die eine cab-Datei, in der die nachzurüstenden Dateien allesamt drinstecken. Dazu laden wir die Datei vc_stdx86.cab von folgendem URL herunter: http://download.microsoft.com/download/2/3/F/23F86204-39EE-4CD7-9A51-DB19C9A8F8C4/vc_stdx86.cab. Das sind etwa 40MB und was sind schon 40 MB unter Freunden? So, die haben wir jetzt heruntergeladen und machen dann auf die Datei einen rechten Mausklick so dass das Kontextmenü erscheint, wie in nachfolgendem Screenshot:

Wir wählen den Punkt "Explore" an, woraufhin sich ein Explorerfenster mit dem Inhalt der cab-Datei öffnet wie im nächsten Screenshot:

Dort wählen wir, wie in dem Screenshot dargestellt, die Dateien FL_c1ast_dll_93380_93380_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8 und FL_c1xxast_dll_93381_93381_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8 an und wählen im Kontextmnenü nach dem rechten Mausklick den Punkt "Extract". Daraufhin wählt man ein zuvor angelegtes temporäres Verzeichnis an, wohin man die Dateien extrahiert. Dasselbe macht man nun für die Dateien FL_mspft80ui_dll_133655_133655_x86_enu.3643236F_FC70_11D3_A536_0090278A1BB8 und FL_mspft80_dll_93382_93382_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8 wie im nächsten Screenshot:

Diese Dateien extrahieren wir in dasselbe Verzeichnis wie die beiden anderen zuvor und benennen nun die Dateien um:

  • FL_c1ast_dll_93380_93380_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8 wird zu c1ast.dll
  • FL_c1xxast_dll_93381_93381_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8 wird zu c1xxast.dll
  • FL_mspft80ui_dll_133655_133655_x86_enu.3643236F_FC70_11D3_A536_0090278A1BB8 wird zu mspft80ui.dll
  • FL_mspft80_dll_93382_93382_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8 wird zu mspft80.dll

Nachdem die Dateien nun handliche Namen haben, sucht man sich nun das Bin-Verzeichnis der VC-Installation in VS2008 und kopiert da hinein die Dateien c1ast.dll, c1xxast.dll und mspft80.dll, so wie inm nächsten Screenshot:

Als nächstes legen wir, sofern noch nicht vorhanden, ein Unterverzeichnis namens "1033" in diesem Verzeichnis an und kopieren die letzte der Dateien, mspft80ui.dll, dort hinein. Bei einer deutschen VS-Installation ist ein Unterverzeichnis "1033" nicht vorhanden, stattdessen ein Verzeichnis "1031". In dem Fall muss aber trotzdem das Verzeichnis 1033 angelegt werden, die Datei darf nicht im Verzeichnis "1031" landen.

Nun ist eigentlich alles schon fertig und zum Beweis, dass PREfast jetzt tut, legen wir jetzt mal ein einfaches Projekt mit einem Fehler an, den PREfast finden kann. Ich wähle dazu eine Kommandozeilenapplikation. Um einen PREfast-Lauf beim Übersetzen zu machen, muss man in der Kommandozeile bei den C++-Settings nun händisch "/analyze" ergänzen, so wie im nächsten Screenshot:

Wenn wir nun das Projekt übersetzen, dessen Sourcecode man im nächsten Screenshot auch sieht, erhält man eine wunderbare Warnung von PREfast mit dem Codepfad, der zu dem potentiellen Fehler führt, grau hinterlegt:

War das nicht einfach?

Trackback address for this post

This is a captcha-picture. It is used to prevent mass-access by robots.
Please enter the characters from the image above. (case insensitive)

1 comment

Comment from: Dirk [Visitor]
DirkDanke für die genaue Beschreibung, funktioniert tadellos. Sogar mit Visual Studio 2005!
08/24/08 @ 18:11

Comments are closed for this post.