Poiché non esiste una variabile di script Xcode per "directory di progetto corrente", come è possibile creare una voce di menu di script per eseguire Clang Static Analyzer sul progetto corrente da Xcode?Utilizzo di Clang Static Analyzer dall'interno di XCode
risposta
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.
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.
$ {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
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. –
Ah ah! Non avevo nemmeno pensato di stabilire un obiettivo separato. Un sacco di modi diversi per avvicinarsi a questo, immagino. – mmc
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.
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! –
Hmmm .... Non ho mai avuto questo problema ... TUTTAVIA: questa funzione è incorporata in XCode 3.2, semplicemente aggiornerei e dimenticherò del tutto questo script. – mmc