# Повышение качества кода репозитория

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

> \[!NOTE]
> GitHub Code Quality в настоящее время находится в public preview и может быть изменен.
> Во время public preview, Code Quality не будут оплачиваться, хотя Code Quality сканирование займет GitHub Actions минут.

## Введение

Это руководство проведёт вас через GitHub Code Quality обзор, приоритетизацию и устранение проблем со здоровьем кода в вашем репозитории — помогая систематически сократить технический долг, повысить надёжность и поддерживаемость, а также донести свой вклад до заинтересованных сторон.

### Предпосылки

* ```
          Code Quality включена для вашего репозитория. См [. раздел AUTOTITLE](/code-security/code-quality/how-tos/enable-code-quality).
  ```
* Если вы включаете GitHub Code Quality его впервые, убедитесь, что вы подождали несколько минут после включения, чтобы полностью CodeQL сканировать стандартную ветку.

## 1. Оцените общую работоспособность кода репозитория

1. Перейдите на **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield" aria-label="shield" role="img"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> Security and quality** вкладку вашего репозитория, затем под «<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-code-review" aria-label="code review" role="img"><path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path></svg> Качество кода», нажмите **Стандартные выводы**.
2. Обзор на панели «Стандартные выводы» даёт вам мгновенную оценку состояния вашей ветки по умолчанию на сегодняшний день:

   * ```
          **Рейтинг поддерживаемости** отражает наличие и серьезность обнаруженных данных о мертвом коде, дублировании, сложности, отсутствующей документации и несоблюдении рекомендаций.
     ```
   * ```
          **Рейтинг надежности** отражает наличие и серьезность результатов проверки правильности, производительности, обработки ошибок, параллелизма и специальных возможностей кода.
     ```

   ![Скриншот оценок качества кода в виде "Стандартные выводы" для Code Quality.](/assets/images/help/code-quality/all-findings-overview-repo.png)

## 2. Определите и приоритизируйте наиболее значимые результаты

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

* Сгруппированы по **правилам**, чтобы вы могли видеть, какие типы проблем больше всего влияют на вашу кодовую базу.
* Присваивается уровень **важности** («Ошибка», «Предупреждение», «Примечание»).

### Сосредоточьтесь на результатах с высокой степенью серьезности

Используйте **фильтры** панели мониторинга, чтобы в первую очередь сосредоточиться на результатах с самым высоким уровнем серьезности («Ошибки») и проверить, какие правила вызывают больше всего проблем.

![Скриншот, показывающий фильтры панели мониторинга для представления "Стандартные выводы".](/assets/images/help/code-quality/standard-findings-filters.png)

Чтобы повысить удобство обслуживания или надежность репозитория, необходимо устранить (исправить или отклонить) все результаты с самым высоким уровнем серьезности для этой метрики.

Например, чтобы улучшить метрику "Надежность" репозитория с **"Требуется улучшение** " до **"Удовлетворительно**", необходимо рассмотреть и устранить все **обнаруженные ошибки на уровне ошибок, влияющие** на надежность. Если у вас есть одна или несколько обнаруженных ошибок на уровне ошибки, ваш рейтинг не может быть выше «Требует улучшения». См [. раздел AUTOTITLE](/ru/enterprise-cloud@latest/code-security/code-quality/reference/metrics-and-ratings).

## 3. Изучите группу выводов и поймите контекст

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

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

   ![Скриншот, показывающий правило в виде "Стандартные выводы". Название правила выделено темно-оранжевым цветом.](/assets/images/help/code-quality/click-rule-name.png)

2. ```
          **Нажмите Показать больше**, затем ознакомьтесь с объяснением правила, рекомендуемым исправлением, примерами вспомогательного кода и ссылками.
   ```

   ![Скриншот, показывающий результаты для правила качества кода. Текст «Показать еще» выделен темно-оранжевым цветом.](/assets/images/help/code-quality/click-show-more.png)

## 4. Выберите варианты исправления

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

### Создание автоисправления

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

