Настройка проверки кода
Вы можете настроить то, как GitHub будет проверять код в проекте на наличие уязвимостей и ошибок. При выборе собственной конфигурации вы экономите время и выбираете оптимальную частоту проверки кода для проекта. Из этого урока вы узнаете об основах конфигурации проверки кода. Вы также узнаете, как настроить частоту проверок и оптимально запланировать их с учетом особенностей вашего репозитория и потребностей разработки.
Как обсуждалось в предыдущих уроках, проверку кода можно выполнить на GitHub с помощью GitHub Actions или из системы непрерывной интеграции (CI). При выборе параметра дополнительной настройки на GitHub создается настраиваемый файл рабочего процесса, который можно зафиксировать непосредственно в репозитории. Обычно изменять этот рабочий процесс не требуется. Однако при необходимости можно настроить некоторые параметры.
Например, можно изменить рабочий процесс анализа CodeQL в GitHub, указав частоту сканирований, языки или каталоги для проверки, а также элементы кода, которые будет проверять код CodeQL. Также может потребоваться изменить рабочий процесс анализа CodeQL, если для компиляции кода используется конкретный набор команд. Анализ CodeQL — это только один тип проверки кода, который можно выполнять в GitHub. GitHub Marketplace содержит несколько других рабочих процессов проверки кода.
Переключение с "По умолчанию" на "Расширенная настройка сканирования кода"
Если у вас уже есть репозиторий, настроенный для проверки кода с помощью метода установки по умолчанию, можно переключиться на использование расширенной установки в параметрах. Перейдите в раздел Проверка кода в меню Настройки > Безопасность и анализ кода, затем щелкните на значок переполнения трех точек (...). В выпадающем меню выберите Переключение на расширенный режим. Затем следуйте инструкциям по отключению CodeQL и повторно включите его с помощью созданного файла рабочего процесса расширенной установки.
Изменение рабочего процесса сканирования кода
GitHub сохраняет файлы рабочих процессов в каталоге .github/workflows репозитория. Вы можете найти добавленный рабочий процесс, выполнив поиск по имени файла. Например, по умолчанию файл рабочего процесса для сканирования кода CodeQL вызывается codeql-analysis.yml.
Чтобы изменить файл рабочего процесса, выполните следующие действия.
Чтобы открыть редактор рабочего процесса, щелкните значок "Изменить " в правом верхнем углу представления файла.
Внесите изменения.
После изменения файла нажмите кнопку "Зафиксировать изменения " и заполните форму "Фиксация изменений". Вы можете выбрать вариант фиксации непосредственно в текущей ветви или создать новую ветвь и запустить запрос на вытягивание.
Сведения об общих параметрах конфигурации проверки кода см. в следующих разделах.
Настройка частоты
Обычно изменения в файл рабочего процесса вносятся для настройки частоты проверки кода. Вы можете настроить рабочий процесс анализа CodeQL, чтобы проверять код по расписанию или при наступлении конкретных событий в репозитории. Вы также можете изменить файл рабочего процесса, чтобы проверять код при отправке изменений и всякий раз, когда создается пулл-реквест. При настройке этой частоты разработчики не могут вводить новые уязвимости и ошибки в коде. Сканирование кода по расписанию сообщает вам о последних уязвимостях и ошибках, которые GitHub, исследователи безопасности и сообщество обнаруживают. Даже если разработчики не активно поддерживают репозиторий.
Проверка при отправке
По умолчанию рабочий процесс анализа CodeQL использует событие on:push для активации проверки кода при каждой отправке в ветвь репозитория по умолчанию и все защищенные ветви. Для активации проверки кода в указанной ветви в ней должен существовать рабочий процесс. При сканировании по нажатию результаты отображаются на вкладке Безопасность для репозитория.
Кроме того, когда on:push проверка возвращает результат, который можно сопоставить с открытым запросом на вытягивание, эти оповещения автоматически отображаются в запросе на вытягивание в том же месте, что и другие оповещения запроса на вытягивание. Оповещения определяются путем сравнения имеющихся результатов анализа заголовка ветви с результатами анализа целевой ветви.
Проверка при запросе на вытягивание
Рабочий процесс анализа CodeQL по умолчанию использует событие pull_request для активации проверки кода для запросов на вытягивание, предназначенных для ветви по умолчанию. Если запрос на вытягивание выполняется из закрытой вилки, событие активируется только в том случае, pull_request если выбран параметр "Запуск рабочих процессов из запросов на вытягивание" в параметрах репозитория. Если вы сканируете запросы на вытягивание, результаты отображаются в виде оповещений в проверке запроса на вытягивание.
Если вы используете триггер, настроенный pull_request для проверки фиксации слияния запроса на вытягивание, а не головной фиксации, он создает более эффективные и точные результаты, чем сканирование головки ветви на каждой отправке. Однако если вы используете систему CI/CD, которая не может быть настроена для активации запросов на вытягивание, вы по-прежнему можете использовать on:push триггер, чтобы сканирование кода сопоставляет результаты для открытия запросов на вытягивание в ветви и добавляет оповещения в виде заметок в запрос на вытягивание.
Определение уровней серьезности для сбоя проверки запроса на вытягивание
По умолчанию оповещения только с уровнем серьезности или уровнем ErrorCritical серьезности безопасности или High причиной сбоя проверки запроса на вытягивание. Сбои пул-реквеста не останавливают проверку кода, но являются блокировкой при попытке объединить код. Список сбоев запросов на вытягивание можно найти на вкладке "Оповещения проверки кода" под "Безопасностью" вашего репозитория. В параметрах репозитория можно изменить уровни серьезности оповещений и серьезности безопасности, которые вызывают сбой проверки запроса на вытягивание.
На GitHub.com перейдите на главную страницу репозитория. В поле имени репозитория выберите "Параметры".
На левой боковой панели выберите "Безопасность и анализ кода".
В разделе «Сканирование кода» под «Правила защиты» используйте раскрывающееся меню, чтобы выбрать уровень серьезности, который должен вызвать неуспешную проверку запроса на слияние.
Отключение ненужных проверок запросов на вытягивание
Активацию проверки кода можно отключить для определенных запросов на вытягивание, предназначенных для ветви по умолчанию, независимо от того, какие файлы были изменены. Этот параметр можно настроить, on:pull_request:paths-ignore указав или on:pull_request:paths в рабочем процессе сканирования кода. Например, если единственными изменениями в запросе на вытягивание являются файлы с расширениями .md или .txt, можно использовать следующий массив paths-ignore.
on:
push:
branches: [main, protected]
pull_request:
branches: [main]
paths-ignore:
- '**/*.md'
- '**/*.txt'
Настройка расписания проверки
Если вы используете рабочий процесс анализа CodeQL по умолчанию, рабочий процесс сканирует код в репозитории один раз в неделю в случайно созданных днях и времени, а также сканирует события. Чтобы настроить это расписание, измените значение cron в рабочем процессе.
В следующем примере показан рабочий процесс анализа CodeQL для репозитория с вызовом ветвь по умолчанию и одним защищенная ветвь с именем mainprotected:
on:
push:
branches: [main, protected]
pull_request:
branches: [main]
schedule:
- cron: '20 14 * * 1'
Этот рабочий процесс проверяет:
- каждую отправку в ветвь по умолчанию и защищенную ветвь;
- каждый запрос на вытягивание в ветвь по умолчанию;
- ветвь по умолчанию каждый понедельник в 14:20 UTC.