OCLint Xcode 9.3.1 Сбой

У меня есть следующий Run Script, доступный по адресу 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

Но, когда я выполняю его, я получаю следующую ошибку. (1 ошибка) oclint: Задано недостаточно аргументов позиционной командной строки!

oclint версия OCLint версии 0.13 и Xcode 9.3.1

1 ответ

Я нашел способ создать базу данных компиляции JSON из проекта Xcode, не полагаясь на внешние инструменты. Протестировано с Xcode 13.4.1 на macOS 12 Monterey и Apple Silicon M1 Pro .

Внутри настроек сборки Xcode или при вызовеxcodebuildвы можете установить следующий флаг компилятора:
OTHER_CFLAGS = $(inherited) -gen-cdb-fragment-path $(PROJECT_DIR)/CompilationDatabase

Это указывает clang создавать фрагмент базы данных компиляции для каждой компиляции. Эти фрагменты можно легко объединить в конечную базу данных компиляции с помощью следующей команды:
sed -e '1s/^/[\'$'\n''/' -e '$s/,$/\'$'\n'']/' *.json > compile_commands.json

Конечно, валидировать фрагменты — хорошая идея, но без внешних инструментов этого не сделать.

Для получения полной информации о флагах компилятора, проверке фрагментов и ссылках ознакомьтесь с сутью:
Создание базы данных компиляции JSON из проекта Xcode.

Другие вопросы по тегам