1. Справа от отдельного находки нажмите **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-copilot" aria-label="copilot" role="img"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg> Generate fix**.

2. Внимательно просмотрите различия предложенного изменения и, если вы согласны с ним, нажмите **кнопку Открыть запрос на вытягивание**.

3. В диалоговом окне "Зафиксировать автоисправление в ветвь" выберите "Открыть запрос на вытягивание", затем нажмите **Зафиксировать изменение**.

   > \[!TIP]
   > В настоящее время невозможно создать автоматические исправления для группы находок в массовом порядке.
   >
   > Если вы хотите устранить несколько находок с помощью одного запроса на вытягивание, повторите шаги 1 и 2 выше, затем в диалоговом окне "Зафиксировать автоисправление в ветвь" используйте имя ветви, которое вы уже создали для первого автоисправления, затем выберите "Открыть запрос на вытягивание" и **зафиксируйте изменение**.
   >
   > Исправление будет добавлено в существующий черновик запроса на вытягивание для вашей ветви.

4. Когда вы будете готовы, измените статус запроса на вытягивание с «Черновик» на «Готов к проверке» и внимательно изучите предложенные изменения. Дождитесь завершения и прохождения всех проверок CI и автоматических тестов, прежде чем объединять запрос на вытягивание.

### Отклонение результата

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

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

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

1. Чтобы отклонить вывод, нажмите **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield-slash" aria-label="Dismiss" role="img"><path d="M8.533.133a1.75 1.75 0 0 0-1.066 0l-2.091.67a.75.75 0 0 0 .457 1.428l2.09-.67a.25.25 0 0 1 .153 0l5.25 1.68a.25.25 0 0 1 .174.239V7c0 .233-.008.464-.025.694a.75.75 0 1 0 1.495.112c.02-.27.03-.538.03-.806V3.48a1.75 1.75 0 0 0-1.217-1.667L8.533.133ZM1 2.857l-.69-.5a.75.75 0 1 1 .88-1.214l14.5 10.5a.75.75 0 1 1-.88 1.214l-1.282-.928c-.995 1.397-2.553 2.624-4.864 3.608-.425.181-.905.18-1.329 0-2.447-1.042-4.049-2.356-5.032-3.855C1.32 10.182 1 8.566 1 7Zm1.5 1.086V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297.05.02.106.02.153 0 2.127-.905 3.439-1.982 4.237-3.108Z"></path></svg>**.
2. Находка исчезнет из списка открытых находок. Вы по-прежнему можете просмотреть и повторно открыть отклоненные результаты на вкладке «Отклоненные» в верхней части страницы.

## 5. Измеряйте улучшения и сообщайте о влиянии

После завершения работ по устранению вернитесь на панель управления «Стандартные выводы» для просмотра обновлённых показателей надёжности и поддерживаемости.

Сообщая заинтересованным сторонам о своем влиянии, подчеркните:

* Любое **уменьшение** количества результатов для «Надежности» или «Ремонтопригодности».
* Любые **изменения в рейтинге** надежности или ремонтопригодности.
* Требования, которые были выполнены для достижения изменения рейтинга. Например, исправление всех обнаруженных результатов на уровне "Предупреждение" привело к изменению рейтинга с "Удовлетворительно" на "Хорошо".

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

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

Если вы еще этого не сделали, настройте пороговые значения качества для запросов на вытягивание, чтобы заблокировать любые изменения в базе кода, которые могут снизить работоспособность базы кода. См [. раздел AUTOTITLE](/ru/enterprise-cloud@latest/code-security/code-quality/how-tos/set-pr-thresholds).

## Дальнейшие шаги

* Еще больше сократите технический долг, исправив результаты в недавно измененных файлах. См [. раздел AUTOTITLE](/ru/enterprise-cloud@latest/code-security/code-quality/tutorials/improve-recent-merges).
* Оставляйте обратную GitHub Code Quality связь в [обсуждении сообщества](https://github.com/orgs/community/discussions/177488).