Skip to main content

Эта версия GitHub Enterprise Server будет прекращена 2026-04-09. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, повышения безопасности и новых функций выполните обновление до последней версии GitHub Enterprise Server. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

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

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

Кто может использовать эту функцию?

Пользователи с доступом на запись

CodeQL доступен для следующих типов репозитория:

После анализа 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

  1. Проверьте, что свойства SARIF имеют поддерживаемый размер для загрузки и совместим ли файл с сканированием кода. Дополнительные сведения см. в разделе Поддержка SARIF для проверки кода.

  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среды.

    # 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-файлов из успешного анализа.