---
title: Установка CodeQL CLI в системе непрерывной интеграции
shortTitle: Configure CodeQL CLI
intro: 'Вы можете настроить систему непрерывной интеграции для выполнения {% data variables.product.prodname_codeql_cli %}, выполнения анализа {% data variables.product.prodname_codeql %} и отправки результатов в {% data variables.product.product_name %} для отображения в виде оповещений {% data variables.product.prodname_code_scanning %}.'
product: '{% data reusables.gated-features.code-scanning %}'
miniTocMaxHeadingLevel: 3
redirect_from:
- /code-security/secure-coding/using-codeql-code-scanning-with-your-existing-ci-system/configuring-codeql-cli-in-your-ci-system
versions:
fpt: '*'
ghes: '*'
ghae: '*'
ghec: '*'
type: how_to
topics:
- Advanced Security
- Code scanning
- CodeQL
- Repositories
- Pull requests
- Integration
- CI
- SARIF
ms.openlocfilehash: 165aee9852cb6863dceddb41daf6d05176191f7a
ms.sourcegitcommit: dac72908e8660cb4a347fbf73beab61034eed8c5
ms.translationtype: MT
ms.contentlocale: ru-RU
ms.lasthandoff: 11/25/2022
ms.locfileid: '148182301'
---
{% data reusables.code-scanning.enterprise-enable-code-scanning %}
{% ifversion ghes or ghae %} {% note %}
**Примечание.** В этой статье описаны функции, доступные в версии {% data variables.product.prodname_codeql_cli %} во время выпуска {% data variables.product.product_name %}. Если в вашей организации используется более поздняя версия {% data variables.product.prodname_codeql_cli %}, ознакомьтесь с [документацией {% data variables.product.prodname_ghe_cloud %}](/enterprise-cloud@latest/code-security/code-scanning/using-codeql-code-scanning-with-your-existing-ci-system/configuring-codeql-cli-in-your-ci-system).
{% endnote %} {% endif %}
## Сведения о создании результатов сканирования кода с помощью {% data variables.product.prodname_codeql_cli %}
После того как вы обеспечили доступ к {% data variables.product.prodname_codeql_cli %} для серверов в системе непрерывной интеграции и удостоверились, что они могут проходить проверку подлинности с помощью {% data variables.product.product_name %}, можно приступить к созданию данных.
Для создания результатов и их отправки в {% data variables.product.product_name %} используются три разных команды:
1. `database create` для создания базы данных {% data variables.product.prodname_codeql %} для представления иерархической структуры каждого поддерживаемого языка программирования в репозитории.
2. ` database analyze` для выполнения запросов по анализу каждой базы данных {% data variables.product.prodname_codeql %} и суммирования результатов в файле SARIF.
3. `github upload-results` для загрузки полученных файлов SARIF в {% data variables.product.product_name %}, где результаты сопоставляются с ветвью или запросом на вытягивание и отображаются в виде оповещений {% data variables.product.prodname_code_scanning %}.
Вы можете отобразить справку командной строки для любой команды, используя параметр `--help`.
{% data reusables.code-scanning.upload-sarif-ghas %}
## Создание баз данных {% data variables.product.prodname_codeql %} для анализа
1. Извлеките код, который нужно проанализировать:
- Для ветви извлеките заголовок ветви, которую необходимо проанализировать.
- Для запроса на вытягивание извлеките фиксацию заголовка запроса на вытягивание или фиксацию слияния запроса на вытягивание, сгенерированную с помощью {% data variables.product.prodname_dotcom %}.
2. Настройте среду для базы кода, убедившись, что все зависимости доступны. Дополнительные сведения см. в разделах [Создание баз данных для нескомпилированных языков](https://codeql.github.com/docs/codeql-cli/creating-codeql-databases/#creating-databases-for-non-compiled-languages) и [Создание баз данных для скомпилированных языков](https://codeql.github.com/docs/codeql-cli/creating-codeql-databases/#creating-databases-for-compiled-languages) в документации по {% data variables.product.prodname_codeql_cli %}.
3. Найдите команду сборки (если таковая имеется) для базы кода. Обычно она доступна в файле конфигурации в системе CI.
4. Запустите `codeql database create` из корня извлечения вашего репозитория и выполните сборку базы кода.
```shell
# Single supported language - create one CodeQL database
codeql database create <database> --command<build> --language=<language-identifier>
# Multiple supported languages - create one CodeQL database per language
codeql database create <database> --command<build> \
--db-cluster --language=<language-identifier>,<language-identifier>
```
{% note %}
**Примечание.** Если вы используете контейнерную сборку, вам нужно запустить {% data variables.product.prodname_codeql_cli %} в контейнере, где выполняется задача сборки.
{% endnote %}
| Параметр | Обязательно | Использование |
|--------|:--------:|-----|
| `` | {% octicon "check-circle-fill" aria-label="Required" %} | Укажите имя и расположение каталога, который необходимо создать для базы данных {% data variables.product.prodname_codeql %}. Команда завершится ошибкой, если вы попытаетесь перезаписать существующий каталог. Если также указать `--db-cluster`, это родительский каталог, а для каждого проанализированного языка создается подкаталог.|
| `--language` | {% octicon "check-circle-fill" aria-label="Required" %} | Укажите идентификатор языка, для которого нужно создать базу данных, один из следующих: `{% data reusables.code-scanning.codeql-languages-keywords %}` (используйте `javascript` для анализа кода TypeScript {% ifversion codeql-kotlin-beta %} и `java` анализа кода Kotlin{% endif %}). При использовании с `--db-cluster` параметр принимает список с разделителями-запятыми или может быть указан более одного раза.
| `--command` | | (рекомендуется). Используйте для указания команды сборки или скрипта, вызывающего процесс сборки для базы кода. Команды запускаются из текущей папки или, если она определена, из `--source-root`. Не требуется для анализа Python и JavaScript/TypeScript. |
| `--db-cluster` | | Необязательный элемент. Используйте в многоязычных базах кода для создания одной базы данных для каждого языка, заданного `--language`.
| `--no-run-unnecessary-builds` | | (рекомендуется). Используйте, чтобы подавлять команду сборки для языков, где {% data variables.product.prodname_codeql_cli %} не нужно отслеживать сборку (например, Python и JavaScript/TypeScript).
| `--source-root` | | Необязательный элемент. Используйте, если вы запускаете CLI за пределами корневого элемента извлечения репозитория. По умолчанию командой `database create` предполагается, что текущий каталог является корневым каталогом для исходных файлов. Используйте этот параметр, чтобы указать другое местоположение. |
| `--codescanning-config` | | Необязательно (дополнительно). Используйте этот вариант, если у вас есть файл конфигурации, указывающий, как создавать базы данных {% data variables.product.prodname_codeql %} и какие запросы будут выполняться на последующих шагах. Дополнительные сведения см. в разделе [Использование пользовательского файла конфигурации](/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-a-custom-configuration-file) и [database create](https://codeql.github.com/docs/codeql-cli/manual/database-create/#cmdoption-codeql-database-create-codescanning-config). |
Дополнительные сведения см. в статье [Создание баз данных {% data variables.product.prodname_codeql %}](https://codeql.github.com/docs/codeql-cli/creating-codeql-databases/) в документации для {% data variables.product.prodname_codeql_cli %}.
### Пример использования одного языка
В этом примере создается база данных {% data variables.product.prodname_codeql %} для репозитория, извлеченного в папку `/checkouts/example-repo`. Он использует средство извлечения JavaScript для создания иерархического представления кода JavaScript и TypeScript в репозитории. Результирующая база данных хранится в `/codeql-dbs/example-repo`.
```
$ codeql database create /codeql-dbs/example-repo --language=javascript \
--source-root /checkouts/example-repo
> Initializing database at /codeql-dbs/example-repo.
> Running command [/codeql-home/codeql/javascript/tools/autobuild.cmd]
in /checkouts/example-repo.
> [build-stdout] Single-threaded extraction.
> [build-stdout] Extracting
...
> Finalizing database at /codeql-dbs/example-repo.
> Successfully created database at /codeql-dbs/example-repo.
```
### Пример с несколькими языками
В этом примере создаются две базы данных {% data variables.product.prodname_codeql %} для репозитория, извлеченного в папку `/checkouts/example-repo-multi`. Он использует следующую информацию:
- `--db-cluster` для запроса анализа более чем одного языка.
- `--language` для указания, для каких языков следует создавать базы данных.
- `--command`, чтобы сообщить инструменту команду сборки для базы кода. Здесь это `make`.
- `--no-run-unnecessary-builds` чтобы сообщить инструменту о необходимости пропустить команду сборки для языков, где она не требуется (например, Python).
Результирующие базы данных хранятся в подкаталогах `python` и `cpp` в `/codeql-dbs/example-repo-multi`.
```
$ codeql database create /codeql-dbs/example-repo-multi \
--db-cluster --language python,cpp \
--command make --no-run-unnecessary-builds \
--source-root /checkouts/example-repo-multi
Initializing databases at /codeql-dbs/example-repo-multi.
Running build command: [make]
[build-stdout] Calling python3 /codeql-bundle/codeql/python/tools/get_venv_lib.py
[build-stdout] Calling python3 -S /codeql-bundle/codeql/python/tools/python_tracer.py -v -z all -c /codeql-dbs/example-repo-multi/python/working/trap_cache -p ERROR: 'pip' not installed.
[build-stdout] /usr/local/lib/python3.6/dist-packages -R /checkouts/example-repo-multi
[build-stdout] [INFO] Python version 3.6.9
[build-stdout] [INFO] Python extractor version 5.16
[build-stdout] [INFO] [2] Extracted file /checkouts/example-repo-multi/hello.py in 5ms
[build-stdout] [INFO] Processed 1 modules in 0.15s
[build-stdout]