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

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

## О Рабочий процесс анализа 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](#about-dependency-caching-for-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 для скомпилированных языков](/ru/code-security/reference/code-scanning/codeql/build-options-for-compiled-languages).

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

Вы можете использовать кэширование CodeQL зависимостей, чтобы хранить зависимости в кэше GitHub Actions вместо скачивания их из реестров. Это снижает риск потери оповещений, когда сторонние реестры не работают хорошо, и может привести к улучшению производительности проектов, имеющих большое количество зависимостей или работающих с медленными реестрами. Дополнительные сведения о том, как кэширование зависимостей может ускорить рабочие процессы, см. в статье [Справочник по кэшированию зависимостей](/ru/actions/reference/workflows-and-actions/dependency-caching).

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

> \[!NOTE]
> Использование кэширования зависимостей хранит CodeQL-специфические кэши, которые будут подчиняться квотам кэша для репозитория. См [. раздел AUTOTITLE](/ru/actions/reference/workflows-and-actions/dependency-caching#usage-limits-and-eviction-policy).