Skip to main content

Предотвращение проблем с качеством кода для достижения ветви по умолчанию

Перейдите к Code Quality результатам запроса на вытягивание, включая понимание меток серьезности, когда каждое обнаружение лучше всего исправлено, делегировано или отклонено, и как эти варианты определяют работоспособность кода репозитория.

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

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

GitHub Team или GitHub Enterprise Cloud

Introduction

В этом руководстве вы следуйте одному запросу на вытягивание с помощью Code Qualityанализа из первого комментария для слияния. Вы узнаете:

  • Как прочитать Code Quality комментарии по запросу на вытягивание и сообщить двум типам поиска.
  • Как использовать метку серьезности поиска, чтобы решить, что исправить, что следует закрыть, и в каком порядке.
  • Как выбрать варианты, которые вы делаете при запросе на вытягивание, формируют оценки репозитория, невыполненные работы и шлюзы слияния.

К концу вы устраните все блокирующие поиски в примере запроса на вытягивание и объединили его с чистой Code Quality проверкой, и вы узнаете , почему вы сделали каждый выбор.

Это пошаговое руководство, поэтому оно способствует пониманию скорости. Основные инструкции по фиксации автофикса или увольнения поиска см. в руководстве по автофиксу : AUTOTITLE.

Перед началом работы

  • Code Quality включен в репозитории, в который вы вносите свой вклад. См . раздел AUTOTITLE.
  • Репозиторий использует язык, поддерживаемый CodeQL таким образом, чтобы создаются результаты и оценки на основе правил. Список поддерживаемых языков см. в разделе Качество кода GitHub.
  • У вас есть запрос на вытягивание, открытый для ветви по умолчанию, с по крайней мере одним Code Quality поиском для проверки. Если у вас нет запроса на вытягивание, вы можете выполнить приведенный ниже пример.

В этом руководстве мы будем использовать работающий пример: запрос на вытягивание, который рефакторинг некоторых кодов вводит несколько проблем качества кода в ветвь по умолчанию, если она объединена по мере ее использования. Проверка Code Quality автоматически выполняется в запросе на вытягивание и сообщила о нескольких результатах в виде комментариев.

Почему запрос на вытягивание является лучшим местом для исправления поиска

Каждый поиск, который вы не решаете на этапе запроса на вытягивание, становится элементом действия в невыполненной работы репозитория, и технический долг часто дороже платить позже, чем сейчас. Сейчас, пока запрос на вытягивание открыт, контекст и намерение кода по-прежнему свежи в вашем уме, что делает каждое обнаружение и его автофикс, быстрее оценить, применить или уверенно закрыть.

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

Шаг 1. Поиск комментариев в запросе Code Quality на вытягивание

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

  1. Выводы, основанные на**github-code-quality[бот]** правилах, публикуются в . Code Quality используется CodeQL для проверки изменений в наборе правил, и каждый комментарий включает предлагаемый автофикс.

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

В нашем примере мы рассмотрим три комментария, которые пришли из github-code-quality[бот], поэтому они основаны на правилах выводы. В собственном запросе на вытягивание могут отображаться оба типа. Обратите внимание, что перед дальнейшим переходом, так как метки серьезности (шаг 2) применяются только к комментариям на основе правил.

Шаг 2. Прочитайте метку серьезности, чтобы решить, что важно

Каждое обнаружение github-code-quality[бот] на основе правил содержит метку серьезности— ошибка, предупреждение или примечание. Найдите метку в одном из комментариев и проверьте ее в этой таблице.

СерьёзностьОпределение
ErrorУказывает на проблему высокой степени серьезности, которая может привести к ошибкам, сбоям или серьезным рискам удобства обслуживания.
ПредупреждениеУказывает на проблему средней степени серьезности, которая может повлиять на качество или надежность кода, но не является критической в данный момент.
ЗаметкаУказывает на проблему низкой степени серьезности, незначительное улучшение или рекомендацию. Эти результаты полезны для поддержания работоспособности и удобства сопровождения кода.

