2009-06-07 6 views

risposta

3

dalla voce di menu sceneggiatura XCode, "Modifica script utente" inserire il seguente script:

#!/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 

Ovviamente, è necessario regolare il percorso di installazione di Clang, e regolare alla versione del SDK che stai utilizzando.

Ricordarsi di eseguire un "Pulisci tutto" immediatamente prima di utilizzare scan-build, oppure i risultati potrebbero essere incompleti.

+0

Ogni volta che eseguo questo script, devo riavviare Xcode per eseguirlo di nuovo. Perché? C'è un modo per eseguire lo script due volte senza riavviare? Non mi permetterà di chiamarlo di nuovo! –

+2

Hmmm .... Non ho mai avuto questo problema ... TUTTAVIA: questa funzione è incorporata in XCode 3.2, semplicemente aggiornerei e dimenticherò del tutto questo script. – mmc

0

Credo che la variabile di ambiente $ {PROJECT_DIR} sia ciò che si desidera per la directory del progetto che esegue uno script in fase di costruzione.

+0

$ {PROJECT_DIR} funzionerà in uno script di fase di costruzione, sì, ma non in uno script utente che può essere attivato dal menu di script. – mmc

+0

Sì, la tua domanda era molto chiara. Scusate. Potresti ancora creare un bersaglio clang nel tuo progetto (questo è quello che faccio di solito). Non è pulito come uno script di menu (e devi crearne uno in ogni progetto, ovviamente), ma funziona bene. –

+0

Ah ah! Non avevo nemmeno pensato di stabilire un obiettivo separato. Un sacco di modi diversi per avvicinarsi a questo, immagino. – mmc

1

FYI, Xcode 3.2 (solo Snow Leopard credo) include Clang Static Analyzer nell'opzione di menu "Crea e analizza".

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

Un difetto di Xcode 3.2 (a parte solo a lavorare su Snow Leopard) è che i simulatori v2.x. non sembrano funzionare - in effetti, ho visto i messaggi che indica che v2. x build non sono supportati affatto.