# Сканирование кода с помощью CodeQL

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

> \[!NOTE]
> Администратор сайта должен включить code scanning , прежде чем использовать эту функцию. Дополнительные сведения см. в разделе [Настройка сканирования кода для вашего устройства](/ru/enterprise-server@3.22/code-security/how-tos/secure-at-scale/configure-enterprise-security/configure-specific-tools/configuring-code-scanning-for-your-appliance).
>
> Возможно, вы не сможете включить или отключить code scanning , если владелец предприятия установил GitHub Code Security политику на уровне предприятия. Дополнительные сведения см. в разделе [Применение политик безопасности кода и анализа для вашего предприятия](/ru/enterprise-server@3.22/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-code-security-and-analysis-for-your-enterprise).

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

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

* Используйте настройки по умолчанию для быстрой настройки CodeQL анализа на code scanning вашем репозитории. Настройка по умолчанию автоматически выбирает языки для анализа, набора запросов для выполнения и событий, которые активируют сканирование. Если вы предпочитаете, можно вручную выбрать набор запросов для выполнения и анализа языков. После включения CodeQLбудет GitHub Actions выполнен запуск рабочих процессов для сканирования кода. Дополнительные сведения см. в разделе [Настройка настройки по умолчанию для сканирования кода](/ru/enterprise-server@3.22/code-security/how-tos/find-and-fix-code-vulnerabilities/configure-code-scanning/configure-code-scanning).

* Используйте расширенную настройки, чтобы добавить CodeQL рабочий процесс в репозиторий. Это генерирует настраиваемый файл рабочего процесса, который использует [github/codeql-action](https://github.com/github/codeql-action/) для запуска CodeQL CLI. Дополнительные сведения см. в разделе [Настройка расширенной настройки для сканирования кода](/ru/enterprise-server@3.22/code-security/how-tos/find-and-fix-code-vulnerabilities/configure-code-scanning/configuring-advanced-setup-for-code-scanning#configuring-advanced-setup-for-code-scanning-with-codeql).

* Запустите CodeQL CLI его напрямую во внешней CI-системе и загрузите результаты в GitHub. Дополнительные сведения см. в разделе [Использование сканирования кода с существующей системой CI](/ru/enterprise-server@3.22/code-security/how-tos/find-and-fix-code-vulnerabilities/integrate-with-existing-tools/use-with-existing-ci-system).

> \[!NOTE]
> На GitHub Enterprise Server3.22, действие CodeQL по умолчанию использует CodeQL CLI версию 2.25.6 . Мы рекомендуем использовать ту же версию, что CodeQL CLI и при исполнении анализа во внешней CI-системе.

Для информации о code scanning оповещениях см. [Оповещения о проверке кода](/ru/enterprise-server@3.22/code-security/concepts/code-scanning/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/enterprise-server@3.22/code-security/how-tos/find-and-fix-code-vulnerabilities/scan-from-vs-code/use-the-model-editor).

## запросы CodeQL

GitHub Эксперты, исследователи безопасности и участники сообщества пишут и поддерживают стандартные CodeQL запросы, используемые для code scanning. Запросы регулярно обновляются для улучшения анализа и снижения количества ложноположительных результатов. Для подробностей запросов, доступных в стандартных и расширенных пакетах, см [. раздел «Запросы, включённые в пакеты запросов по умолчанию» и «расширенный с безопасностью](/ru/enterprise-server@3.22/code-security/concepts/code-scanning/codeql/codeql-query-suites#queries-included-in-the-default-and-security-extended-query-suites)».

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

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

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

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

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

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

* CodeQL Пакеты запросов можно скачивать из нескольких GitHub реестров контейнеров. Дополнительные сведения см. в разделе [Параметры настройки рабочих процессов для сканирования кода](/ru/enterprise-server@3.22/code-security/reference/code-scanning/workflow-configuration-options#downloading-codeql-packs-from-github-enterprise-server).

Дополнительные сведения см. в разделе [Настройка анализа с помощью пакетов CodeQL](/ru/enterprise-server@3.22/code-security/tutorials/customize-code-scanning/customize-analysis).