# инициализация базы данных

\[Сантехника] Создайте пустую базу данных CodeQL.

> \[!NOTE]
> Это содержимое описывает последний выпуск данных CodeQL CLI. Дополнительные сведения об этом выпуске см. в статье <https://github.com/github/codeql-cli-binaries/releases>.
>
> Чтобы просмотреть сведения о параметрах, доступных для этой команды в предыдущем выпуске, выполните команду с <span style="white-space: nowrap;">`--help`</span> параметром в терминале.

## Synopsis

```shell copy
codeql database init --source-root=<dir> [--language=<lang>[,<lang>...]] [--github-auth-stdin] [--github-url=<url>] [--extractor-option=<extractor-option-name=value>] <options>... -- <database>
```

## Description

```
          \[Сантехника] Создайте пустую базу данных CodeQL.
```

Создайте структуру скелета для базы данных CodeQL, которая еще не имеет необработанного набора данных QL, но готова к выполнению шагов извлечения. После завершения этой команды выполните одну или несколько [команд трассировки](/ru/code-security/reference/code-scanning/codeql/codeql-cli-manual/database-trace-command) базы данных codeql, за которым [следует завершение](/ru/code-security/reference/code-scanning/codeql/codeql-cli-manual/database-finalize) базы данных codeql, чтобы подготовить базу данных для запроса.

(Часть этого решения заключается в разрешении расположения соответствующего языкового пакета и хранения его в метаданных базы данных, таким образом, чтобы при каждой команде извлечения его не нужно было переопределено. Невозможно переключить извлекатели в середине операции извлечения.)

## Options

### Основные параметры

#### `<database>`

```
          \[Обязательный] Путь к создаваемой базе данных CodeQL. Этот каталог будет создан и _не_ должен существовать (но его родительский каталог должен).

          `--db-cluster` Если этот параметр задан, это не сама база данных, а каталог, который будет _содержать_ базы данных для нескольких языков, созданных из одного корневого каталога источника.
```

Важно, чтобы этот каталог не был в расположении, с которым будет вмешиваться процесс сборки. Например, `target` каталог проекта Maven не будет подходящим выбором.

#### `-s, --source-root=<dir>`

```
          \[Обязательно] Корневой каталог исходного кода. Во многих случаях это будет корневая папка для вырезки. Файлы в нем считаются основными исходными файлами для этой базы данных. В некоторых выходных форматах файлы будут ссылаться на относительный путь из этого каталога.
```

#### `--[no-]overwrite`

```
          \[Дополнительно] Если база данных уже существует, удалите ее и перейдите к этой команде вместо сбоя. Если каталог существует, но он не выглядит как база данных, возникает ошибка.
```

#### `--[no-]force-overwrite`

```
          \[Дополнительно] Если база данных уже существует, удалите ее, даже если она не выглядит как база данных и не выполняет эту команду, а не завершается ошибкой. Этот параметр следует использовать с осторожностью, так как он может рекурсивно удалить весь каталог базы данных.
```

#### `--codescanning-config=<file>`

```
          \[Дополнительно] Чтение файла конфигурации сканирования кода, указывающего параметры создания баз данных CodeQL и запросов для выполнения в последующих шагах. Дополнительные сведения о формате этого файла конфигурации см. в [разделе AUTOTITLE](/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning). Чтобы выполнить запросы из этого файла на следующем шаге, вызовите [анализ](/code-security/reference/code-scanning/codeql/codeql-cli-manual/database-analyze) базы данных codeql без каких-либо других запросов.
```

#### `--[no-]db-cluster`

Вместо создания отдельной базы данных создайте кластер баз данных для разных языков, каждый из которых является подкаталогом каталога, заданного в командной строке.

#### `-l, --language=<lang>[,<lang>...]`

Язык, который будет использоваться для анализа новой базы данных.

Используйте [кодеql resolve language](/ru/code-security/reference/code-scanning/codeql/codeql-cli-manual/resolve-languages) , чтобы получить список подключаемых средств извлечения языка, найденных в пути поиска.

```
          `--db-cluster` Если этот параметр задан, это может отображаться несколько раз или значение может быть разделенным запятыми списком языков.
```

Если этот параметр опущен, а исходный корень, который анализируется, является извлечением репозитория GitHub, cli CodeQL вызовет API GitHub для автоматического определения языков для анализа. Обратите внимание, что для этого необходимо предоставить маркер GitHub PAT в переменной среды GITHUB\_TOKEN или через стандартные входные данные с помощью `--github-auth-stdin` этого параметра.

#### `--build-mode=<mode>`

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

Выберите режим сборки на основе языка, который вы анализируете:

```
          `none`: база данных будет создана без создания корневого каталога источника.
```

Доступно для C#, Java, JavaScript/TypeScript, Python и Ruby.

```
          `autobuild`: база данных будет создана путем автоматической сборки корневого каталога источника. Доступно для C/C++, C#, Go, Java/Kotlin и Swift.

          `manual`: база данных будет создана путем создания корневого каталога источника с помощью команды сборки вручную. Доступно для C/C++, C#, Go, Java/Kotlin и Swift.
```

