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

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

## Introduction

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

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

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

Это пошаговое руководство, поэтому оно способствует пониманию скорости. Основные инструкции по фиксации автофикса или увольнения поиска см. в руководстве по автофиксу [: AUTOTITLE](/ru/code-security/how-tos/maintain-quality-code/fix-findings-on-a-pr).

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

* Code Quality включен в репозитории, в который вы вносите свой вклад. См [. раздел AUTOTITLE](/ru/code-security/how-tos/maintain-quality-code/enable-code-quality).
* Репозиторий использует язык, поддерживаемый CodeQL таким образом, чтобы создаются результаты и оценки на основе правил. Список поддерживаемых языков см. в разделе [Качество кода GitHub](/ru/code-security/concepts/code-quality/code-quality#supported-languages).
* У вас есть запрос на вытягивание, открытый для ветви по умолчанию, с по крайней мере одним 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 в качестве шлюза слияния. Например, если пороговое значение для объединения имеет значение "Предупреждение и выше", каждое обнаружение на уровне **предупреждений***и***ошибок** должно быть исправлено или отклонено, прежде чем можно **объединить (** примечания не препятствуют слиянию). Аналогичным образом, более строгое пороговое значение может потребовать разрешения *всех* выводов перед слиянием.

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

![Скриншот баннера блока объединения в разделе «Проверки» пул-реквеста.](/assets/images/help/code-quality/code-quality-merge-block.png)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* **Отзывов.** Оценки надежности и обслуживания репозитория вычисляются из результатов в ветви по умолчанию. Разрешение выводов перед слиянием заключается в том, как сохранить эти оценки от смещения. См [. раздел AUTOTITLE](/ru/code-security/code-quality/reference/metrics-and-ratings).
* **Невыполненной работы.** Все, что вы не исправляете в запросе на вытягивание, присоединяет невыполненные результаты в ветви по умолчанию. Работа с невыполненной работой является дисциплиной собственного. См [. раздел AUTOTITLE](/ru/code-security/tutorials/improve-code-quality/raise-your-quality-rating).
* **Соответствия.** Если класс результатов действительно не должен достичь ветви по умолчанию, набор правил "Требовать результаты качества кода" помогает администраторам репозитория и владельцам организации кодировать это решение как шлюз слияния. См [. раздел AUTOTITLE](/ru/code-security/how-tos/maintain-quality-code/unblock-your-pr).

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

## Troubleshooting

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

## Conclusion

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

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

* Примените то же мышление к существующей невыполненной работы: [Повышение оценки качества кода репозитория](/ru/code-security/tutorials/improve-code-quality/raise-your-quality-rating).
* Узнайте, как результаты преобразовывались в оценки, чтобы оценить влияние работы: [Справочник по метрикам и оценкам](/ru/code-security/code-quality/reference/metrics-and-ratings).