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

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

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

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

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

Code scanning доступен для принадлежащих организации репозиториев в GitHub Enterprise Server. Для этой функции требуется лицензия на GitHub Advanced Security. Дополнительные сведения см. в разделе Сведения о GitHub Advanced Security.

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

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

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

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

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

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

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

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

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

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

Примечание. В анализе результатов работы функции "code scanning" с помощью 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 .

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

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

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

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

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

Советы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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