Skip to main content

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

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

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

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

Сведения о результатах функции code scanning для запросов на вытягивание

В репозиториях можно настроить code scanning как проверку запросов на вытягивание, при этом code scanning будет проверять код в запросах на вытягивание. По умолчанию проверка осуществляется только для запросов на вытягивание, предназначенных для ветви по умолчанию, но при необходимости это поведение можно настроить в GitHub Actions или в сторонней системе непрерывной интеграции и поставки (CI/CD).

Если строки кода, измененные в запросе на вытягивание, создают оповещения code scanning, оповещения передаются в следующих местах в запросе на вытягивание.

  • Проверка результатов запроса на вытягивание
  • Вкладка "Беседа" запроса на вытягивание в рамках проверка запроса на вытягивание
  • Вкладка Измененные файлы запроса на вытягивание.

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

Если у вас есть разрешение на запись для репозитория, на вкладке "Безопасность " отображаются все существующие оповещения code scanning. Сведения о оповещениях репозитория см. в разделе "Оценка оповещений сканирования кода для репозитория".

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

Если запрос на вытягивание предназначен для защищенная ветвь, использующего code scanning, и владелец репозитория настроил обязательная проверка состояния, перед слиянием запроса на вытягивание необходимо пройти проверку "Code scanning". Дополнительные сведения см. в разделе Сведения о защищенных ветвях.

Сведения об использовании функции code scanning в качестве проверки запроса на вытягивание

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

Проверка результатов Code scanning

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

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

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

Сбои проверки результатов Code scanning

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

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

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

Другие проверки code scanning

В разных конфигурациях могут быть настроены дополнительные проверки, выполняемые для запросов на вытягивание с помощью функции code scanning. Как правило, это рабочие процессы, которые анализируют код или отправляют результаты функции code scanning. Эти проверки могут выполняться для устранения неполадок при возникновении проблем с анализом.

Например, если репозиторий использует Рабочий процесс анализа CodeQL проверку CodeQL / Анализ (ЯЗЫК) выполняется перед выполнением проверки результатов. Проверка анализа может завершиться ошибкой, если возникают проблемы с конфигурацией или если запрос на вытягивание прерывает сборку для языка, который компилируется анализ (например, C/C++, C#, Go, Java, Kotlin и Swift).

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

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

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

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

Вы также можете просмотреть все оповещения code scanning, которые находятся внутри диффа изменений, представленных в запросе на вытягивание на вкладке "Измененные файлы".

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

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

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

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

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

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

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

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

Вы можете выбрать, чтобы все сообщения в запросе на вытягивание (в том числе для оповещений code scanning), разрешались до слияния запроса на вытягивание. Дополнительные сведения см. в разделе Сведения о защищенных ветвях.

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

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

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

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

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

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

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

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