В этом материале описывается последний выпуск Интерфейса командной строки CodeQL. Дополнительные сведения об этом выпуске см. в разделе https://github.com/github/codeql-cli-binaries/releases.
Чтобы просмотреть сведения о параметрах, доступных для этой команды в более раннем выпуске, выполните команду с параметром в терминале --help
.
Краткий обзор
codeql database interpret-results --format=<format> --output=<output> [--threads=<num>] <options>... -- <database> <file|dir|suite>...
Описание
[Сантехника] Интерпретируйте результаты вычисляемых запросов в значимых форматах, таких как SARIF или CSV.
Результаты должны быть вычислены и сохранены в каталоге базы данных CodeQL с помощью командлетов run-queries базы данных codeql. (Обычно эти действия необходимо выполнять вместе с помощью анализа базы данных codeql.
Основные параметры
<database>
[Обязательно] Путь к базе данных CodeQL, которая была запрошена.
<filesuite>...
Повторите спецификацию того, какие запросы выполнялись здесь.
Если этот параметр опущен, cli определит подходящий набор запросов, используя ту же логику, что и run-queries базы данных codeql.
(В будущей версии это можно будет опустить и вместо этого интерпретировать все результаты, найденные в базе данных. Этого славного будущего еще нет. Извините.)
--format=<format>
[Обязательно] Формат, в котором записываются результаты. Одно из двух значений:
csv
: отформатированные значения, разделенные запятыми, включая столбцы с метаданными правил и оповещений.
sarif-latest
: формат обмена результатами статического анализа (SARIF), формат на основе JSON для описания результатов статического анализа. Этот параметр форматирования использует последнюю поддерживаемую версию (v2.1.0). Этот параметр не подходит для использования в автоматизации, так как он создает разные версии SARIF в разных версиях CodeQL.
sarifv2.1.0
: SARIF версии 2.1.0.
graphtext
: текстовый формат, представляющий граф. Совместим только с запросами с @kind графом.
dgml
: язык разметки графа, основанный на XML-формате для описания графов. Совместим только с запросами с @kind графом.
dot
: язык Graphviz DOT, текстовый формат для описания графов.
Совместим только с запросами с @kind графом.
-o, --output=<output>
[Обязательный] Выходной путь для записи результатов. Для форматов графа это должен быть каталог, и результат (или результаты, если эта команда поддерживает интерпретацию нескольких запросов) будут записаны в этом каталоге.
--max-paths=<maxPaths>
Максимальное количество путей для каждого оповещения с путями. (По умолчанию: 4)
--[no-]sarif-add-file-contents
[Только форматы SARIF] Включите полное содержимое файлов для всех файлов, на которые ссылается хотя бы один результат.
--[no-]sarif-add-snippets
[Только форматы SARIF] Включите фрагменты кода для каждого расположения, указанного в результатах, с двумя строками контекста до и после указанного расположения.
--[no-]sarif-add-query-help
[Только форматы SARIF] Включите справку по запросу Markdown в результаты. Она загружает справку по запросу для /path/to/query.ql из файла /path/to/query.md. Этот параметр не действует при передаче в codeql bqrs interpret.
--[no-]sarif-group-rules-by-pack
[Только форматы SARIF] Поместите объект правила для каждого запроса в соответствующем пакете QL в свойстве <run>.tool.extensions
. Этот параметр не действует при передаче в codeql bqrs interpret.
--[no-]sarif-multicause-markdown
[Только форматы SARIF] Для оповещений, которые имеют несколько причин, включите их в виде элементализированного списка в формате Markdown в выходные данные в дополнение к обычной строке.
--no-group-results
[Только в форматах SARIF] Создает один результат для каждого сообщения, а не один результат для уникального расположения.
--csv-location-format=<csvLocationFormat>
Формат, в котором создаются расположения в выходных данных CSV. Один из: URI, line-column, offset-length. (По умолчанию: line-column)
--dot-location-url-format=<dotLocationUrlFormat>
Строка формата, определяющая формат, в котором будут создаваться URL-адреса расположения файлов в выходных данных DOT. Следующие заполнители мест можно использовать {path} {start:line} {start:column} {end:line} {end:column}, {offset}, {length}
--sarif-category=<category>
[Только форматы SARIF] Укажите категорию для этого анализа, включаемую в выходные данные SARIF. Категорию можно использовать для различения нескольких анализов, выполняемых в одной фиксации и репозитории, но на разных языках или в разных частях кода.
Если вы анализируете одну и ту же версию базы кода несколькими разными способами (например, для разных языков) и отправляете результаты в GitHub для представления в разделе "Сканирование кода", это значение должно отличаться в каждом анализе, что указывает, что анализ дополняет, а не заменяет друг друга. (Значения должны быть согласованными при выполнении одного и того же анализа для разных версий базы кода.)
Это значение будет отображаться (с добавлением косой черты в конце, если ее еще нет) в качестве свойства <run>.automationId
в SARIF v1, свойства <run>.automationLogicalId
в SARIF v2 и свойства <run>.automationDetails.id
в SARIF v2.1.0.
-j, --threads=<num>
Количество потоков, используемых для вычислительных путей.
По умолчанию равен 1. Вы можете передать 0, чтобы использовать один поток на каждое ядро на компьютере, или -N , чтобы оставить N ядер неиспользуемых (за исключением использования по крайней мере одного потока).
--[no-]print-diagnostics-summary
Вывод сводки проанализированных диагностика в стандартные выходные данные.
--[no-]print-metrics-summary
Вывод сводки по проанализированным метрикам в стандартные выходные данные.
--[no-]print-baseline-loc
Вывод базовых строк кода, отсчитываемых в стандартные выходные данные.
Параметры настройки диспетчера пакетов CodeQL
--registries-auth-stdin
Выполните проверку подлинности в реестрах контейнеров GitHub Enterprise Server, передав список \<registry_url>=\
Например, можно передать https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2
для проверки подлинности в двух экземплярах GitHub Enterprise Server.
Это переопределяет переменные среды CODEQL_REGISTRIES_AUTH и GITHUB_TOKEN. Если вам нужно пройти проверку подлинности только в реестре контейнеров github.com, можно использовать более простой --github-auth-stdin
вариант.
--github-auth-stdin
Выполните проверку подлинности в реестре контейнеров github.com, передав github.com маркер GitHub Apps или личный маркер доступа через стандартные входные данные.
Чтобы пройти проверку подлинности в реестрах контейнеров GitHub Enterprise Server, передайте --registries-auth-stdin
или используйте переменную среды CODEQL_REGISTRIES_AUTH.
Это переопределяет переменную среды GITHUB_TOKEN.
Параметры для поиска пакетов QL (которые могут потребоваться для интерпретации наборов запросов)
--search-path=<dir>[:<dir>...]
Список каталогов, в которых можно найти пакеты QL. Каждый каталог может быть либо пакетом QL (или пакетом пакетов, .codeqlmanifest.json
содержащим файл в корне), либо непосредственным родительским элементом одного или нескольких таких каталогов.
Если путь содержит несколько каталогов, их порядок определяет приоритет между ними: если имя пакета, которое должно быть разрешено, сопоставляется в нескольких деревьях каталогов, то побеждает первое.
Указание на это при извлечении репозитория CodeQL с открытым кодом должно работать при запросе одного из языков, которые там живут.
Если вы извлекли репозиторий CodeQL как одноуровневый элемент неупакованной цепочки инструментов CodeQL, вам не нужно предоставлять этот параметр. в таких одноуровневых каталогах всегда будет выполняться поиск пакетов QL, которые не могут быть найдены в противном случае. (Если это значение по умолчанию не работает, настоятельно рекомендуется настроить --search-path
один раз и для всех в файле конфигурации для каждого пользователя.
(Примечание. В Windows разделителем пути является ;
).
--additional-packs=<dir>[:<dir>...]
Если указан этот список каталогов, в них будет выполняться поиск пакетов перед каталогами в --search-path
. Порядок между ними не имеет значения; Это ошибка, если имя пакета найдено в двух разных местах в этом списке.
Это полезно, если вы временно разрабатываете новую версию пакета, которая также отображается в пути по умолчанию. С другой стороны, не рекомендуется переопределять этот параметр в файле конфигурации; некоторые внутренние действия добавляют этот параметр на лету, переопределяя любое настроенное значение.
(Примечание. В Windows разделителем пути является ;
).
Общие параметры
-h, --help
Показать этот текст справки.
-J=<opt>
[Дополнительно] Предоставьте параметр виртуальной машине JVM, выполняющую команду .
(Остерегайтесь, что параметры, содержащие пробелы, будут обрабатываться неправильно.)
-v, --verbose
Постепенно увеличивайте количество выводемых сообщений о ходе выполнения.
-q, --quiet
Постепенно уменьшайте количество выводемых сообщений о ходе выполнения.
--verbosity=<level>
[Дополнительно] Явно задайте уровень детализации для одной из ошибок, предупреждений, progress, progress+, progress++, progress+++. Переопределяет -v
и -q
.
--logdir=<dir>
[Дополнительно] Запись подробных журналов в один или несколько файлов в указанном каталоге с созданными именами, включающими метки времени и имя выполняющейся подкоманды.
(Чтобы записать файл журнала с именем, над которым у вас есть полный контроль, вместо этого при необходимости предоставьте --log-to-stderr
и перенаправьте stderr.)