Skip to main content

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

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

Кто может использовать эту функцию?

GitHub CodeQL лицензируется на основе каждого пользователя при установке. Вы можете использовать CodeQL только для определенных задач в соответствии с ограничениями лицензии. Дополнительные сведения см. в разделе Сведения о интерфейсе командной строки CodeQL.

Если у вас есть лицензия GitHub Advanced Security, можно использовать CodeQL для автоматического анализа, непрерывной интеграции и непрерывной доставки. Дополнительные сведения см. в разделе Сведения о GitHub Advanced Security.

Это содержимое описывает последний выпуск данных CodeQL CLI. Дополнительные сведения об этом выпуске см. в статье https://github.com/github/codeql-cli-binaries/releases.

Чтобы просмотреть сведения о параметрах, доступных для этой команды в предыдущем выпуске, выполните команду с --help параметром в терминале.

Краткие сведения

Shell
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, но готова к выполнению шагов извлечения. После завершения этой команды выполните одну или несколько команд трассировки базы данных codeql, за которым следует завершение базы данных codeql, чтобы подготовить базу данных для запроса.

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

Параметры

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

<database>

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

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

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

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

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

--[no-]overwrite

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

--codescanning-config=<file>

[Дополнительно] Чтение файла конфигурации сканирования кода, указывающего параметры создания баз данных CodeQL и запросов для выполнения в последующих шагах. Дополнительные сведения о формате этого файла конфигурации см. в разделе AUTOTITLE. Чтобы выполнить запросы из этого файла на следующем шаге, вызовите анализ базы данных codeql без каких-либо других запросов.

--[no-]db-cluster

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

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

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

Используйте кодеql resolve language , чтобы получить список подключаемых средств извлечения языка, найденных в пути поиска.

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

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

--build-mode=<mode>

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

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

none: база данных будет создана без создания корневого каталога источника. Доступно для JavaScript/TypeScript, Python и Ruby. Также доступно в бета-версии для Java.

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

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

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

--[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. Если опущено, интерфейс командной строки попытается выполнить автоматическое определение этого из пути проверка out, и если это невозможно по умолчанию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параметры будут применяться только к среде косвенной трассировки. Если рабочий процесс также вызывает команду трассировки базы данных 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параметры будут применяться только к среде косвенной трассировки. Если рабочий процесс также вызывает команду трассировки базы данных 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.