# Загрузка результатов анализа CodeQL на GitHub

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

После анализа CodeQL базы данных с CodeQL CLIпомощью , вы получите SARIF-файл с результатами. Затем вы можете загрузить CodeQL CLI результаты в GitHub.

Если вы использовали другой CodeQL CLI метод для получения результатов, можно использовать и другие методы загрузки. Дополнительные сведения см. в разделе [Отправка файла SARIF в GitHub](/ru/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github).

## Генерация токена для аутентификации с помощью GitHub

Прежде чем загрузить результаты в GitHub, сначала нужно сгенерировать personal access token. См [. раздел AUTOTITLE](/ru/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token).

***

```
          Personal access token (classic)
          ** требуется доступ к «Code scanning оповещениям» для **чтения и записи** для необходимых репозиториев.
```

***

```
          Fine-grained personal access token
          ** Требуется «репозитория **» security_events** доступ.
```

Если вы установили CodeQL CLI их в сторонней системе CI, вы также можете использовать GitHub App a для загрузки результатов в GitHub. См [. раздел AUTOTITLE](/ru/code-security/code-scanning/integrating-with-code-scanning/using-code-scanning-with-your-existing-ci-system#generating-a-token-for-authentication-with-github).

## Загрузка результатов в GitHub

1. Проверьте, что свойства SARIF имеют поддерживаемый размер для загрузки и совместим ли файл с сканированием кода. Дополнительные сведения см. в разделе [Поддержка SARIF для проверки кода](/ru/code-security/code-scanning/integrating-with-code-scanning/sarif-support-for-code-scanning#file-compatibility).

2. Определите лучший способ передать GitHub App или personal access token вы создали в предыдущем разделе в CodeQL CLI. Рекомендуется проанализировать руководство по использованию системы CI для безопасного использования хранилища секретов. Поддержки CodeQL CLI :

   * Взаимодействие с хранилищем секретов с помощью `--github-auth-stdin` параметра (рекомендуется).
   * Сохранение секрета в переменной среды `GITHUB_TOKEN` и запуск интерфейса командной строки без включения параметра `--github-auth-stdin`.
   * Для тестирования можно передать `--github-auth-stdin` параметр командной строки и предоставить временный маркер с помощью стандартных входных данных.

3. Если вы решили использовать наиболее безопасный и надежный метод конфигурации, запустите `codeql github upload-results` каждый файл результатов SARIF и включите `--github-auth-stdin` , если маркер не доступен в переменной `GITHUB_TOKEN`среды.

   ```shell
   # 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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| -------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <code><span style="white-space: nowrap;">--repository</span></code>        |                                                     <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Required" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                    | Укажите *ВЛАДЕЛЬЦА/ИМЯ* репозитория, в который будут отправлены данные. Владелец должен быть организацией внутри предприятия или на плане GitHub Team , с GitHub Code Security возможностью репозитория, если репозиторий не является публичным. Дополнительные сведения см. в разделе [Управление параметрами безопасности и анализа для репозитория](/ru/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository). |
| <code><span style="white-space: nowrap;">--ref</span></code>               |                                                     <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Required" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                    | Укажите имя извлеченного и проанализированного `ref`, чтобы результаты можно было сопоставить с правильным кодом. Для использования ветвления: `refs/heads/BRANCH-NAME`, для главного коммита pull-запроса используйте `refs/pull/NUMBER/head`, или для -сгенерированного GitHubкоммита слияния pull-запроса используйте `refs/pull/NUMBER/merge`.                                                                                                                                                                          |
| <code><span style="white-space: nowrap;">--commit</span></code>            |                                                     <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Required" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                    | Укажите полный SHA для проанализированной фиксации.                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| <code><span style="white-space: nowrap;">--sarif</span></code>             |                                                     <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Required" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                    | Укажите файл SARIF для загрузки.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|                                                                            |                                                                                                                                                                                                                                                                                                                                                                                                                                |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| <code><span style="white-space: nowrap;">--github-auth-stdin</span></code> | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-x" aria-label="Optional" role="img"><path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path></svg> | Передайте CLI GitHub App или personal access token созданную для аутентификации с GitHubпомощью REST API из вашего секретного хранилища через стандартный вход. Это не требуется, если команда имеет доступ к переменной среды `GITHUB_TOKEN`, заданной с помощью этого маркера.                                                                                                                                                                                                                                            |

Дополнительные сведения см. в разделе [Результаты загрузки на GitHub](/ru/code-security/codeql-cli/codeql-cli-manual/github-upload-results).

> \[!NOTE]
> Если вы проанализировали более одной CodeQL базы данных для одного коммита, вы должны были указать категорию SARIF для каждого набора результатов, генерируемых этой командой. Когда вы загружаете результаты в GitHub, code scanning использует эту категорию для хранения результатов по каждому языку отдельно. Если вы забыли это сделать, то при каждой отправке будут перезаписаны предыдущие результаты. Дополнительные сведения см. в разделе [Анализ кода с помощью запросов CodeQL](/ru/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries#running-codeql-database-analyze).

### Базовый пример загрузки результатов в 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` переменную среды.

```shell
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 или на **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield" aria-label="shield" role="img"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> Security and quality** вкладке для ветвей, в зависимости от кода, который вы взяли.

## Загрузка диагностической информации в GitHub случае неудачи анализа

После CodeQL CLI успешного анализа базы данных он собирает диагностическую информацию, такую как покрытие файлов, предупреждения и ошибки, и включает её в файл SARIF вместе с результатами. Когда вы загружаете файл SARIF в GitHub репозиторий, диагностическая информация code scanningСтраница состояния средства отображается на репозитории, чтобы было легко видеть работу CodeQL и отладка проблем. Дополнительные сведения см. в разделе [Используйте страницу статуса инструмента для сканирования кода](/ru/code-security/code-scanning/managing-your-code-scanning-configuration/about-the-tool-status-page).

Однако, если `codeql database analyze` по какой-либо причине не получится, нет SARIF-файла для загрузки GitHub и диагностической информации для code scanningСтраница состояния средства репозитория. Это затрудняет для пользователей устранение неполадок, если у них нет доступа к файлам журналов в системе CI.

Рекомендуем настроить рабочий процесс CI так, чтобы экспортировать и загружать диагностическую информацию в GitHub случае неудачи анализа. Вы можете сделать это с помощью следующих простых команд для экспорта диагностической информации и загрузки её в GitHub.

### Экспорт диагностических сведений при сбое анализа

Вы можете создать ФАЙЛ SARIF для неработоспособных анализов с помощью [диагностика экспорта базы данных](/ru/code-security/codeql-cli/codeql-cli-manual/database-export-diagnostics), например:

```shell
$ codeql database export-diagnostics codeql-dbs/example-repo \
    --sarif-category=javascript-typescript --format=sarif-latest \
    --output=/temp/example-repo-js.sarif
```

Этот ФАЙЛ SARIF будет содержать диагностические сведения для неудающегося анализа, включая сведения о охвате файлов, предупреждения и ошибки, созданные во время анализа.

### Отправка диагностических сведений при сбое анализа

Вы можете сделать эту диагностическую информацию доступной на сервере Страница состояния средства , загрузив файл SARIF с GitHub помощью [Результаты загрузки на GitHub](/ru/code-security/codeql-cli/codeql-cli-manual/github-upload-results), например:

```shell
codeql github upload-results \
    --repository=my-org/example-repo \
    --ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \
    --sarif=/temp/example-repo-js.sarif 
```

Это то же самое, что и процесс отправки SARIF-файлов из успешного анализа.