Question

Is there an Objective-C syntax checker?

I have tried gcc -fsyntax-only but it is not really 'syntax only'. It still produces errors if run on an individual implementation file which has references to external frameworks.

I am looking for something that can perform a syntax check on individual header or implementation files without attempting to link or produce object files.

Can gcc do this with additional flags I am unaware of, or is there another tool up to this task?

I want to do this from the command-line. Can xcodebuild do this for an individual file? Running xcodebuild for the entire project to check the syntax of one file is a bit much.

Was it helpful?

Solution 3

So after trawling through the gcc man page I discovered the -F flag which lets you add a framework directory to the list of directories gcc searches for header files.

This solves my issue.

Use it like this: gcc -fsyntax-only -ObjC -F/Path/To/A/Framework -F/Path/To/Another/Framework File.m

OTHER TIPS

There's no way for it to check the syntax without it knowing about the header files for the frameworks you are using. You need to use the -framework flag to include the relevant header files.

You could try using clang -fsyntax-only instead, especially if you're using 10.6/Xcode 3.2. Clang/LLVM has much better separation between the parser and the other parts of the compiler chain. You can find clang in /Developer/usr/bin.

You can compile a single file in Xcode[1] using Build->Compile (cmd-K) which is effectively a syntax check (there's no linking step).

[1] I assume you're using Xcode, as there's little point in using Objective-C without OS X (really the Cocoa frameworks).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top