Метка выполняет два задания одновременно:

  1. Он сообщает вам, что сначала исправить. Серьезность отражает ожидаемое влияние правила в типичном коде. В нашем примере вы начнете с ошибки, а затем предупреждение и обрабатываете примечание как необязательный польский.
  2. Это может решить, можно ли объединить вообще. Администратор репозитория или владелец организации может настроить Code Quality в качестве шлюза слияния. Например, если пороговое значение для объединения имеет значение "Предупреждение и выше", каждое обнаружение на уровне предупрежденийиошибок должно быть исправлено или отклонено, прежде чем можно объединить ( примечания не препятствуют слиянию). Аналогичным образом, более строгое пороговое значение может потребовать разрешения всех выводов перед слиянием.

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

Скриншот баннера блока объединения в разделе «Проверки» пул-реквеста.

В нашем примере шлюз имеет значение "Предупреждение и выше", поэтому баннер присутствует: ошибка и предупреждение блокируют слияние, а примечание не является. Это сообщает вам, что необходимо очистить перед объединением этого запроса на вытягивание.

Если баннер блока слияния не указывает уровень серьезности, необходимо очистить все результаты, чтобы объединить запрос на вытягивание.

Шаг 3. Разрешение каждого поиска

Для каждого поиска определите, применяется ли он к коду и, если это делает, как исправить его. Это приводит к одному из трех действий.

AssessmentРекомендуемое действиеПримечания.
Поиск является допустимым, и предлагаемое исправление выглядит правильно
Применение предложения автофиксаПри нажатии кнопки "Фиксация" не используется AI credits, а автоматические исправления на основе правил не требуют Copilot лицензии.
Поиск является реальным, но вы хотите исправить несколько раз, или предлагаемое исправление нуждается в адаптации
Делегирование Copilot— упоминается @copilot в комментарии, чтобы передать работу облачному агенту.
Copilot реагирует на 👀, запускает новый сеанс агента и отправляет необходимые исправления в ветвь запроса на вытягивание.
Copilot Требуется лицензия и используетсяAI credits.
Поиск не применяется, например, это тестовый код, преднамеренный шаблон или ложноположительное срабатываниеНажмите кнопку "Закрыть поиск " и укажите причинуВы сможете объединить запрос на вытягивание, но поиск будет отображаться в невыполненной записи репозитория и в будущих запросах на вытягивание.

Примените практику к собственному запросу на вытягивание, работая в порядке серьезности.

В нашем примере:

  • Результаты на уровне ошибок и предупреждений являются подлинными ошибками, и предлагаемые автофиксы выглядят разумно, поэтому мы применяем предложения автофикса. Результаты разрешают и выпадают из числа блокировок.
  • Поиск на уровне заметок помечает незначительный шаблон в вспомогательном помощнике рядом с тестом. Это намеренно, поэтому мы уволим его с такой причиной, как "Используется в тестах".
  • Существует несколько дополнительных выводов на уровне заметок. Вместо того чтобы работать с каждым предложением автофикса по одному, мы закомментируем: "@copilotИсправьте все оставшиеся результаты на уровне заметок". Мы отслеживаем Copilotход выполнения на вкладке "Агенты" репозитория и проверяем фиксации, которые он отправляет в запрос на вытягивание, когда они будут готовы.

Шаг 4. Подтверждение разблокировки запроса на вытягивание (необязательно)

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

В нашем примере с разрешением результатов ошибок и предупреждений баннер блока слияния исчезает. Запрос на вытягивание теперь ясно для слияния.

Если баннер по-прежнему там, это означает, что поиск по или выше уровня серьезности блокировки по-прежнему открыт.

Шаг 5. Устранение результатов на основе ИИ Copilot

Если у вашей организации есть Copilot лицензии и функции искусственного интеллекта включены для вашей организации, вы также увидите комментарии, опубликованные на странице Copilot. Это выводы, на основе ИИ , представленные на шаге 1, и они приходят из, а не из Обзор кода Copilotgithub-code-quality[бот].

