OCLint Xcode 9.3.1 Failure

582 Views Asked by At

I have the following Run Script , available at http://oclint-docs.readthedocs.io/en/stable/guide/xcode.html

source ~/.bash_profile
cd ${SRCROOT}
xcodebuild clean
xcodebuild | xcpretty -r json-compilation-database --output compile_commands.json
oclint-json-compilation-database -- -report-type xcode

But, when I execute it, I receive the following error. (1 failure) oclint: Not enough positional command line arguments specified!

oclint version is OCLint version 0.13 and Xcode 9.3.1

1

There are 1 best solutions below

0
On

I have found a way to generate a JSON compilation database from an Xcode project without relying on external tools. Tested with Xcode 13.4.1 on macOS 12 Monterey and Apple Silicon M1 Pro.

Inside your Xcode Build Settings, or when invoking xcodebuild you can set the following compiler flag:
OTHER_CFLAGS = $(inherited) -gen-cdb-fragment-path $(PROJECT_DIR)/CompilationDatabase

This instructs clang to emit a fragment of the compilation database for each compilation. These fragments can easily be combined into the final compilation database by using the following command:
sed -e '1s/^/[\'$'\n''/' -e '$s/,$/\'$'\n'']/' *.json > compile_commands.json

Of course it's a good idea to validate fragments, but that cannot be done without external tools.

For full details regarding compiler flags, validation of fragments, and references, check out the gist:
Generate a JSON Compilation Database from an Xcode project