Skip to main content

Рассмотрение оповещений проверки кода в запросах на вытягивание

При code scanning обнаружении проблемы в pull request, вы можете просмотреть выделенный код и устранить оповещение.

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

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

В зависимости от вашей конфигурации code scanning результаты могут отображаться как проверки и аннотации в pull requests. Дополнительные сведения см. в разделе О предупреждениях о сканировании кода.

Результаты просмотра code scanning проверки

Для всех конфигураций code scanning, проверка, содержащая результаты , code scanning выглядит: Code scanning результаты. Результаты для каждого используемого средства анализа отображаются отдельно. Все новые оповещения в строках кода, измененных в запросе на вытягивание, отображаются как заметки.

Чтобы просмотреть полный набор оповещений для проанализированной ветви, нажмите кнопку Просмотреть все оповещения ветви. Откроется полное представление оповещений, где можно фильтровать все оповещения в ветви по типам, серьезности, тегу и т. д. Дополнительные сведения см. в разделе Оценка оповещений сканирования кода для репозитория.

Снимок экрана: проверка результатов Code scanning по запросу на вытягивание. Ссылка "Просмотр всех оповещений ветви" выделена темно-оранжевым контуром.

Управление уровнями тяжести при сбоях чеков

Если code scanning проверка результатов обнаруживает проблемы с тяжестью error, critical, или high, проверка не проходит, и ошибка указывается в результатах проверки. Если все найденные code scanning результаты имеют меньшую степень тяжести, оповещения рассматриваются как предупреждения или заметки, и проверка проходит успешно.

Снимок экрана: поле слияния для запроса на вытягивание. Проверка "Результаты сканирования кода / CodeQL" содержит "1 новое оповещение, включая 1 высокий уровень безопасности v..."

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

Диагностика проблем с вашей code scanning конфигурацией

В зависимости от вашей конфигурации вы можете увидеть дополнительные проверки pull requests с code scanning конфигурированной конфигурацией. Обычно это рабочие процессы, которые анализируют код или загружают code scanning результаты. Эти проверки могут выполняться для устранения неполадок при возникновении проблем с анализом.

