Как использовать интегрированный проект cocoapods с OCLint?

Я могу построить проект и сгенерировать отчет OCLint для проекта без кокаподов, но при интеграции с кокоаподами сборка для проекта успешна, но сборка для OCLint приводит к ошибкам для файла, которые присутствуют в кокоаподах, и сборка завершается неудачно.

Итак, как сделать сборку успешной для кокоподов с помощью OCLint?

Любая помощь будет оценена.

1 ответ

Решение

Ниже приведен скрипт, который я использую для создания html-файла для интегрированного проекта cocoapods с OCLint.

OCLINT_HOME - путь к загруженной папке oclint. Я переименовал папку в oclintrelease.

OCLINT_HOME=/Users/Dheeraj/Downloads/oclintrelease
export PATH=$OCLINT_HOME/bin:$PATH

hash oclint &> /dev/null
if [ $? -eq 1 ]; then
echo >&2 "oclint not found, analyzing stopped"
exit 1
fi

cd ${TARGET_TEMP_DIR}

if [ ! -f compile_commands.json ]; then
echo "[*] compile_commands.json not found, possibly clean was performed"
echo "Workspace Path : ${MY_WORKSPACE}"
echo "[*] starting xcodebuild to rebuild the project.."
# clean previous output

if [ -f xcodebuild.log ]; then
rm xcodebuild.log
echo "Oclint Clean performed"
fi

cd ${SRCROOT}

xcodebuild clean

#build xcodebuild.log
xcodebuild ONLY_ACTIVE_ARCH=NO -workspace ${PROJECT_NAME}.xcworkspace -scheme ${PROJECT_NAME} -configuration Debug clean build| tee ${TARGET_TEMP_DIR}/xcodebuild.log
#xcodebuild <options>| tee ${TARGET_TEMP_DIR}/xcodebuild.log

echo "[*] transforming xcodebuild.log into compile_commands.json..."
cd ${TARGET_TEMP_DIR}
#transform it into compile_commands.json
oclint-xcodebuild

fi

echo "[*] starting analyzing"
cd ${TARGET_TEMP_DIR}

oclint-json-compilation-database -e /Users/Dheeraj/Desktop/sampleCocoaPods/Pods/ -v oclint_args "-report-type html -o /Users/Dheeraj/NewHTMLREPORT.html" | sed 's/\(.*\.\m\{1,2\}:[0-9]*:[0-9]*:\)/\1 warning:/'

Это исключит все файлы, связанные с модулями.

Если вы хотите включить файл Pods, замените последнюю строку в скрипте на:

oclint-json-compilation-database -v oclint_args "-report-type html -o /Users/Dheeraj/NewHTMLREPORT.html" | sed 's/\(.*\.\m\{1,2\}:[0-9]*:[0-9]*:\)/\1 warning:/'

Заметки:

  1. Пожалуйста, попробуйте сначала с коротким примером приложения, включая cocoapods, и как только вы сгенерируете отчет для примера приложения, затем интегрируйте скрипт в ваше реальное приложение, так как сборка с OCLint занимает много времени для генерации отчета.
  2. Всегда очищайте приложение, а затем собирайте его с помощью OCLint.

Ссылка для справки

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