Ponieważ nie ma zmiennej skryptu Xcode dla "bieżącego katalogu projektu", w jaki sposób można utworzyć element menu skryptu, aby uruchomić narzędzie Static Analyzer firmy Clang na bieżącym projekcie z Xcode?Korzystanie z analizatora statycznego Clang z poziomu kodu XCode
Odpowiedz
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.
Wierzę, że zmienna środowiskowa $ {PROJECT_DIR} jest tym, czego potrzebujesz dla katalogu projektu wykonującego skrypt w fazie instalacji.
$ {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
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. –
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
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.
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ć! –
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