Skip to main content

результаты интерпретации базы данных

[Сантехника] Интерпретируйте результаты вычисленного запроса в значимые форматы, такие как SARIF или CSV.

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

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

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

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

Краткий обзор

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

Повторите спецификацию того, какие запросы были выполнены здесь.

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

(В будущей версии это можно будет опустить и интерпретировать все результаты, найденные в базе данных. Это славное будущее еще не существует. К сожалению.)

--format=<format>

[Обязательный] Формат, в котором записываются результаты. Одно из двух значений:

csv: форматированные значения, разделенные запятыми, включая столбцы с метаданными правил и оповещений.

sarif-latest: формат обмена результатами статического анализа (SARIF), основанный на JSON для описания результатов статического анализа. Этот параметр форматирования использует самую последнюю поддерживаемую версию (2.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)

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

Это переопределяет переменные среды AUTH CODEQL_REGISTRIES_и токена GITHUB_. Если вам нужно пройти проверку подлинности только в реестре контейнеров 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>

[Дополнительно] Предоставьте параметр виртуальной машине Java, запустив команду .

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

-v, --verbose

Добавочное увеличение числа выводемых сообщений о ходе выполнения.

-q, --quiet

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

--verbosity=<level>

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

--logdir=<dir>

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

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