Xcode Analyzer - Игнорировать цели CocoaPods

У меня есть рабочее пространство Xcode, настроенное с помощью CocoaPods. Когда я запускаю Xcode Analyzer в своем проекте, он анализирует мой собственный исходный код, а также весь исходный код в целевых группах. Это вызывает множество предупреждений, которые меня не интересуют, поскольку я только хочу видеть предупреждения анализатора моего собственного исходного кода.

Я снял флажок "Анализировать" из цели сборки для контейнеров, но это, похоже, не имеет никакого эффекта.

Есть ли способ игнорировать объекты Pods при запуске анализатора?

enter image description here

Ответ 1

Здесь обновление/модификация существующего ответа:

С Cocoapods 0.38+ атрибут установщика, необходимый для получения проекта, изменился так, что вам нужно использовать "pods_project" вместо "project", например:

post_install do |installer|
    puts 'Removing static analyzer support'
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['OTHER_CFLAGS'] = "$(inherited) -Qunused-arguments -Xanalyzer -analyzer-disable-all-checks"
        end
    end
end

Подробнее об изменениях см. в следующем объявлении блога Cocoapods: http://blog.cocoapods.org/CocoaPods-0.38/#breaking-change-to-the-hooks-api

Кроме того, здесь (закрытая) проблема, показывающая ошибку, которую вы получите, если попробуете старый способ с новым кодом: https://github.com/CocoaPods/CocoaPods/issues/3918

Ответ 2

Вы можете добавить шаг post post в конце вашего podfile, чтобы добавить флаги компилятора, которые управляют статическим анализатором.

post_install do |installer|
    puts 'Removing static analyzer support'
    installer.project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['OTHER_CFLAGS'] = "$(inherited) -Qunused-arguments -Xanalyzer -analyzer-disable-all-checks"
        end
    end
end

Затем просто запустите команду "pod update", чтобы восстановить файлы проекта.

Различные части:

  • $(унаследованный) - хорошая привычка не избегать случайного удаления флажков.
  • -Qunused-arguments - llvm не понимает параметры clang, это затухает в результате предупреждения из основной компиляции
  • -Xanalyzer -analyzer-disable-all-checks - Это указывает статическому анализатору игнорировать файлы в связанном проекте.