2009-06-07 17 views

Odpowiedz

3

Z menu skryptu XCode „Edycja Skrypty użytkownika” wprowadź następujący skrypt:

#!/bin/bash 
result=$(osascript << END 
tell application "Xcode" 
tell active project document 
    set projectPath to path as string 
end tell 
end tell 
return projectPath 
END 
) 

cd "$result" 

/Developer/clangchecker/scan-build -k -V xcodebuild -configuration Debug -sdk iphonesimulator3.0 

Oczywiście, trzeba będzie ustawić ścieżkę do zainstalowania z Clang i dostosować się do wersji z SDK, którego używasz.

Pamiętaj, aby wykonać "Wyczyść wszystko" bezpośrednio przed użyciem funkcji scan-build lub wyniki mogą być niekompletne.

+0

Za każdym razem, gdy uruchamiam ten skrypt, muszę ponownie uruchomić Xcode, aby uruchomić go ponownie. Czemu? Czy istnieje sposób na uruchomienie skryptu dwukrotnie bez ponownego uruchamiania? To nie pozwoli mi ponownie zadzwonić! –

+2

Hmmm .... Nigdy nie miałem tego problemu ... JEDNAKĄ: Ta funkcja jest wbudowana w XCode 3.2, po prostu zaktualizowałbym i całkowicie zapomniałbym tego skryptu. – mmc

0

Wierzę, że zmienna środowiskowa $ {PROJECT_DIR} jest tym, czego potrzebujesz dla katalogu projektu wykonującego skrypt w fazie instalacji.

+0

$ {PROJECT_DIR} będzie działał w skrypcie fazy kompilacji, tak, ale nie w skrypcie użytkownika, który można wyzwolić z menu skryptu. – mmc

+0

Tak, twoje pytanie było bardzo jasne. Przepraszam. Nadal możesz stworzyć cel klang w swoim projekcie (zazwyczaj to robię). Nie tak czysty, jak skrypt menu (i oczywiście musisz go utworzyć w każdym projekcie), ale działa dobrze. –

+0

Ah ha! Nie myślałem nawet o ustaleniu oddzielnego celu. Mnóstwo różnych sposobów podejścia do tego, jak sądzę. – mmc

1

FYI, Xcode 3.2 (tylko Snow Leopard, jak sądzę) zawiera analizator statyczny Clang w opcji menu "Build and Analyse".

http://iosdevelopertips.com/xcode/static-code-analysis-clang-and-xcode-3-2.html

Jednym minusem z Xcode 3.2 (pomijając to tylko działa na Snow Leopard) jest to, że symulatory 2.x nie wydają się działać - w rzeczywistości, widziałem posty wskazując, że v2. x kompilacje nie są w ogóle obsługiwane.