При создании базы данных с `--command`помощью не требуется дополнительно указывать "---build-mode" вручную.

Доступно с момента `v2.16.4`.

#### `--[no-]allow-missing-source-root`

```
          \[Дополнительно] Продолжить, даже если указанный корневой каталог источника не существует.
```

#### `--[no-]begin-tracing`

```
          \[Дополнительно] Создайте некоторые скрипты, которые можно использовать для настройки "косвенной трассировки сборки", которая позволяет интегрироваться в существующие рабочие процессы сборки, если явная команда сборки недоступна. Сведения о том, когда и как использовать эту функцию, см. в нашей документации по [AUTOTITLE](/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis).
```

### Базовые параметры вычисления

#### `--[no-]calculate-baseline`

```
          \[Дополнительно] Вычислите базовые сведения о анализируемом коде и добавьте его в базу данных. По умолчанию этот параметр включен, если корневой каталог источника не является корнем файловой системы. Этот флаг можно использовать для отключения или принудительного включения поведения даже в корне файловой системы.
```

#### `--[no-]sublanguage-file-coverage`

```
          \[GitHub.com и GitHub Enterprise Server версии 3.12.0+ используйте сведения о охвате вложенных файлов. Это вычисляет, отображает и экспортирует отдельные сведения о охвате файлов для языков, которые совместно используют средство извлечения CodeQL, такие как C и C++, Java и Kotlin, и JavaScript и TypeScript.
```

Доступно с момента `v2.15.2`.

### Параметры выбора средства извлечения

#### `--search-path=<dir>[:<dir>...]`

Список каталогов, в которых можно найти пакеты средств извлечения. Каталоги могут быть пакетами средств извлечения сами или каталоги, содержащие извлекатели в качестве непосредственных подкаталогов.

Если путь содержит несколько деревьев каталогов, их порядок определяет приоритет между ними: если целевой язык совпадает с несколькими деревьями каталогов, то один из первых выигрывает.

Средства извлечения, упакованные с цепочкой инструментов CodeQL, всегда будут найдены, но если вам нужно использовать отдельные распределенные извлекатели, необходимо предоставить этот параметр (или, еще лучше, настроить `--search-path` в файле конфигурации для каждого пользователя).

(Примечание. В Windows разделитель путей имеет значение `;`).

### Параметры настройки вызова API GitHub для автоматического обнаружения языков.

#### `-a, --github-auth-stdin`

Примите маркер GitHub Apps или личный маркер доступа с помощью стандартных входных данных.

Это переопределяет переменную среды токена GITHUB\_.

#### `-g, --github-url=<url>`

URL-адрес используемого экземпляра GitHub. Если опущено, интерфейс командной строки попытается выполнить автоматическое определение этого из пути извлечения и если это невозможно по умолчанию <https://github.com/>

### Параметры настройки диспетчера пакетов.

#### `--registries-auth-stdin`

Проверка подлинности в реестрах контейнеров GitHub Enterprise Server путем передачи \<registry\_url>=\<token> разделенного запятыми списка пар.

Например, можно передать `https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2`
для проверки подлинности на двух экземплярах GitHub Enterprise Server.

При этом переопределяются переменные среды маркера токена CODEQL\_И\_AUTH и GITHUB\_. Если вам нужно выполнить проверку подлинности только в реестре контейнеров github.com, можно вместо этого выполнить проверку подлинности с помощью более `--github-auth-stdin` простого параметра.

### Параметры настройки трассировки Windows

#### `--trace-process-name=<process-name>`

```
          \[Только Windows] При инициализации трассировки введите трассировщик в родительский процесс интерфейса командной строки CodeQL, имя которого соответствует этому аргументу. Если несколько родительских процессов имеют это имя, будет выбран один самый низкий в дереве обработки. Этот параметр переопределяется, поэтому при передаче обоих вариантов `--trace-process-level`будет использоваться только этот параметр.
```

#### `--trace-process-level=<process-level>`

```
          \[Только Windows] При инициализации трассировки вставляет трассировку этим многим родителям выше текущего процесса с 0, соответствующим процессу, вызываемому cli CodeQL. Поведение интерфейса командной строки по умолчанию, если никакие аргументы не передаются, являются внедрением в родительский элемент вызывающего процесса с некоторыми особыми случаями для GitHub Actions и Azure Pipelines.
```

### Параметры настройки непрямой трассировки сборки

#### `--no-tracing`

```
          \[Дополнительно] Не отслеживайте указанную команду, вместо этого используйте ее для создания всех необходимых данных напрямую.
```

#### `--extra-tracing-config=<tracing-config.lua>`

```
          \[Дополнительно] Путь к файлу конфигурации трассировки. Его можно использовать для изменения поведения трассировщика сборки. Его можно использовать для выбора процессов компилятора, которые выполняются в рамках команды сборки, и активировать выполнение других средств. Средства извлечения предоставляют файлы конфигурации трассировщика по умолчанию, которые должны работать в большинстве случаев.
```

