{"meta":{"title":"Загрузка результатов анализа CodeQL на GitHub","intro":"Вы можете использовать CodeQL CLI для загрузки CodeQL результатов анализа в GitHub.","product":"Безопасность и качество кода","breadcrumbs":[{"href":"/ru/code-security","title":"Безопасность и качество кода"},{"href":"/ru/code-security/tutorials","title":"Tutorials"},{"href":"/ru/code-security/tutorials/customize-code-scanning","title":"Настройка сканирования кода"},{"href":"/ru/code-security/tutorials/customize-code-scanning/uploading-codeql-analysis-results-to-github","title":"Загрузка результатов на GitHub"}],"documentType":"article"},"body":"# Загрузка результатов анализа CodeQL на GitHub\n\nВы можете использовать CodeQL CLI для загрузки CodeQL результатов анализа в GitHub.\n\nПосле анализа CodeQL базы данных с CodeQL CLIпомощью , вы получите SARIF-файл с результатами. Затем вы можете загрузить CodeQL CLI результаты в GitHub.\n\nЕсли вы использовали другой CodeQL CLI метод для получения результатов, можно использовать и другие методы загрузки. Дополнительные сведения см. в разделе [Отправка файла SARIF в GitHub](/ru/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github).\n\n## Генерация токена для аутентификации с помощью GitHub\n\nПрежде чем загрузить результаты в GitHub, сначала нужно сгенерировать personal access token. См [. раздел AUTOTITLE](/ru/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token).\n\n***\n\n```\n          Personal access token (classic)\n          ** требуется доступ к «Code scanning оповещениям» для **чтения и записи** для необходимых репозиториев.\n```\n\n***\n\n```\n          Fine-grained personal access token\n          ** Требуется «репозитория **» security_events** доступ.\n```\n\nЕсли вы установили 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).\n\n## Загрузка результатов в GitHub\n\n1. Проверьте, что свойства SARIF имеют поддерживаемый размер для загрузки и совместим ли файл с сканированием кода. Дополнительные сведения см. в разделе [Поддержка SARIF для проверки кода](/ru/code-security/code-scanning/integrating-with-code-scanning/sarif-support-for-code-scanning#file-compatibility).\n\n2. Определите лучший способ передать GitHub App или personal access token вы создали в предыдущем разделе в CodeQL CLI. Рекомендуется проанализировать руководство по использованию системы CI для безопасного использования хранилища секретов. Поддержки CodeQL CLI :\n\n   * Взаимодействие с хранилищем секретов с помощью `--github-auth-stdin` параметра (рекомендуется).\n   * Сохранение секрета в переменной среды `GITHUB_TOKEN` и запуск интерфейса командной строки без включения параметра `--github-auth-stdin`.\n   * Для тестирования можно передать `--github-auth-stdin` параметр командной строки и предоставить временный маркер с помощью стандартных входных данных.\n\n3. Если вы решили использовать наиболее безопасный и надежный метод конфигурации, запустите `codeql github upload-results` каждый файл результатов SARIF и включите `--github-auth-stdin` , если маркер не доступен в переменной `GITHUB_TOKEN`среды.\n\n   ```shell\n   # GitHub App or personal access token available from a secret store\n   <call-to-retrieve-secret> | codeql github upload-results \\\n       --repository=<repository-name> \\\n       --ref=<ref> --commit=<commit> \\\n       --sarif=<file> --github-auth-stdin\n\n   # GitHub App or personal access token available in GITHUB_TOKEN\n   codeql github upload-results \\\n       --repository=<repository-name> \\\n       --ref=<ref> --commit=<commit> \\\n       --sarif=<file> \n   ```\n\n| Вариант                                                                    |                                                                                                                                                                                                           Обязательно                                                                                                                                                                                                          | Usage                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| -------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| <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). |\n| <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`.                                                                                                                                                                          |\n| <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 для проанализированной фиксации.                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n| <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 для загрузки.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |\n|                                                                            |                                                                                                                                                                                                                                                                                                                                                                                                                                |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |\n| <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`, заданной с помощью этого маркера.                                                                                                                                                                                                                                            |\n\nДополнительные сведения см. в разделе [Результаты загрузки на GitHub](/ru/code-security/codeql-cli/codeql-cli-manual/github-upload-results).\n\n> \\[!NOTE]\n> Если вы проанализировали более одной 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).\n\n### Базовый пример загрузки результатов в GitHub\n\nВ следующем примере передаются результаты из ФАЙЛА 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` переменную среды.\n\n```shell\ncodeql github upload-results \\\n    --repository=my-org/example-repo \\\n    --ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \\\n    --sarif=/temp/example-repo-js.sarif \n```\n\nЭта команда ничего не выводит, если загрузка не удалась. Командная строка возвращается после завершения загрузки и начала обработки данных. На небольших кодовых базах вы сможете изучить 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** вкладке для ветвей, в зависимости от кода, который вы взяли.\n\n## Загрузка диагностической информации в GitHub случае неудачи анализа\n\nПосле CodeQL CLI успешного анализа базы данных он собирает диагностическую информацию, такую как покрытие файлов, предупреждения и ошибки, и включает её в файл SARIF вместе с результатами. Когда вы загружаете файл SARIF в GitHub репозиторий, диагностическая информация code scanningСтраница состояния средства отображается на репозитории, чтобы было легко видеть работу CodeQL и отладка проблем. Дополнительные сведения см. в разделе [Используйте страницу статуса инструмента для сканирования кода](/ru/code-security/code-scanning/managing-your-code-scanning-configuration/about-the-tool-status-page).\n\nОднако, если `codeql database analyze` по какой-либо причине не получится, нет SARIF-файла для загрузки GitHub и диагностической информации для code scanningСтраница состояния средства репозитория. Это затрудняет для пользователей устранение неполадок, если у них нет доступа к файлам журналов в системе CI.\n\nРекомендуем настроить рабочий процесс CI так, чтобы экспортировать и загружать диагностическую информацию в GitHub случае неудачи анализа. Вы можете сделать это с помощью следующих простых команд для экспорта диагностической информации и загрузки её в GitHub.\n\n### Экспорт диагностических сведений при сбое анализа\n\nВы можете создать ФАЙЛ SARIF для неработоспособных анализов с помощью [диагностика экспорта базы данных](/ru/code-security/codeql-cli/codeql-cli-manual/database-export-diagnostics), например:\n\n```shell\n$ codeql database export-diagnostics codeql-dbs/example-repo \\\n    --sarif-category=javascript-typescript --format=sarif-latest \\\n    --output=/temp/example-repo-js.sarif\n```\n\nЭтот ФАЙЛ SARIF будет содержать диагностические сведения для неудающегося анализа, включая сведения о охвате файлов, предупреждения и ошибки, созданные во время анализа.\n\n### Отправка диагностических сведений при сбое анализа\n\nВы можете сделать эту диагностическую информацию доступной на сервере Страница состояния средства , загрузив файл SARIF с GitHub помощью [Результаты загрузки на GitHub](/ru/code-security/codeql-cli/codeql-cli-manual/github-upload-results), например:\n\n```shell\ncodeql github upload-results \\\n    --repository=my-org/example-repo \\\n    --ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \\\n    --sarif=/temp/example-repo-js.sarif \n```\n\nЭто то же самое, что и процесс отправки SARIF-файлов из успешного анализа."}