Например, если репозиторий использует a Рабочий процесс анализа CodeQLCodeQL /Analyze (LANGUAGE), проверка выполняется для каждого языка перед выполнением проверки результатов. Проверка анализа может провалиться, если возникнут проблемы с конфигурацией или если pull request нарушает сборку для языка, который компилирует анализ (например, C/C++, C#, Go, Java, Kotlin, Rust, и Swift).

Как и в случае с другими проверками запроса на вытягивание, вы можете просмотреть полные сведения о сбое проверки на вкладке "Проверки". Дополнительные сведения о настройке и устранении неполадок см. в разделе [AUTOTITLE или Параметры настройки рабочих процессов для сканирования кода](/code-security/code-scanning/troubleshooting-code-scanning).

Просмотр оповещения по запросу на вытягивание

Вы можете увидеть любые code scanning оповещения, которые находятся внутри изменений, введённых в pull request, посетив вкладку Conversation . Code scanning Публикует отзыв по pull-request, который показывает каждое оповещение как аннотацию на строках кода, спровоцировавших опоздание. Вы можете прокомментировать оповещения, закрыть оповещения и просмотреть пути для оповещений непосредственно из заметок. Вы можете просмотреть полные сведения об оповещении, щелкнув ссылку "Подробнее", чтобы перейти на страницу сведений об оповещении.

Снимок экрана: заметка оповещения на вкладке "Беседы" запроса на вытягивание. Ссылка "Показать дополнительные сведения" описана в темно-оранжевый цвет.

Вы также можете просматривать все code scanning оповещения, которые находятся внутри различия изменений, введённых в pull request, во вкладке «Изменённые файлы ».

Если вы добавите новую конфигурацию сканирования кода в pull-request, вы увидите комментарий к pull-запросу, направляющий вас на Security and quality вкладку репозитория, чтобы просмотреть все оповещения на ветке pull request. Дополнительные сведения о просмотре оповещений для репозитория см. в разделе Оценка оповещений сканирования кода для репозитория.

Если у вас есть разрешение на запись для репозитория, в некоторых заметках будут содержаться ссылки с дополнительным контекстом для оповещения. В приведённом выше примере из CodeQL анализа можно нажать на значение, предоставленное пользователем , чтобы увидеть, где ненадёжные данные поступают в поток данных (это называется источником). В этом случае также можно просмотреть полный путь из источника в использующий данные код (приемник) с помощью кнопки Показать пути. Так можно проверить, являются ли данные ненадежными или анализу не удалось распознать шаг очистки данных между источником и приемником. Для получения информации об анализе потоков данных с CodeQLиспользованием , см . раздел «Об анализе потоков данных».

Дополнительные сведения об оповещении пользователь с разрешением на запись может просмотреть по ссылке Показать подробности, представленной в заметке. С ее помощью можно в полном объеме просмотреть контекст и метаданные, выводимые средством в представлении оповещения. В приведенном ниже примере можно увидеть теги, показывающие уровень серьезности, тип и соответствующие распространенные уязвимости (CWE) для проблемы. В этом представлении также показана фиксация, в связи с которой возникла проблема.

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

В подробном просмотре оповещения некоторые code scanning инструменты, такие как CodeQL анализ, также содержат описание проблемы и ссылку «Показать больше » для рекомендаций по исправлению кода.

Снимок экрана: описание оповещения code scanning. Ссылка с меткой "Показать больше" выделена темно-оранжевым контуром.

Комментарий к оповещению в запросе на вытягивание

Вы можете комментировать любое code scanning оповещение, которое появится в pull requeste. Оповещения отображаются как заметки на вкладке "Беседа" запроса на вытягивание, как часть проверка запроса на вытягивание, а также отображаются на вкладке "Измененные файлы".

Вы можете потребовать, чтобы все разговоры в pull-request, включая те, что находятся в code scanning оповещениях, должны быть разрешены до слияния pull-запроса. Дополнительные сведения см. в разделе Сведения о защищенных ветвях.

Чтобы отслеживать работу по устранению в рабочем процессе вашей команды без выхода GitHub, вы можете связывать оповещения с проблемами. См . раздел AUTOTITLE.

Исправление оповещения по запросу на вытягивание

Любой, у кого есть push-доступ к pull-запросу, может исправить code scanning оповещение, которое идентифицируется на этом pull request. После фиксации изменений в запросе на вытягивание будут заново выполнены его проверки. Если в результате внесения изменений проблема исправлена, оповещение закрывается, а заметка удаляется.

Работа с Автофикс второго пилота предложениями для оповещений по пулл-запросу

          Автофикс GitHub Copilot — это расширение, code scanning которое предоставляет вам целевые рекомендации для исправления code scanning оповещений (включая CodeQL оповещения) в pull requests. Потенциальные исправления генерируются автоматически крупными языковыми моделями (LLM) с использованием данных из кодовой базы, pull request и анализа code scanning .

Примечание.

Подписка на GitHub Copilot не требуется для использования Автофикс GitHub Copilot. Автофикс второго пилота доступен для всех общедоступных репозиториев на GitHub.com, а также внутренние или частные репозитории, принадлежащие организациям и предприятиям, имеющим лицензию на GitHub Code Security.

Снимок экрана: сбой проверки для оповещения code scanning в запросе на вытягивание. Часть предложения autofix описана в темно-оранжевый цвет.

Генерация Автофикс второго пилота предложений и публикация по пулл-заявке

Когда Автофикс второго пилота репозиторий активирован, оповещения отображаются в pull-запросах как обычно, а информация от любых code scanning найденных оповещений автоматически отправляется в LLM для обработки. После завершения анализа LLM все результаты публикуются в виде комментариев о соответствующих оповещениях. Дополнительные сведения см. в разделе Ответственное использование Copilot Autofix для сканирования кода.

Примечание.

* Автофикс второго пилота поддерживает подмножество CodeQL запросов. Для информации о доступности Автофикс второго пилота, см. таблицы запросов, ссылки на которые приведён из AUTOTITLE.

  • После завершения анализа все соответствующие результаты публикуются в запросе на вытягивание одновременно. Если хотя бы одно оповещение в вашем pull-запросе содержит Автофикс второго пилота предложение, следует предполагать, что LLM уже определил возможные исправления вашего кода.
  • В оповещениях, сгенерированных по запросам, которые не поддерживаются Автофикс второго пилота, вы увидите заметку, что запрос не поддерживается. Если не удается создать предложение для поддерживаемого запроса, появится примечание в оповещении, предлагающее отправить другую фиксацию или обратиться в службу поддержки.
          Автофикс второго пилота Потому code scanning что оповещения не смогут создать исправление для каждого оповещения в каждой ситуации. Функция работает на основе наилучших усилий и не гарантируется успешной 100% времени. Сведения об ограничениях автоматически созданных исправлений см. в разделе ["Ограничения предложений](/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning#limitations-of-suggestions)".

Как правило, при внесении изменений в запрос на вытягивание комментарий содержит изменения для одного файла, который изменяется в запросе на вытягивание. Следующий скриншот показывает Автофикс второго пилота комментарий, предлагающий изменения в index.js файле, где отображается оповещение. Так как потенциальное исправление требует новой зависимости, комментарий также предлагает добавить эту зависимость escape-htmlв package.json файл, даже если исходный запрос на вытягивание не вносит изменений в этот файл.

Снимок экрана: предложение Автофикс второго пилота для изменения текущего файла. Предлагаемое изменение в "package.json" описано в темно-оранжевый цвет.

Оценка и утверждение предложения Автофикс второго пилота

Каждое Автофикс второго пилота предложение демонстрирует потенциальное решение для code scanning оповещения в вашей кодовой базе. Чтобы определить, являются ли они хорошим решением для базы кода, необходимо оценить предлагаемые изменения, чтобы убедиться, что они поддерживают предполагаемое поведение. Для получения информации об ограничениях Автофикс второго пилота предложений см. разделы «Ограничения предложений и смягчение ограничений предложений » в разделе «Ответственное использование Автофикс второго пилота для code scanning».

  1. Нажмите кнопку "Изменить", чтобы отобразить параметры редактирования и выбрать предпочтительный метод.
    • В разделе Редактировать с GitHub CLI, следуйте инструкциям для локальной проверки pull-запроса и применения предлагаемого исправления.
    • Выберите Редактировать ИМЯ ФАЙЛА , чтобы редактировать файл напрямую GitHub с применённым предложенным исправлением.
  2. По желанию, если вы предпочитаете применить исправление к локальному репозиторию или ветке, выберите выпадающее меню в предложении.
    • Выберите "Просмотреть исправление автофикса", чтобы отобразить инструкции по применению предлагаемого исправления к любому локальному репозиторию или ветви.
    • Выберите "Копировать измененную строку" LINE_NUMBER , чтобы скопировать определенную строку предложения.
  3. Проверьте и измените предлагаемое исправление по мере необходимости.
  4. Завершив тестирование изменений, зафиксируйте изменения и отправьте их в ветвь.
  5. При отправке изменений в ветвь будут запускаться все обычные тесты для запроса на вытягивание. Убедитесь, что ваши модульные тесты прошли и code scanning что оповещение теперь исправлено.

Отвергаю предложение Автофикс второго пилота

Если вы решите отклонить предложение Автофикс второго пилота , нажмите «Отклонить предложение » в комментарии, чтобы отклонить предложенное решение.

Отклонение оповещения по запросу на вытягивание

Оповещение также можно закрыть, отклонив его. Если вы не считаете, что оповещение требуется исправлять, его можно отклонить. Например, когда есть ошибка в коде, который используется только для тестирования, или когда усилия по исправлению ошибки больше потенциального преимущества улучшения кода. Если у вас есть разрешение на запись репозитория, кнопка «Отпустить» доступна в аннотациях кода и в сводке уведомлений. При нажатии кнопки "Закрыть оповещение " вам будет предложено выбрать причину закрытия оповещения.

Снимок экрана: сбой проверки для сканирования кода. Кнопка "Закрыть оповещение" выделена темно-оранжевым цветом. Отображается раскрывающийся список "Закрыть оповещение".

Важно выбрать соответствующую причину в раскрывающемся меню, так как это может влиять на то, будет ли запрос включен в будущий анализ. При необходимости можно закомментировать увольнение, чтобы записать контекст увольнения оповещения. Комментарий о закрытии добавляется на временную шкалу оповещений и может использоваться в качестве обоснования для аудита или отчетов. Вы можете получить или сохранить комментарий с помощью REST API сканирования кода. Комментарий содержится в dismissed_comment для конечной точки alerts/{alert_number}. Дополнительные сведения см. в разделе Конечные точки REST API для сканирования кода.

Если вы закрываете оповещение CodeQL как ложное срабатывание, например, поскольку в коде используется библиотека очистки, которая не поддерживается, рассмотрите возможность добавления CodeQL в репозиторий и улучшение анализа. Дополнительные сведения о CodeQLсм. в статье "Участие в CodeQL".

Дополнительные сведения об увольнении оповещений см. в разделе Разрешение оповещений сканирования кода.