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# and Javaбаза данных CodeQL создается непосредственно из базы кода без необходимости сборки (none режим сборки). Для других скомпилированных языков CodeQL создает базу кода с помощью режима сборки autobuild . Кроме того, можно использовать manual режим сборки для указания явных команд сборки для анализа только файлов, созданных этими пользовательскими командами.

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

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

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

  •         `none` — база данных CodeQL создается непосредственно из базы кода без создания базы кода (поддерживается для всех интерпретированных языков и дополнительно поддерживается для C# and Java).
    
  •         `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.