После анализа CodeQL базы данных с CodeQL CLIпомощью , вы получите SARIF-файл с результатами. Затем вы можете загрузить CodeQL CLI результаты в GitHub.
Если вы использовали другой CodeQL CLI метод для получения результатов, можно использовать и другие методы загрузки. Дополнительные сведения см. в разделе Отправка файла SARIF в GitHub.
Генерация токена для аутентификации с помощью GitHub
Прежде чем загрузить результаты в GitHub, сначала нужно сгенерировать personal access token. См . раздел AUTOTITLE.
-
** Personal access token (classic) ** требуется доступ к «Code scanning оповещениям» для **чтения и записи** для необходимых репозиториев. -
** Fine-grained personal access token ** Требуется «репозитория **» security_events** доступ.
Если вы установили CodeQL CLI их в сторонней системе CI, вы также можете использовать GitHub App a для загрузки результатов в GitHub. См . раздел AUTOTITLE.
Загрузка результатов в GitHub
-
Проверьте, что свойства SARIF имеют поддерживаемый размер для загрузки и совместим ли файл с сканированием кода. Дополнительные сведения см. в разделе Поддержка SARIF для проверки кода.
-
Определите лучший способ передать GitHub App или personal access token вы создали в предыдущем разделе в CodeQL CLI. Рекомендуется проанализировать руководство по использованию системы CI для безопасного использования хранилища секретов. Поддержки CodeQL CLI :
- Взаимодействие с хранилищем секретов с помощью
--github-auth-stdinпараметра (рекомендуется). - Сохранение секрета в переменной среды
GITHUB_TOKENи запуск интерфейса командной строки без включения параметра--github-auth-stdin. - Для тестирования можно передать
--github-auth-stdinпараметр командной строки и предоставить временный маркер с помощью стандартных входных данных.
- Взаимодействие с хранилищем секретов с помощью
-
Если вы решили использовать наиболее безопасный и надежный метод конфигурации, запустите
codeql github upload-resultsкаждый файл результатов SARIF и включите--github-auth-stdin, если маркер не доступен в переменнойGITHUB_TOKENсреды.# 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-url=<URL> \ --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> --github-url=<URL> \
| Вариант | Обязательно | Usage |
|---|---|---|
--repository | Укажите ВЛАДЕЛЬЦА/ИМЯ репозитория, в который будут отправлены данные. Владелец должен быть с GitHub Advanced Security возможностью репозитория. Дополнительные сведения см. в разделе Управление параметрами безопасности и анализа для репозитория. | |
--ref | Укажите имя извлеченного и проанализированного ref, чтобы результаты можно было сопоставить с правильным кодом. Для использования ветвления: refs/heads/BRANCH-NAME, для главного коммита pull-запроса используйте refs/pull/NUMBER/head, или для -сгенерированного GitHubкоммита слияния pull-запроса используйте refs/pull/NUMBER/merge. | |
--commit | Укажите полный SHA для проанализированной фиксации. | |
--sarif | Укажите файл SARIF для загрузки. | |
--github-url | Укажите URL для экземпляр GitHub Enterprise Server. | |
--github-auth-stdin | Передайте CLI GitHub App или personal access token созданную для аутентификации с GitHubпомощью REST API из вашего секретного хранилища через стандартный вход. Это не требуется, если команда имеет доступ к переменной среды GITHUB_TOKEN, заданной с помощью этого маркера. |
Дополнительные сведения см. в разделе Результаты загрузки на GitHub.
Примечание.
Если вы проанализировали более одной CodeQL базы данных для одного коммита, вы должны были указать категорию SARIF для каждого набора результатов, генерируемых этой командой. Когда вы загружаете результаты в GitHub, code scanning использует эту категорию для хранения результатов по каждому языку отдельно. Если вы забыли это сделать, то при каждой отправке будут перезаписаны предыдущие результаты. Дополнительные сведения см. в разделе Анализ кода с помощью запросов CodeQL.
Базовый пример загрузки результатов в GitHub
В следующем примере передаются результаты из ФАЙЛА SARIF temp/example-repo-js.sarif в репозиторий my-org/example-repo. Он сообщает code scanning API, что результаты относятся к коммиту deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 на ветке main . В примере предполагается, что GitHub App REST API или personal access token создано для аутентификации GitHubиспользует GITHUB_TOKEN переменную среды.
codeql github upload-results \
--repository=my-org/example-repo \
--ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \
--sarif=/temp/example-repo-js.sarif --github-url=https://HOSTNAME \
Эта команда ничего не выводит, если загрузка не удалась. Командная строка возвращается после завершения загрузки и начала обработки данных. На небольших кодовых базах вы сможете изучить code scanning оповещения GitHub вскоре после этого. Оповещения можно увидеть прямо в pull request или на Security вкладке для ветвей, в зависимости от кода, который вы взяли.
Загрузка диагностической информации в GitHub случае неудачи анализа
После CodeQL CLI успешного анализа базы данных он собирает диагностическую информацию, такую как покрытие файлов, предупреждения и ошибки, и включает её в файл SARIF вместе с результатами. Когда вы загружаете файл SARIF в GitHub репозиторий, диагностическая информация code scanningСтраница состояния средства отображается на репозитории, чтобы было легко видеть работу CodeQL и отладка проблем. Дополнительные сведения см. в разделе Используйте страницу статуса инструмента для сканирования кода.
Однако, если codeql database analyze по какой-либо причине не получится, нет SARIF-файла для загрузки GitHub и диагностической информации для code scanningСтраница состояния средства репозитория. Это затрудняет для пользователей устранение неполадок, если у них нет доступа к файлам журналов в системе CI.
Рекомендуем настроить рабочий процесс CI так, чтобы экспортировать и загружать диагностическую информацию в GitHub случае неудачи анализа. Вы можете сделать это с помощью следующих простых команд для экспорта диагностической информации и загрузки её в GitHub.
Экспорт диагностических сведений при сбое анализа
Вы можете создать ФАЙЛ SARIF для неработоспособных анализов с помощью диагностика экспорта базы данных, например:
$ codeql database export-diagnostics codeql-dbs/example-repo \
--sarif-category=javascript-typescript --format=sarifv2.1.0 \
--output=/temp/example-repo-js.sarif
Этот ФАЙЛ SARIF будет содержать диагностические сведения для неудающегося анализа, включая сведения о охвате файлов, предупреждения и ошибки, созданные во время анализа.
Отправка диагностических сведений при сбое анализа
Вы можете сделать эту диагностическую информацию доступной на сервере Страница состояния средства , загрузив файл SARIF с GitHub помощью Результаты загрузки на GitHub, например:
codeql github upload-results \
--repository=my-org/example-repo \
--ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \
--sarif=/temp/example-repo-js.sarif --github-url=https://HOSTNAME \
Это то же самое, что и процесс отправки SARIF-файлов из успешного анализа.