### Параметры управления поведением средства извлечения: применяется только к среде косвенной трассировки.

#### `-O, --extractor-option=<extractor-option-name=value>`

Задайте параметры для средств извлечения CodeQL.
`extractor-option-name` должен иметь имя средства извлечения\_формы name.group1.group2.option\_или имя group1.group2.option\_. Если `extractor_option_name` начинается с имени средства извлечения, указанный метод извлечения должен объявить имя option group1.group2.option\_. В противном случае любой средство извлечения, объявляющее имя option group1.group2.option\_, будет иметь набор параметров.
`value` может быть любой строкой, которая не содержит новую строку.

Этот параметр командной строки можно использовать многократно для задания нескольких параметров извлечения. Если вы предоставляете несколько значений для одного и того же параметра извлечения, поведение зависит от типа, который ожидает параметр средства извлечения. Строковые параметры будут использовать последнее указанное значение. Параметры массива будут использовать все предоставленные значения в порядке. Параметры средства извлечения, указанные с помощью этого параметра командной строки, обрабатываются после использования `--extractor-options-file`параметров средства извлечения.

При передаче в базу данных codeql инициализации или `codeql database begin-tracing`параметры будут применяться только к среде косвенной трассировки. Если рабочий процесс также вызывает [команду](/ru/code-security/reference/code-scanning/codeql/codeql-cli-manual/database-trace-command) трассировки базы данных codeql, то при желании также необходимо передать параметры.

Дополнительные <https://codeql.github.com/docs/codeql-cli/extractor-options> сведения о параметрах средства извлечения CodeQL, включая перечисление параметров, объявленных каждым извлекателем.

#### `--extractor-options-file=<extractor-options-bundle-file>`

Укажите файлы пакета параметров извлечения. Файл пакета параметров извлечения — это JSON-файл (расширение) или YAML-файл (расширение `.json``.yaml` или`.yml`), который задает параметры средства извлечения. Файл должен иметь ключ карты верхнего уровня "extractor" и, под ним, имена средств извлечения в качестве ключей карты второго уровня. Дополнительные уровни карт представляют вложенные группы средств извлечения, а параметры строки и массива — это записи сопоставления со значениями строк и массивов.

Файлы пакета параметров извлечения считываются в указанном порядке.
Если разные файлы пакета параметров извлечения указывают один и тот же параметр извлечения, поведение зависит от типа, который ожидает параметр средства извлечения. Строковые параметры будут использовать последнее указанное значение. Параметры массива будут использовать все предоставленные значения в порядке. Параметры средства извлечения, указанные с помощью этого параметра командной строки, обрабатываются перед использованием `--extractor-option`параметров средства извлечения.

При передаче в базу данных codeql инициализации или `codeql database begin-tracing`параметры будут применяться только к среде косвенной трассировки. Если рабочий процесс также вызывает [команду](/ru/code-security/reference/code-scanning/codeql/codeql-cli-manual/database-trace-command) трассировки базы данных codeql, то при желании также необходимо передать параметры.

Дополнительные <https://codeql.github.com/docs/codeql-cli/extractor-options> сведения о параметрах средства извлечения CodeQL, включая перечисление параметров, объявленных каждым извлекателем.

### Распространенные параметры

#### `-h, --help`

Отображение этого текста справки.

#### `-J=<opt>`

```
          \[Дополнительно] Укажите параметр JVM, выполняя команду.
```

(Убедитесь, что параметры, содержащие пробелы, не будут обрабатываться правильно.)

#### `-v, --verbose`

Постепенно увеличьте число отображаемых сообщений о ходе выполнения.

#### `-q, --quiet`

Постепенно уменьшайте количество отображаемых сообщений о ходе выполнения.

#### `--verbosity=<level>`

```
          \[Дополнительно] Явным образом задайте уровень детализации на одну из ошибок, предупреждений, хода выполнения, хода выполнения+, хода выполнения++, хода выполнения+++. Переопределяет `-v` и `-q`.
```

#### `--logdir=<dir>`

```
          \[Дополнительно] Запись подробных журналов в один или несколько файлов в указанном каталоге с созданными именами, включающими метки времени и имя выполняющегося подкоманда.
```

(Чтобы записать файл журнала с именем, над которым у вас есть полный контроль, вместо этого предоставьте `--log-to-stderr` и перенаправите stderr по мере необходимости.)

#### `--common-caches=<dir>`

```
          \[Дополнительно] Управляет расположением кэшированных данных на диске, которые будут сохраняться между несколькими запусками интерфейса командной строки, такими как скачанные пакеты QL и скомпилированные планы запросов. Если этот параметр не задан явным образом, по умолчанию используется каталог с именем `.codeql` в домашнем каталоге пользователя; он будет создан, если он еще не существует.
```

Доступно с момента `v2.15.2`.