Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

Управление оповещениями проверки кода для репозитория

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

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

If you have write permission to a repository you can manage code scanning alerts for that repository.

Code scanning доступен для всех общедоступных репозиториев в GitHub.com. Чтобы использовать code scanning в частном репозитории, принадлежащем организации, необходима лицензия на GitHub Advanced Security. Дополнительные сведения см. в разделе Сведения о GitHub Advanced Security.

Просмотр оповещений в репозитории

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

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

По умолчанию на странице оповещений о проверке кода применяется фильтр, в результате на ней отображаются оповещения только для ветви репозитория по умолчанию.

  1. На GitHub.com перейдите на главную страницу репозитория. 1. Под именем репозитория щелкните Безопасность. Если вкладка "Безопасность" не отображается, выберите раскрывающееся меню и выберите пункт Безопасность. Снимок экрана: заголовок репозитория с вкладками. Вкладка "Безопасность" выделена темно-оранжевым контуром. 1. На левой боковой панели щелкните Оповещения о проверке кода.

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

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

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

  5. Оповещения, связанные с анализом CodeQL содержат описание проблемы. Нажмите кнопку Дополнительно, чтобы узнать, как исправить код.

Дополнительные сведения см. в разделе О предупреждениях о сканировании кода.

Примечание: Сведения о том, когда последний раз выполнялся анализ code scanning, можно просмотреть на странице состояния средства. Дополнительные сведения см. в разделе Сведения о странице состояния средства для сканирования кода.

Фильтрация оповещений функции "code scanning"

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

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

Снимок экрана: поле поиска в представлении оповещений code scanning. Пользователь ввел в поле "branch:dependabot". Имена всех допустимых ветвей с именем, включая dependabot, отображаются в раскрывающемся меню.

Если ввести несколько фильтров, в представлении будут отображаться оповещения, соответствующие всем этим фильтрам. Например, с фильтром is:closed severity:high branch:main будут отображаться только закрытые оповещения с высоким уровнем серьезности в ветви main. Исключение составляют фильтры, относящиеся к ссылкам (ref, branch и pr): например, с фильтром is:open branch:main branch:next отображаются открытые оповещения как из ветви main, так и из ветви next.

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

К фильтру tag можно добавить префикс -, чтобы исключить результаты с этим тегом. Например, с фильтром -tag:style отображаются только оповещения, у которых нет тега style , а фильтр -tag:experimental исключает все экспериментальные оповещения. Дополнительные сведения см. в разделе О предупреждениях о сканировании кода.

Ограничение результатов только кодом приложения

С помощью фильтра "Оповещения только в коде приложения" или ключевого слова autofilter:true со значением можно ограничить результаты оповещениями в коде приложения. Дополнительные сведения о типах кода, которые не являются кодом приложения, см. выше в разделе Сведения о метках для оповещений, не в коде приложения.

Поиск в оповещениях функции "code scanning"

В списке оповещений можно выполнять поиск. Это полезно, если в репозитории имеется много оповещений или если вы не знаете точное имя оповещения. GitHub Enterprise Cloud позволяет искать произвольный текст в следующих расположениях:

  • Имя оповещения.
  • Сведения об оповещении (сюда также входят сведения, скрытые из представления по умолчанию в разделе Показать более свертываемые)
Вид поискаПример синтаксисаРезультаты
Поиск по одному словуinjectionВозвращает все оповещения, содержащие слово injection
Поиск по нескольким словамsql injectionВозвращает все оповещения, содержащие слова sql или injection
Поиск точного совпадения
(используются двойные кавычки)
"sql injection"Возвращает все оповещения, содержащие точную фразу sql injection
Поиск с оператором ORsql OR injectionВозвращает все оповещения, содержащие слова sql или injection
Поиск с оператором ANDsql AND injectionВозвращает все оповещения, содержащие оба слова: sql и injection

Советы

  • Поиск по нескольким словам эквивалентен поиску с оператором OR.
  • Поиск с оператором AND возвращает результаты, в которых слова из поискового запроса находятся в имени оповещения или в сведениях о немв любом месте и в любом порядке.
  1. На GitHub.com перейдите на главную страницу репозитория. 1. Под именем репозитория щелкните Безопасность. Если вкладка "Безопасность" не отображается, выберите раскрывающееся меню и выберите пункт Безопасность. Снимок экрана: заголовок репозитория с вкладками. Вкладка "Безопасность" выделена темно-оранжевым контуром. 1. На левой боковой панели щелкните Оповещения о проверке кода.
  2. Справа от раскрывающихся меню Фильтры введите в поле поиска произвольного текста ключевые слова, которые нужно найти. Снимок экрана: поле поиска в представлении оповещений code scanning. Поле содержит предварительно определенные фильтры "is: open branch:main". Свободный текст sql или injection выделен темно-оранжевым цветом.
  3. Нажмите Ввод. В список оповещений попадут открытые оповещения функции "code scanning", соответствующие условиям поиска.

Отслеживание оповещений функции "code scanning" в проблемах

Примечание. Функция отслеживания оповещений code scanning в проблемах доступна в бета-версии и может быть изменена.

Эта функция поддерживает анализ с помощью встроенных инструментов, при котором используется GitHub Actions или использование инфраструктуры CI/CD извне, а также сторонних инструментов code scanning, но не сторонних инструментов отслеживания.

Оповещения Code scanning интегрируются со списками задач в GitHub Issues, чтобы упростить определение приоритетов и отслеживание оповещений при разработке. Дополнительные сведения о проблемах см. в разделе [AUTOTITLE](/issues/tracking-your-work-with-issues/about-issues).

Чтобы отслеживать оповещение проверки кода в проблеме, добавьте URL-адрес для оповещения в качестве элемента списка задач в ошибке. Дополнительные сведения о списках задач см. в разделе Сведения о списках задач. Дополнительные сведения о создании проблем для отслеживания оповещений code scanning см. в разделе Использование списков задач в проблемах для отслеживания оповещений сканирования кода.

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

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

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

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

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

Снимок экрана: поле поиска в code scanning, где развернуто раскрывающееся меню "Ветвь". Кнопка "Ветвь" выделена темно-оранжевым цветом.

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

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

## Закрытие оповещений

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

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

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

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

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

  1. На GitHub.com перейдите на главную страницу репозитория. 1. Под именем репозитория щелкните Безопасность. Если вкладка "Безопасность" не отображается, выберите раскрывающееся меню и выберите пункт Безопасность. Снимок экрана: заголовок репозитория с вкладками. Вкладка "Безопасность" выделена темно-оранжевым контуром. 1. На левой боковой панели щелкните Оповещения о проверке кода.

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

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

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

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

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

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

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

  1. На GitHub.com перейдите на главную страницу репозитория. 1. Под именем репозитория щелкните Безопасность. Если вкладка "Безопасность" не отображается, выберите раскрывающееся меню и выберите пункт Безопасность. Снимок экрана: заголовок репозитория с вкладками. Вкладка "Безопасность" выделена темно-оранжевым контуром. 1. На левой боковой панели щелкните Оповещения о проверке кода.

  2. В разделе "Code scanning" щелкните оповещение code scanning.

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

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

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

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

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

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

Примечания.

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

Аудит ответов на оповещения code scanning

You can audit the actions taken in response to code scanning alerts using GitHub tools. For more information, see "Аудит оповещений системы безопасности."

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