Skip to main content

Разрешение оповещений сканирования кода

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

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

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

Генерация предложенных исправлений для code scanning оповещений

          GitHub Copilot Autofix может создавать исправления для оповещений, выявленных анализом code scanning . Большинство CodeQL типов оповещений поддерживаются. См [. раздел AUTOTITLE](/code-security/concepts/code-scanning/copilot-autofix-for-code-scanning).

Примечание.

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

  1. На GitHubперейдите на главную страницу репозитория.
  2. Под названием репозитория нажмите на Security and quality вкладку. Если вы не видите вкладку « Security and quality» — выберите выпадающее меню и нажмите Security and quality.
  3. На левой боковой панели щелкните Code scanning.
  4. Щелкните имя оповещения.
  5. Если Copilot Autofix можете предложить решение, в верхней части страницы нажмите Generate fix.
  6. После создания предлагаемого исправления в нижней части страницы можно нажать кнопку "Создать PR" с исправлением , чтобы автоматически создать запрос на вытягивание с предлагаемым исправлением. Новая ветвь создается из ветвь по умолчанию, созданное исправление фиксируется и создается черновик запроса на вытягивание. Вы можете протестировать и изменить предлагаемое исправление, как и в любом другом исправлении.

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

Назначение оповещений Copilot облачный агент

Примечание.

В настоящее время этот вариант находится в общедоступной предварительной версии и может быть изменен. Copilot облачный агент должно быть доступно в репозитории.

Вы можете назначить Copilot для применения автофикса. Copilot анализирует оповещение о сканировании кода, создает план исправления и реализует необходимые изменения кода в pull-запросе.

  1. На GitHubперейдите на главную страницу репозитория.
  2. Под названием репозитория нажмите на Security and quality вкладку. Если вы не видите вкладку « Security and quality» — выберите выпадающее меню и нажмите Security and quality.
  3. На левой боковой панели щелкните Code scanning.
  4. Щелкните имя оповещения.
  5. Если автофикс не был создан и Copilot Autofix может предложить исправление, в верхней части страницы нажмите «Создать исправление».
  6. В меню справа нажмите «Исполнители».
  7. Выберите «Copilot».

В течение 30 секунд Copilot откроется pull request для ответа на уведомление и содержит сводку исправлений и деталей внесенных изменений. После создания запрос на вытягивание отображается в разделе «Разработка».

Исправление оповещения вручную

Любой пользователь с разрешением на запись для репозитория может исправить оповещение, зафиксировав исправление в коде. Если репозиторий запланировал code scanning запуск на pull request, лучше всего поднять pull request с исправлением. Это запустит code scanning анализ изменений и проверит, что ваше исправление не создаёт новых проблем. Дополнительные сведения см. в разделе Рассмотрение оповещений проверки кода в запросах на вытягивание.

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

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

Оповещения могут быть исправлены в одной ветви, но не в другой. Фильтр "Branch" можно использовать в сводке оповещений, чтобы проверить, исправлена ли оповещение в определенной ветви.

Снимок экрана: представление оповещений с развернутыми параметрами ветви. Фильтр "ветвь" подчеркнут темно-оранжевым.

Обратите внимание: если оповещения, отфильтрованные в ветви, отличной от используемой по умолчанию, присутствуют в ветви по умолчанию, на странице оповещений для любого такого оповещения по-прежнему будет отражаться состояние из ветви по умолчанию, даже если оно конфликтует с состоянием в ветви, отличной от используемой по умолчанию. Например, для оповещения, которое присутствует в списке "Открыто" в сводке оповещений для ветви branch-x, на странице оповещений может отображаться состояние "Исправлено", если это оповещение уже исправлено в ветви по умолчанию. Состояние оповещения для ветви, к которой применен фильтр, можно просмотреть в разделе Затронутые ветви в правой части страницы оповещений.

Примечание.

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

Отключение оповещений

Закрыть оповещение можно двумя способами. Можно устранить проблему в коде или отклонить оповещение.

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

Когда оповещение отклоняется:

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

Чтобы закрыть оповещения, выполните приведенные действия.

  1. На GitHubперейдите на главную страницу репозитория.

  2. Под названием репозитория нажмите на Security and quality вкладку. Если вы не видите вкладку « Security and quality» — выберите выпадающее меню и нажмите Security and quality.

  3. На левой боковой панели щелкните Code scanning.

  4. Если вы хотите отклонить оповещение, важно сначала изучить его, чтобы выбрать правильную причину отклонения. Щелкните оповещение, которое нужно изучить.

  5. Просмотрите оповещение, щелкните Закрыть оповещение и выберите причину закрытия оповещения.

              ![Снимок экрана: сбой проверки генерации оповещений. Кнопка "Закрыть оповещение" выделена темно-оранжевым цветом и отображается раскрывающийся список". ](/assets/images/help/repository/code-scanning-alert-dropdown-reason.png)
    

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

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

Отклонение нескольких оповещений одновременно

Если в проекте есть несколько оповещений, которые нужно отклонить по одной причине, в сводке по оповещениям их можно отклонить все сразу. Как правило, необходимо отфильтровать список, а затем отклонить все подходящие оповещения. Например, может потребоваться отклонить все текущие оповещения в проекте, имеющие отметку определенной уязвимости CWE.

Повторное открытие оповещений об увольнении

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

Удаление устаревших конфигураций и оповещений из ветви

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

  1. На GitHubперейдите на главную страницу репозитория.

  2. Под названием репозитория нажмите на Security and quality вкладку. Если вы не видите вкладку « Security and quality» — выберите выпадающее меню и нажмите Security and quality.

  3. На левой боковой панели щелкните Code scanning.

  4. В разделе «Code scanning» нажмите уведомление code scanning .

  5. В разделе "Затронутые ветви" боковой панели щелкните нужную ветвь.

  6. В диалоговом окне "Конфигурации анализа" просмотрите сведения о конфигурациях, сообщающих об этом оповещении в выбранной ветви. Чтобы удалить ненужную конфигурацию для нужной ветки, нажмите .

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

    Снимок экрана: модал "Конфигурации анализа". Значок "Удалить конфигурацию" описан в темно-оранжевый цвет.

  7. После удаления любых нежелательных конфигураций и подтверждения отображения ожидаемых конфигураций нажмите кнопку "Сохранить изменения".

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

Примечание.

  • Если вы удалите все code scanning конфигурации для стандартной ветки вашего репозитория, стандартная ветка останется в боковой панели «Затронутые ветви», но не будет анализироваться ни одной конфигурацией.
  • Если вы удалите все code scanning конфигурации для любой ветки, кроме стандартной ветки вашего репозитория, эта ветка будет удалена из боковой панели «Затронутые ветви».

Дополнительные материалы