Если результаты на основе правил соответствуют вашим изменениям с фиксированным набором CodeQL правил, Обзор кода Copilot причины намерения кода. Он перехватывает проблемы качества, которые не сопоставляются с определенным правилом, поэтому это полезное дополнение к комментариям на основе правил, а не замене для них.

Эти результаты не содержат метку серьезности "Ошибка", "Предупреждение" или "Примечание". Так как шлюз слияния, который вы видели на шаге 2, учитывает только серьезность выводов на основе правил, результаты, основанные на искусственном интеллекте, никогда не блокируют запрос на вытягивание самостоятельно. Это не делает их необязательным, разрешение их в контексте по-прежнему является оптимальным местом для сохранения проблем качества из вашей ветви по умолчанию.

Вы разрешаете поиск на основе искусственного интеллекта с помощью одного и того же трех вариантов, которые вы использовали на шаге 3:

  • Примените предложение автофикса. Каждый комментарий включает предлагаемое исправление. Если это правильно as-is, нажмите кнопку "Зафиксировать предложение". Применение автофикса не используется GitHub AI Credits.
  • Делегирование Copilot— упоминается @copilot в комментарии, чтобы передать работу облачному агенту. Copilot реагирует на 👀, запускает новый сеанс агента и отправляет необходимые исправления в ветвь запроса на вытягивание. Для этого параметра требуется Copilot лицензия и используется GitHub AI Credits.
  • Устраните комментарий. Если он не применяется к коду, нажмите кнопку "Разрешить".

Как это подключается к остальной части работоспособности кода

Запрос на вытягивание, который вы только что очистили, является частью более крупной картины:

  • Отзывов. Оценки надежности и обслуживания репозитория вычисляются из результатов в ветви по умолчанию. Разрешение выводов перед слиянием заключается в том, как сохранить эти оценки от смещения. См . раздел AUTOTITLE.
  • Невыполненной работы. Все, что вы не исправляете в запросе на вытягивание, присоединяет невыполненные результаты в ветви по умолчанию. Работа с невыполненной работой является дисциплиной собственного. См . раздел AUTOTITLE.
  • Соответствия. Если класс результатов действительно не должен достичь ветви по умолчанию, набор правил "Требовать результаты качества кода" помогает администраторам репозитория и владельцам организации кодировать это решение как шлюз слияния. См . раздел AUTOTITLE.

Самые здоровые команды объединяют все три: преднамеренную проверку и исправление на этапе запроса на вытягивание, периодическую невыполненную работу и принудительное пороговое значение на границе слияния.

Troubleshooting

  • Я не вижу Code Quality комментариев. Проверка может по-прежнему выполняться, изменения могут не касаться поддерживаемого языка или у вас нет никаких выводов. Убедитесь, что включена проверка Code Quality (называется "CodeQL - Качество кода") временем завершения. См . раздел AUTOTITLE.
  • Я вижу только комментарии от github-code-quality[бот], никогда не из Copilot. Результаты, на основе искусственного интеллекта, требуют Copilot лицензий и функций ИИ, включенных для вашего предприятия. Без них вы увидите только выводы на основе правил.
  • Я не вижу автофиксов для моих результатов качества кода. Создание автофикса используется GitHub AI Credits. Возможно, ваша организация истощила свой ежемесячный AI creditsбюджет.
  • Баннер блока слияния не очищается. По крайней мере одна обнаруженная или выше степень серьезности блокировки по-прежнему открыта. Если вы не видите уровень серьезности, определенный в баннере блока слияния, это означает, что репозиторий использует самые жесткие пороги качества кода, которые требуют, чтобы все результаты были устранены перед слиянием. См . раздел AUTOTITLE.

Conclusion

В этом руководстве вы работали с Code Quality комментариями по запросу на вытягивание, использовали серьезность для определения приоритетов исправления и разрешали каждый поиск намеренно перед объединением запроса на вытягивание. Рассматривая каждое обнаружение и его автофикс, как небольшое, в контекстном решении, вы не позволили получить долг качества кода от достижения ветви по умолчанию.

Дальнейшие действия