После анализа базы данных CodeQL с помощью CodeQL CLIу вас будет ФАЙЛ SARIF, содержащий результаты. Затем можно использовать CodeQL CLI для отправки результатов в GitHub.
Если вы использовали метод, отличный от метода CodeQL CLI для создания результатов, можно использовать другие методы отправки. Дополнительные сведения см. в разделе AUTOTITLE.
Создание маркера для проверки подлинности с помощью GitHub
Прежде чем отправлять результаты в GitHub, сначала необходимо создать personal access token. См . раздел AUTOTITLE.
- Personal access token (classic) требуется "Code scanning оповещений" доступ на чтение и запись для необходимых репозиториев.
- Fine-grained personal access token требуется доступ к репозиторию security_events .
Если вы установили CodeQL CLI в сторонней CI-системе, вы также можете использовать GitHub App для загрузки результатов в GitHub. См . раздел AUTOTITLE.
Отправка результатов в GitHub
-
Проверьте, что свойства SARIF имеют поддерживаемый размер для загрузки и совместим ли файл с сканированием кода. Дополнительные сведения см. в разделе AUTOTITLE.
-
Определите лучший способ передачи GitHub App или personal access token, созданного в предыдущем разделе, в CodeQL CLI. Рекомендуется проанализировать руководство по использованию системы CI для безопасного использования хранилища секретов. CodeQL CLI поддерживает следующие действия:
- Взаимодействие с хранилищем секретов с помощью параметра (рекомендуется).
- Сохранение секрета в переменной среды и запуск интерфейса командной строки без включения параметра .
- Для тестирования можно передать параметр командной строки и предоставить временный маркер с помощью стандартных входных данных.
-
Если вы решили использовать наиболее безопасный и надежный метод конфигурации, запустите каждый файл результатов SARIF и включите , если маркер не доступен в переменной среды.
# GitHub App or personal access token available from a secret store <call-to-retrieve-secret> | codeql github upload-results \ --repository=<repository-name> \ --ref=<ref> --commit=<commit> \ --sarif=<file> --github-auth-stdin # GitHub App or personal access token available in GITHUB_TOKEN codeql github upload-results \ --repository=<repository-name> \ --ref=<ref> --commit=<commit> \ --sarif=<file>
| Вариант | Обязательно | Usage |
|---|---|---|
--repository | Укажите ВЛАДЕЛЬЦА/ИМЯ репозитория, в который будут отправлены данные. Владелец должен быть организацией внутри предприятия или на плане GitHub Team , с GitHub Code Security включен для репозитория, если репозиторий не является общедоступным. Дополнительные сведения см. в разделе AUTOTITLE. | |
--ref | Укажите имя извлеченного и проанализированного , чтобы результаты можно было сопоставить с правильным кодом. Для ветки используйте: , для фиксации заголовка запроса на вытягивание используйте или для созданной GitHub фиксации слияния запроса на вытягивание используйте . | |
--commit | Укажите полный SHA для проанализированной фиксации. | |
--sarif | Укажите файл SARIF для загрузки. | |
--github-auth-stdin | Передайте интерфейс командной строки GitHub App или personal access token, созданные для проверки подлинности с помощью REST API GitHubиз хранилища секретов с помощью стандартных входных данных. Это не требуется, если команда имеет доступ к переменной среды , заданной с помощью этого маркера. |
Дополнительные сведения см. в разделе AUTOTITLE.
Примечание.
Если вы проанализировали несколько данных CodeQL базы данных для одной фиксации, необходимо указать категорию SARIF для каждого набора результатов, созданных этой командой. При отправке результатов в GitHubcode scanning использует эту категорию для хранения результатов для каждого языка отдельно. Если вы забыли это сделать, то при каждой отправке будут перезаписаны предыдущие результаты. Дополнительные сведения см. в разделе AUTOTITLE.
Базовый пример отправки результатов в GitHub
В следующем примере передаются результаты из ФАЙЛА SARIF в репозиторий . Для API code scanning сообщается, что результаты необходимы для фиксации в ветви . В примере предполагается, что GitHub App или personal access token, созданных для проверки подлинности с помощью REST API GitHub, использует переменную среды.
codeql github upload-results \
--repository=my-org/example-repo \
--ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \
--sarif=/temp/example-repo-js.sarif
Эта команда ничего не выводит, если загрузка не удалась. Командная строка возвращается после завершения загрузки и начала обработки данных. В небольших базах кода вы сможете просматривать оповещения code scanning в GitHub вскоре после этого. Вы можете видеть оповещения прямо в pull request или на вкладке Security для ветвей, в зависимости от кода, который вы взяли.
Отправка диагностических сведений в GitHub в случае сбоя анализа
Когда CodeQL CLI успешно завершает анализ базы данных, она собирает диагностические сведения, такие как покрытие файлов, предупреждения и ошибки, и включает его в ФАЙЛ SARIF с результатами. При отправке ФАЙЛА SARIF в GitHub диагностические сведения отображаются на code scanning Страница состояния средства для репозитория, чтобы сделать его простым, чтобы узнать, насколько хорошо CodeQL работает и отлаживать любые проблемы. Дополнительные сведения см. в разделе AUTOTITLE.
Однако, если файл SARIF не удается отправить в GitHub и диагностические данные не отображаются на code scanning Страница состояния средства для репозитория. Это затрудняет для пользователей устранение неполадок, если у них нет доступа к файлам журналов в системе CI.
Рекомендуется настроить рабочий процесс CI для экспорта и отправки диагностических сведений в GitHub при сбое анализа. Это можно сделать с помощью следующих простых команд для экспорта диагностических сведений и отправки его в GitHub.
Экспорт диагностических сведений при сбое анализа
Вы можете создать ФАЙЛ SARIF для неработоспособных анализов с помощью AUTOTITLE, например:
$ codeql database export-diagnostics codeql-dbs/example-repo \
--sarif-category=javascript-typescript --format=sarif-latest \
--output=/temp/example-repo-js.sarif
Этот ФАЙЛ SARIF будет содержать диагностические сведения для неудающегося анализа, включая сведения о охвате файлов, предупреждения и ошибки, созданные во время анализа.
Отправка диагностических сведений при сбое анализа
Эти диагностические сведения можно сделать доступными для Страница состояния средства путем отправки ФАЙЛА SARIF в GitHub с помощью AUTOTITLE, например:
codeql github upload-results \
--repository=my-org/example-repo \
--ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \
--sarif=/temp/example-repo-js.sarif
Это то же самое, что и процесс отправки SARIF-файлов из успешного анализа.