views:

1929

answers:

4

Since there is no Xcode script variable for "current project directory," how can you create a script menu item to run the Clang Static Analyzer on your current project from Xcode?

+3  A: 

From the XCode script menu item, "Edit User Scripts" enter the following 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

Obviously, you will need to adjust the path to your install of Clang, and adjust to the version of the SDK you are using.

Remember to do a "Clean All" immediately before using scan-build, or the results may be incomplete.

mmc
Every time I run this script, I must restart Xcode to run it again. Why? Is there a way to run the script twice without restarting? It won't allow me to call it again!
HelloMoon
Hmmm.... I never had that problem... HOWEVER: This feature is built into XCode 3.2, I would simply upgrade, and forget this script altogether.
mmc
A: 

I believe the ${PROJECT_DIR} environment variable is what you want for the directory of the project running a build-phase script.

Barry Wark
${PROJECT_DIR} will work in a build phase script, yes, but not in a user script that can be triggered from the script menu.
mmc
Yes, your question was very clear. Sorry. You could still create a clang target in your project (this is what I usually do). Not as clean as a menu script (and you have to create one in each project, of course), but it works well.
Barry Wark
Ah ha! I had not even thought of establishing a separate target. Lots of different ways to approach this one, I guess.
mmc
+2  A: 

nice script found @ http://allancraig.net/blog/?p=381

Joachim
A: 

FYI, Xcode 3.2 (Snow Leopard only I believe) includes the Clang Static Analyzer in the "Build and Analyze" menu option.

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

One downside of Xcode 3.2 (aside from it only working on Snow Leopard) is that the v2.x Simulators don't seem to work - in fact, I've seen posts indicating that v2.x builds are not supported at all.

Dan J