Für was ist LLVM/Clang gedacht?
Es ist ein kleines Kommandozeilen-Tool zum aufspüren von Memory Leaks und anderen Problemen im Sourcecode. Dies kann und sollte auch mit dem Apple Tool Instruments durchgeführt werden.Der Unterschied ist, dass Instruments zur Laufzeit der App nach Memory Leaks sucht und LLVM/Clang den Sourcecode analysiert und wesentlich mehr Probleme findet.
Vorbereitung
Zuerst steht der Download von LLVM/Clang an: http://clang.llvm.org/StaticAnalysis.htmlZu dem Zeitpunkt (16.05.2009) als ich diesen Artikel schrieb war das Paket „checker-0.208.tar.bz2“ (vom 15.05.2009) das Aktuellste.

Installation
Den Download entpacken und irgendwo auf der Festplatte ablegen. Ich habe es an folgender Stelle abgelegt:/Users/of/Documents/develMac/checker-0.208Damit ich das Kommandozeilen-Tool direkt aus dem Terminal aufrufen kann, habe ich noch den
$PATH meiner Shell erweitert. Dazu habe ich am Ende meiner /Users/of/.profile Datei die folgende Zeile eingefügt:export PATH=$PATH:/Users/of/Documents/develMac/checker-0.208Verwendung / Aufruf
Ihr öffnet das Terminal und wechselt in das Verzeichnis eures iPhone Projektes (dort liegt die *.xcodeproj):of@/Users/of> cd Documents/devel_iPhone/HappyDayz\!/Als nächstes ist das existierende build-Verzeichnis zu löschen (siehe weiter unten unter Probleme):
of@/Users/of/Documents/devel_iPhone/HappyDayz!> rm -rf buildUnd nun kann LLVM/Clang gestartet werden:
of@/Users/of/Documents/devel_iPhone/HappyDayz!> scan-build -k -V xcodebuild -configuration Debug -sdk iphonesimulator2.2Nachdem alles kompiliert und analysiert wurde startet LLVM/Clang seinen eingebauten Webserver und öffnet automatisch das Ergebnis in eurem Webbrowser.
Ergebnisse
Das waren die überraschenden Ergebnisse von HappyDayz! nach dem ersten Lauf. Über den Link „View Report“ werden die problematischen Sourcecode Stellen sehr schön angezeigt.
Nun geht es zur Überprüfung des Sourcecodes ...
Probleme
Bei den ersten Versuchen den LLVM/Clang zum Laufen zu bekommen, bekam ich immer folgende Meldung:scan-build: Removing directory '/var/folders/T9/T9rv95xeEfec69DKrp2t+U+++TI/-Tmp-/scan-build-2009-05-16-5' because it contains no reports.Das konnte ich beheben indem ich einfach das komplette build-Verzeichnis in meinem Projektordner gelöscht habe:
rm -rf build