Skip to main content

Enterprise Server 3.15 в настоящее время доступен в качестве кандидата на выпуск.

создание базы данных

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

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

CodeQL доступен для следующих типов репозитория:

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

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

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

Shell
codeql database create [--language=<lang>[,<lang>...]] [--github-auth-stdin] [--github-url=<url>] [--source-root=<dir>] [--threads=<num>] [--ram=<MB>] [--command=<command>] [--extractor-option=<extractor-option-name=value>] <options>... -- <database>

Description

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

Параметры

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

<database>

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

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

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

--[no-]overwrite

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

--[no-]force-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: база данных будет создана без создания корневого каталога источника. Доступно для 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.

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

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

-j, --threads=<num>

Используйте это множество потоков для операции импорта и передайте его в качестве указания любой вызываемой команды сборки.

По умолчанию равен 1. Вы можете передать 0 для использования одного потока на ядро на компьютере или -N, чтобы оставить неиспользуемые ядра N (за исключением того, что по-прежнему используется хотя бы один поток).

-M, --ram=<MB>

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

-c, --command=<command>

Для скомпилированных языков команды сборки, которые вызывают компилятора в исходном коде для анализа. Эти команды будут выполняться в среде инструментирования, которая позволяет анализировать созданный код и (в некоторых случаях) стандартные библиотеки.

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

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

--no-cleanup

[Дополнительно] Отключить очистку всех баз данных после завершения. Полезно для отладки.

--no-pre-finalize

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

--[no-]skip-empty

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

--[no-]linkage-aware-import

[Дополнительно] Определяет, поддерживается ли импорт набора данных codeql с учетом компоновки (по умолчанию). В проектах, где эта часть создания базы данных потребляет слишком много памяти, отключение этого параметра может помочь им выполняться за счет полноты базы данных.

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

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

--[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 простого параметра.

Параметры очистки набора данных низкого уровня

--max-disk-cache=<MB>

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

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

--min-disk-free=<MB>

[Дополнительно] Задайте целевой объем свободного места в файловой системе.

Если --max-disk-cache это не задано, средство оценки попытается ограничить использование кэша дисков, если свободное место в файловой системе снижается ниже этого значения.

--min-disk-free-pct=<pct>

[Дополнительно] Задайте целевую долю свободного места в файловой системе.

Если --max-disk-cache это не задано, средство оценки попытается ограничить использование кэша дисков, если свободное место в файловой системе снижается ниже этого процента.

--cache-cleanup=<mode>

Выберите, как агрессивно обрезать кэш. В число вариантов входят следующие варианты:

clear: удалите весь кэш, обрезая состояние недавно извлеченного набора данных.

trim(по умолчанию): обрезать все, кроме явно кэшированных предикатов.

fit: просто убедитесь, что определенные ограничения размера кэша дисков наблюдаются, удаляя столько промежуточных, сколько необходимо.

--cleanup-upgrade-backups

Удалите все каталоги резервных копий из-за обновлений базы данных.

Параметры трассировки

--no-tracing

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

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

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

Параметры настройки команды сборки

--working-dir=<dir>

[Дополнительно] Каталог, в котором должна выполняться указанная команда. Если этот аргумент не указан, команда выполняется в значении, переданном --source-root в создание базы данных codeql, если она существует. Если аргумент не --source-root указан, команда выполняется в текущем рабочем каталоге.

--no-run-unnecessary-builds

[Дополнительно] Выполните только указанные команды сборки, если в базе данных в процессе сборки используется средство извлечения, зависящее от трассировки процесса сборки. Если этот параметр не задан, команда будет выполнена даже в том случае, если CodeQL не нужен, предположим, что вам нужны побочные эффекты по другим причинам.

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

-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.