# О проверке кода с помощью CodeQL

Для выявления уязвимостей и ошибок в коде вы можете использовать CodeQL. Результаты отображаются как оповещения code scanning в GitHub.

CodeQL — это система анализа кода, разработанная GitHub для автоматизации проверок безопасности. Код можно проанализировать, используя CodeQL, и отобразить результаты в виде оповещений code scanning.

Существует три основных способа использования анализа данных CodeQL для code scanning:

* Используйте настройку по умолчанию, чтобы быстро настроить анализ CodeQL для code scanning в репозитории. Настройка по умолчанию автоматически выбирает языки для анализа, набора запросов для выполнения и событий, которые активируют сканирование. Если вы предпочитаете, можно вручную выбрать набор запросов для выполнения и анализа языков. После включения CodeQL{ GitHub Actions выполняет рабочий процесс для сканирования кода. Дополнительные сведения см. в разделе [Настройка настройки по умолчанию для сканирования кода](/ru/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning).

* Используйте расширенную настройку, чтобы добавить в репозиторий рабочий процесс CodeQL. При этом создается настраиваемый файл рабочего процесса, который использует [действие github/codeql-action](https://github.com/github/codeql-action/) для запуска CodeQL CLI. Дополнительные сведения см. в разделе [Настройка расширенной настройки для сканирования кода](/ru/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning#configuring-advanced-setup-for-code-scanning-with-codeql).

* Запустите CodeQL CLI непосредственно во внешней системе CI и отправьте результаты в GitHub. Дополнительные сведения см. в разделе [Использование сканирования кода с существующей системой CI](/ru/code-security/code-scanning/integrating-with-code-scanning/using-code-scanning-with-your-existing-ci-system).

Сведения о оповещениях code scanning см. в разделе [О предупреждениях о сканировании кода](/ru/code-security/code-scanning/managing-code-scanning-alerts/about-code-scanning-alerts).

## Сведения о CodeQL

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

1. Создается база данных CodeQL для представления базы кода.
2. Затем выполняются запросы CodeQL к этой базе данных для выявления проблем в базе кода.
3. Результаты запроса отображаются как оповещения code scanning в GitHub при использовании CodeQL с code scanning.

CodeQL поддерживает как компилируемые, так и интерпретируемые языки и может находить уязвимости и ошибки в коде, написанном на поддерживаемых языках.

CodeQL поддерживает следующие языки:

<!-- If you update the list of supported languages for CodeQL, update docs-internal/content/get-started/learning-about-github/github-language-support.md to reflect the changes. -->

* C/C++
* C#
* Go
* Java и Kotlin
* JavaScript/TypeScript
* Python
* Ruby
* Rust
* Swift \* GitHub Actions рабочих процессов

> \[!NOTE]
>
> * Используется `java-kotlin` для анализа кода, написанного на Java, Kotlin или обоих.
> * Используется `javascript-typescript` для анализа кода, написанного на JavaScript, TypeScript или обоих.

Дополнительные сведения см. в документации на веб-сайте CodeQL: [поддерживаемые языки и платформы](https://codeql.github.com/docs/codeql-overview/supported-languages-and-frameworks/).

> \[!IMPORTANT]
> CodeQL **не** поддерживает языки, которые не перечислены выше. Это включает в себя, но не ограничивается, **PHP**, **Scala** и т. д. Попытка использования CodeQL с неподдерживаемыми языками может привести к тому, что оповещения не создаются и не выполняются неполный анализ.

## Моделирование пользовательских или нишевых платформ

GitHub эксперты, исследователи безопасности и участники сообщества записывают библиотеки для моделирования потока данных в популярных платформах и библиотеках. Если вы используете пользовательские зависимости, которые не моделируются, можно использовать расширение CodeQL для Visual Studio Code для создания моделей для этих зависимостей и их использования для расширения анализа. Дополнительные сведения см. в разделе [Использование редактора моделей CodeQL](/ru/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/using-the-codeql-model-editor).

## Запросы CodeQL

GitHub эксперты, исследователи безопасности и участники сообщества записывают и поддерживают запросы по умолчанию CodeQL, используемые для code scanning. Запросы регулярно обновляются для улучшения анализа и уменьшения результатов ложноположительных результатов.

### Написание собственных запросов

Запросы открытый код, поэтому вы можете просматривать и вносить вклад в запросы в [репозитории github/codeql](https://github.com/github/codeql). Дополнительные сведения см. в разделе ["Сведения о CodeQL в](https://codeql.github.com/docs/writing-codeql-queries/about-codeql-queries/) документации по CodeQL.

### Выполнение дополнительных запросов

Если вы сканируете код с помощью расширенной установки или внешней системы CI, вы можете выполнять дополнительные запросы в рамках анализа.

Эти запросы должны принадлежать опубликованному пакету запросов CodeQL или пакету CodeQL в репозитории.

* Когда пакет запросов CodeQL публикуется в GitHub Container registry, все транзитивные зависимости, необходимые запросам и кэш компиляции, включаются в пакет. Это повышает производительность и гарантирует, что выполнение запросов в пакете дает одинаковые результаты при каждом обновлении до новой версии пакета или CLI.

* Пакеты запросов CodeQL можно скачать из нескольких реестров контейнеров GitHub . Дополнительные сведения см. в разделе [Параметры настройки рабочих процессов для сканирования кода](/ru/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#downloading-codeql-packs-from-github-enterprise-server).

Дополнительные сведения см. в разделе [Настройка анализа с помощью пакетов CodeQL](/ru/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs).