В этом материале описывается последний выпуск Интерфейса командной строки CodeQL. Дополнительные сведения об этом выпуске см. в разделе https://github.com/github/codeql-cli-binaries/releases.
Чтобы просмотреть сведения о параметрах, доступных для этой команды в более раннем выпуске, выполните команду с параметром в терминале --help .
Краткий обзор
codeql database create [--language=<lang>[,<lang>...]] [--github-auth-stdin] [--github-url=<url>] [--source-root=<dir>] [--threads=<num>] [--ram=<MB>] [--command=<command>] [--mode=<mode>] [--extractor-option=<extractor-option-name=value>] <options>... -- <database>Описание
Создайте базу данных CodeQL для дерева источника, которое можно проанализировать с помощью одного из продуктов CodeQL.
Основные параметры
<database>
[Обязательный] Путь к создаваемой базе данных CodeQL. Этот каталог будет создан и не должен существовать (но его родительский каталог должен существовать).
--db-cluster Если параметр задан, это будет не сама база данных, а каталог, который будет содержать базы данных для нескольких языков, созданных из одного корня источника.
Важно, чтобы этот каталог не был в расположении, в которое будет мешать процессу сборки. Например, target каталог проекта Maven не будет подходящим выбором.
--[no-]overwrite
[Дополнительно] Если база данных уже существует, удалите ее и выполните эту команду вместо сбоя. Этот параметр следует использовать с осторожностью, так как он может рекурсивно удалить весь каталог базы данных.
--codescanning-config=<file>
[Дополнительно. Чтение файла конфигурации сканирования кода с указанием параметров создания баз данных CodeQL и запросов для выполнения на последующих шагах. Дополнительные сведения о формате этого файла конфигурации см. в статье Настройка сканирования кода. Чтобы выполнить запросы из этого файла на более позднем этапе, вызовите анализ базы данных codeql без указания других запросов.
--[no-]db-cluster
Вместо создания отдельной базы данных создайте "кластер" баз данных для разных языков, каждый из которых является подкаталогом каталога, заданного в командной строке.
-l, --language=<lang>[,<lang>...]
Язык, который будет использоваться для анализа новой базы данных.
Используйте языки разрешения codeql , чтобы получить список подключаемых средств извлечения языков, найденных в пути поиска.
--db-cluster Если задан параметр, он может отображаться несколько раз, или значение может быть разделенным запятыми списком языков.
Если этот параметр опущен, а анализируемый корень источника является извлечением репозитория GitHub, cli CodeQL выполнит вызов API GitHub, чтобы попытаться автоматически определить, какие языки следует анализировать. Обратите внимание, что для этого маркер GitHub PAT должен быть предоставлен либо в переменной среды GITHUB_TOKEN, либо через стандартные входные данные с помощью --github-auth-stdin параметра .
--[no-]calculate-baseline
[Дополнительно] Вычислите базовые сведения об анализируемом коде и добавьте его в базу данных. По умолчанию этот параметр включен, если только корень источника не является корнем файловой системы. Этот флаг можно использовать для отключения или принудительного включения поведения даже в корневой папке файловой системы.
-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
[Дополнительно] Выводит предупреждение вместо сбоя, если база данных пуста, так как во время сборки исходный код не отображается. Пустая база данных останется неопределенной.
Параметры выбора средства извлечения
--search-path=<dir>[:<dir>...]
Список каталогов, в которых можно найти пакеты средств извлечения. Каталоги могут быть либо самими пакетами средств извлечения, либо каталогами, содержащими средства извлечения в качестве непосредственных подкаталогов.
Если путь содержит несколько деревьев каталогов, их порядок определяет приоритет между ними: если целевой язык совпадает в нескольких деревьях каталогов, то первое из них выигрывает.
Средства извлечения, в комплекте с самой цепочкой инструментов CodeQL, всегда будут найдены, но если необходимо использовать отдельно распределенные средства извлечения, необходимо предоставить этот параметр (или, что еще лучше, настроить --search-path в файле конфигурации для каждого пользователя).
(Примечание. В Windows разделитель пути — ).;
Параметры для настройки вызова API GitHub для автоматического определения языков.
-a, --github-auth-stdin
Примите маркер GitHub Apps или личный маркер доступа через стандартные входные данные.
Это переопределяет переменную среды GITHUB_TOKEN.
-g, --github-url=<url>
URL-адрес используемого экземпляра GitHub. Если этот параметр опущен, cli попытается автоматически определить этот параметр из пути оформления заказа. Если это невозможно, по умолчанию используется значение https://github.com/
Параметры для настройки диспетчера пакетов.
--registries-auth-stdin
Выполните проверку подлинности в реестрах контейнеров GitHub Enterprise Server, передав список пар, \<registry_url>=\
Например, можно передать "https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2" для проверки подлинности в два экземпляра GitHub Enterprise Server.
Это переопределяет переменные среды AUTH CODEQL_REGISTRIES_и токена 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 значение не задано, средство оценки попытается ограничить использование кэша диска, если свободное пространство в файловой системе будет меньше этого процента.
-m, --mode=<mode>
Выберите, как агрессивно обрезать кэш. Можно выбрать:
brutal: удаление всего кэша с обрезкой до состояния только что извлеченного набора данных.
normal(по умолчанию): обрезка всех предикатов, кроме явно кэшированных предикатов.
light: просто убедитесь, что определенные ограничения размера кэша диска соблюдаются, удаляя столько промежуточных параметров, сколько необходимо.
--cleanup-upgrade-backups
Удалите все каталоги резервного копирования, полученные в результате обновления базы данных.
Параметры трассировки
--no-tracing
[Дополнительно. Не отслеживайте указанную команду, а полагайтесь на нее для получения всех необходимых данных напрямую.
--extra-tracing-config=<tracing-config.lua>
[Дополнительно] Путь к файлу конфигурации трассировки. Его можно использовать для изменения поведения трассировки сборки. Его можно использовать для выбора процессов компилятора, которые выполняются в рамках команды сборки, и запуска выполнения других средств. Средства извлечения предоставляют файлы конфигурации трассировки по умолчанию, которые должны работать в большинстве ситуаций.
Параметры настройки команды сборки
--working-dir=<dir>
[Дополнительно] Каталог, в котором должна выполняться указанная команда. Если этот аргумент не указан, команда выполняется в значении , переданном --source-root в codeql database create, если оно существует. Если аргумент не --source-root указан, команда выполняется в текущем рабочем каталоге.
--no-run-unnecessary-builds
[Дополнительно. Выполнение указанных команд сборки выполняется только в том случае, если в строящихся базах данных используется средство извлечения, зависящее от трассировки процесса сборки. Если этот параметр не задан, команда будет выполняться даже в том случае, если она не требуется CodeQL, исходя из предположения, что ее побочные эффекты нужны по другим причинам.
Параметры для управления поведением средства извлечения
-O, --extractor-option=<extractor-option-name=value>
Задайте параметры для средств извлечения CodeQL. extractor-option-name значение должно иметь имя средства извлечения_формы.group1.group2.option_name или group1.group2.option_name. Если extractor_option_name начинается с имени средства извлечения, указанный метод извлечения должен объявить имя параметра group1.group2.option_. В противном случае для любого средства извлечения, объявляющего имя параметра group1.group2.option_, будет задан параметр . value может быть любой строкой, которая не содержит новую строку.
Этот параметр командной строки можно использовать несколько раз, чтобы задать несколько параметров средства извлечения. При указании нескольких значений для одного и того же параметра средства извлечения поведение зависит от типа, ожидаемого параметром средства извлечения. Строковые параметры будут использовать последнее указанное значение. Параметры массива будут использовать все указанные значения по порядку. Параметры средства извлечения, указанные с помощью этого параметра командной строки, обрабатываются после параметров средства извлечения, заданных с помощью --extractor-options-file.
При передаче в инициализацию базы данных codeql или codeql database begin-tracingпараметры будут применяться только к среде косвенной трассировки. Если рабочий процесс также вызывает команду trace-command базы данных codeql , при необходимости необходимо передать в нее параметры.
См https://codeql.github.com/docs/codeql-cli/extractor-options . дополнительные сведения о параметрах средства извлечения CodeQL, в том числе о том, как вывести список параметров, объявленных каждым из средств извлечения.
--extractor-options-file=<extractor-options-bundle-file>
Укажите файлы пакетов параметров извлечения. Файл пакета параметров извлечения — это JSON-файл (расширение .json) или YAML-файл (расширение .yaml или .yml), который задает параметры средства извлечения. Файл должен иметь ключ карты верхнего уровня "extractor" и, под ним, имена средств извлечения в виде ключей карты второго уровня. Дополнительные уровни карт представляют вложенные группы средств извлечения, а параметры строки и массива — это записи карты со значениями строк и массивов.
Файлы пакета параметров извлечения считываются в указанном порядке.
Если разные файлы пакета параметров извлечения указывают один и тот же параметр средства извлечения, поведение зависит от типа, который ожидает параметр средства извлечения. В параметрах строки будет использоваться последнее указанное значение. Параметры массива будут использовать все указанные значения по порядку. Параметры средства извлечения, указанные с помощью этого параметра командной строки, обрабатываются до того, как параметры средства извлечения предоставляются с помощью --extractor-option.
При передаче в инициализацию базы данных codeql или codeql database begin-tracingпараметры будут применяться только к непрямой среде трассировки. Если рабочий процесс также вызывает команду trace-command базы данных codeql , при необходимости необходимо передать туда параметры.
Дополнительные https://codeql.github.com/docs/codeql-cli/extractor-options сведения о параметрах средства извлечения CodeQL, в том числе о том, как вывести список параметров, объявленных каждым методом извлечения.
Общие параметры
-h, --help
Показать этот текст справки.
-J=<opt>
[Дополнительно] Предоставьте параметр виртуальной машине JVM, выполняющую команду .
(Остерегайтесь, что параметры, содержащие пробелы, будут обрабатываться неправильно.)
-v, --verbose
Постепенно увеличивайте количество выводемых сообщений о ходе выполнения.
-q, --quiet
Постепенно уменьшайте количество выводемых сообщений о ходе выполнения.
--verbosity=<level>
[Дополнительно] Явно задайте уровень детализации для одной из ошибок, предупреждений, progress, progress+, progress++, progress+++. Переопределяет -v и -q.
--logdir=<dir>
[Дополнительно] Запись подробных журналов в один или несколько файлов в указанном каталоге с созданными именами, включающими метки времени и имя выполняющейся подкоманды.
(Чтобы записать файл журнала с именем, над которым у вас есть полный контроль, вместо этого при необходимости предоставьте --log-to-stderr и перенаправьте stderr.)