CodeQL: ограничения для macOS 27, Xcode 27 и Swift 6.4

CodeQL: ограничения для macOS 27, Xcode 27 и Swift 6.4
Содержание статьи

19 октября 2026 года GitHub предупредил об ограничениях CodeQL при использовании macOS 27, Xcode 27 и Swift 6.4. Командам, которые обновляют окружение сборки, стоит проверить анализ кода отдельно от компиляции приложения. Mentoring.digital объясняет, какие сценарии затронуты и что рекомендует GitHub.

Почему обновление инструментов влияет на анализ

В части системных библиотек и исполняемых файлов новых macOS и Xcode Apple больше не поставляет Intel-код x86_64, на который CodeQL опирается при трассировке сборки. Такая трассировка позволяет анализатору наблюдать процесс компиляции и собирать данные для проверки.

По объявлению GitHub, с установленным Xcode 27 недоступно извлечение с трассировкой для C/C++, C#, Go, Java, Kotlin и Swift. На macOS 27 оно также может быть недоступно. Поддержка Swift 6.4 отсутствует на любой платформе. Эти ограничения нельзя переносить на все языки и все режимы CodeQL без различий.

Как сохранить работающие проверки

Для Swift и других языков с трассируемой сборкой GitHub рекомендует закрепить macOS 26 или более раннюю версию вместе с Xcode 26 или более ранним. В GitHub Actions нужно явно выбирать образ runner и набор инструментов, а не полагаться на обозначение latest.

Закрепление версии полезно рассматривать как временно контролируемую конфигурацию. Сохраните причину выбора и условие следующего пересмотра: появление подтверждённой поддержки, успешная пробная проверка и сравнение полученного охвата анализа.

На разборе с наставником по окружениям сборки имеет смысл показать сам workflow, выбранные версии и журналы CodeQL. Одного номера macOS на личном ноутбуке недостаточно, если анализ выполняется на другом runner.

Когда подходит режим без сборки

Для C/C++, C# и Java в объявлении предложен вариант build-mode: none, которому не нужна трассировка. Но это отдельный режим с собственными границами. Документация CodeQL указывает, что при анализе без сборки сгенерированный код не анализируется.

Поэтому смена режима требует проверки содержимого проекта. Если важная часть исходников появляется при генерации, успешный запуск задания ещё не доказывает сохранение прежнего охвата. Не считайте этот вариант универсальным обходом ограничений Swift.

Что записать перед обновлением CI

  • Языки проекта и фактический режим извлечения CodeQL.
  • Версии системы, Xcode и образа runner.
  • Наличие генерируемых исходников и способ их получения.
  • Результат полного анализа после изменения, включая ошибки и предупреждения.

GitHub также сообщил о планируемом прекращении поддержки CodeQL на Intel Mac в середине декабря 2026 года. Это будущий срок из объявления, а не уже выполненное отключение.

Проверить, что изменение CI сохранило нужные проверки, поможет разбор стратегии автоматизированного тестирования. Здесь важна не только успешная сборка, но и понимание того, какой код продолжает проходить анализ.

Похожие статьи по данной теме