Skip to main content

О сканировании кода CodeQL для скомпилированных языков

Поймите, как CodeQL анализируют скомпилированные языки, какие доступные варианты сборки доступны, и узнайте, как можно настраивать процесс генерации базы данных, если это необходимо.

Кто может использовать эту функцию?

Пользователи с доступом на запись if advanced setup is already enabled

Code scanning доступен для следующих типов репозитория:

  • Общедоступные репозитории для GitHub.com
  • Репозитории, принадлежащие организации, на GitHub Team, GitHub Enterprise Cloud или GitHub Enterprise Server, с включённым GitHub Code Security .

О Рабочий процесс анализа CodeQL языках и компилированных языках

          Code scanning Работает, выполняя запросы к одной или нескольким CodeQL базам данных. Каждая база данных содержит представление кода на одном языке в репозитории. Для скомпилированных языков C/C++, C#, Go, Java, Kotlin, Rust, и Swiftпроцесс заполнения этой базы данных часто включает создание кода и извлечение данных.

При включении code scanning, и по умолчанию, и в расширенной установке создаются CodeQL база данных для анализа с использованием самого простого доступного метода. Для C/C++, C#, Java и Rust, CodeQL база данных генерируется непосредственно из кодовой базы без необходимости сборки (none режим сборки). Для других скомпилированных языков CodeQL кодовая база строится в режиме autobuild сборки. Кроме того, можно использовать manual режим сборки для указания явных команд сборки для анализа только файлов, созданных этими пользовательскими командами.

Вы можете использовать кэширование CodeQL зависимостей, чтобы хранить зависимости в кэше GitHub Actions вместо скачивания их из реестров. См. раздел «О кэшировании зависимостей» для CodeQL дальнейшей статьи в этой статье.

CodeQL Режимы сборки

Действие CodeQL поддерживает три различных режима сборки для скомпилированных языков:

  • none - CodeQL база данных создаётся непосредственно из кодовой базы без её построения (поддерживается для всех интерпретируемых языков и дополнительно поддерживается для C/C++, C#, Java и Rust).
  • autobuild - CodeQL обнаруживает наиболее вероятный метод сборки и использует его для попытки построить кодовую базу и создать базу данных для анализа (поддерживается для C/C++, C#, Go, Java, Kotlin и Swift).
  • manual - Вы определяете шаги сборки для кодовой базы в рабочем процессе (поддерживается для C/C++, C#, Go, Java, Kotlin и Swift).

Для языкового autobuild поведения, требований к бегунам и рекомендациям по ручным сборкам см. Опции и шаги сборки CodeQL для скомпилированных языков.

О кэшировании зависимостей для CodeQL

Вы можете использовать кэширование CodeQL зависимостей, чтобы хранить зависимости в кэше GitHub Actions вместо скачивания их из реестров. Это снижает риск потери оповещений, когда сторонние реестры не работают хорошо, и может привести к улучшению производительности проектов, имеющих большое количество зависимостей или работающих с медленными реестрами. Дополнительные сведения о том, как кэширование зависимостей может ускорить рабочие процессы, см. в статье Справочник по кэшированию зависимостей.

Кэширование зависимостей работает во всех режимах сборки и поддерживается Java, Go и C#.

Примечание.

Использование кэширования зависимостей хранит CodeQL-специфические кэши, которые будут подчиняться квотам кэша для репозитория. См . раздел AUTOTITLE.