Генерация предложенных исправлений для 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.
- На GitHubперейдите на главную страницу репозитория.
- Под названием репозитория нажмите на Security and quality вкладку. Если вы не видите вкладку « Security and quality» — выберите выпадающее меню и нажмите Security and quality.
- На левой боковой панели щелкните Code scanning.
- Щелкните имя оповещения.
- Если Copilot Autofix можете предложить решение, в верхней части страницы нажмите Generate fix.
- После создания предлагаемого исправления в нижней части страницы можно нажать кнопку "Создать PR" с исправлением , чтобы автоматически создать запрос на вытягивание с предлагаемым исправлением. Новая ветвь создается из ветвь по умолчанию, созданное исправление фиксируется и создается черновик запроса на вытягивание. Вы можете протестировать и изменить предлагаемое исправление, как и в любом другом исправлении.
Вы также можете использовать API автофикса для конечных точек исторических оповещений для создания, получения и фиксации предлагаемых исправлений.
-
Получение состояния автофикса для оповещения сканирования кода
-
Фиксация автофикса для оповещения сканирования кода
Copilot Autofix Потому code scanning что оповещения не смогут создать исправление для каждого оповещения в каждой ситуации. Функция работает на основе наилучших усилий и не гарантируется успешной 100% времени. Сведения об ограничениях автоматически созданных исправлений см. в разделе ["Ограничения предложений](/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning#limitations-of-suggestions)".
Назначение оповещений Copilot облачный агент
Примечание.
В настоящее время этот вариант находится в общедоступной предварительной версии и может быть изменен. Copilot облачный агент должно быть доступно в репозитории.
Вы можете назначить Copilot для применения автофикса. Copilot анализирует оповещение о сканировании кода, создает план исправления и реализует необходимые изменения кода в pull-запросе.
- На GitHubперейдите на главную страницу репозитория.
- Под названием репозитория нажмите на Security and quality вкладку. Если вы не видите вкладку « Security and quality» — выберите выпадающее меню и нажмите Security and quality.
- На левой боковой панели щелкните Code scanning.
- Щелкните имя оповещения.
- Если автофикс не был создан и Copilot Autofix может предложить исправление, в верхней части страницы нажмите «Создать исправление».
- В меню справа нажмите «Исполнители».
- Выберите «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 запуске тот же код не выдаст оповещения.
Чтобы закрыть оповещения, выполните приведенные действия.
-
На GitHubперейдите на главную страницу репозитория.
-
Под названием репозитория нажмите на Security and quality вкладку. Если вы не видите вкладку « Security and quality» — выберите выпадающее меню и нажмите Security and quality.
-
На левой боковой панели щелкните Code scanning.
-
Если вы хотите отклонить оповещение, важно сначала изучить его, чтобы выбрать правильную причину отклонения. Щелкните оповещение, которое нужно изучить.
-
Просмотрите оповещение, щелкните Закрыть оповещение и выберите причину закрытия оповещения.

Важно выбрать соответствующую причину в раскрывающемся меню, так как это может влиять на то, будет ли запрос включен в будущий анализ. При необходимости можно закомментировать увольнение, чтобы записать контекст увольнения оповещения. Комментарий о закрытии добавляется на временную шкалу оповещений и может использоваться в качестве обоснования для аудита или отчетов. Вы можете получить или сохранить комментарий с помощью REST API сканирования кода. Комментарий содержится в dismissed_comment для конечной точки alerts/{alert_number}. Дополнительные сведения см. в разделе Конечные точки REST API для сканирования кода.
Если вы закрываете оповещение CodeQL как ложное срабатывание, например, поскольку в коде используется библиотека очистки, которая не поддерживается, рассмотрите возможность добавления CodeQL в репозиторий и улучшение анализа. Дополнительные сведения о CodeQLсм. в статье "Участие в CodeQL".
Отклонение нескольких оповещений одновременно
Если в проекте есть несколько оповещений, которые нужно отклонить по одной причине, в сводке по оповещениям их можно отклонить все сразу. Как правило, необходимо отфильтровать список, а затем отклонить все подходящие оповещения. Например, может потребоваться отклонить все текущие оповещения в проекте, имеющие отметку определенной уязвимости CWE.
Повторное открытие оповещений об увольнении
Если вы уволите оповещение, но позже понимаете, что необходимо исправить оповещение, его можно повторно открыть и устранить проблему с кодом. Отображение списка закрытых оповещений, поиск оповещения, его отображение и повторное открытие. Затем вы можете исправить оповещение так же, как и любое другое оповещение.
Удаление устаревших конфигураций и оповещений из ветви
В одном репозитории может быть несколько конфигураций сканирования кода. При запуске несколько конфигураций могут создавать одно и то же оповещение. Кроме того, если конфигурации выполняются по разным расписаниям, состояние оповещения может стать устаревшим для нечастой или устаревших конфигураций. Дополнительные сведения о оповещениях из нескольких конфигураций см. в разделе О предупреждениях о сканировании кода.
-
На GitHubперейдите на главную страницу репозитория.
-
Под названием репозитория нажмите на Security and quality вкладку. Если вы не видите вкладку « Security and quality» — выберите выпадающее меню и нажмите Security and quality.
-
На левой боковой панели щелкните Code scanning.
-
В разделе «Code scanning» нажмите уведомление code scanning .
-
В разделе "Затронутые ветви" боковой панели щелкните нужную ветвь.
-
В диалоговом окне "Конфигурации анализа" просмотрите сведения о конфигурациях, сообщающих об этом оповещении в выбранной ветви. Чтобы удалить ненужную конфигурацию для нужной ветки, нажмите .
Если удалить конфигурацию по ошибке, нажмите кнопку "Отмена ", чтобы избежать применения изменений.

-
После удаления любых нежелательных конфигураций и подтверждения отображения ожидаемых конфигураций нажмите кнопку "Сохранить изменения".
Если изменения сохраняются после случайного удаления конфигурации, повторно запустите конфигурацию, чтобы обновить оповещение. Для получения дополнительной информации о повторном запуске конфигураций, использующих GitHub Actions, см. Повторный запуск рабочих процессов и заданий.
Примечание.
- Если вы удалите все code scanning конфигурации для стандартной ветки вашего репозитория, стандартная ветка останется в боковой панели «Затронутые ветви», но не будет анализироваться ни одной конфигурацией.
- Если вы удалите все code scanning конфигурации для любой ветки, кроме стандартной ветки вашего репозитория, эта ветка будет удалена из боковой панели «Затронутые ветви».