Перейти к содержанию

Качество кода (Code Smells)

Модуль Качество кода (техническое название — Code smells) находит в исходном коде признаки проблем дизайна и качества — так называемые «запахи кода»: например, магические числа, мёртвый или закомментированный код, слишком длинные функции, дублированную логику. Это не уязвимости безопасности, а замечания о сопровождаемости: код с такими признаками работает, но его сложнее и дороже развивать. Модуль хранит историю сканирований по репозиторию и позволяет просматривать каждое замечание с переходом к конкретным строкам кода.

Что находит анализ

Каждое замечание относится к одной из категорий:

Категория Что охватывает
Лучшие практики Нарушения общепринятых практик написания кода
Поддерживаемость кода Признаки, усложняющие сопровождение: длинные функции, дублированная логика, избыточная связанность
Производительность Конструкции, способные приводить к неэффективной работе кода

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

Как запускается анализ

Сканирование запускается по требованию: пользователь вручную запускает пайплайн проекта с шагом анализа качества кода. Каждый запуск формирует отдельный отчёт (сканирование) с собственным номером и привязкой к ветке. Результаты появляются в разделе аналитики через несколько минут после завершения пайплайна.

Где смотреть результаты

Раздел доступен на уровне проекта:

Проект → боковое меню → Анализ → Качество кода

Список отчётов

Таблица всех сканирований по репозиторию:

Колонка Что показывает
Номер отчёта Порядковый номер сканирования в репозитории
Ветка Ветка, по которой выполнялось сканирование
Время запуска Когда сканирование было запущено
Время завершения Когда сканирование завершилось
Количество замечаний Сколько замечаний найдено в этом сканировании
Ссылка на отчёт Ссылка на файл полного отчёта (если файл сформирован)

Над таблицей отображается счётчик отчётов в выборке. Список можно сортировать; по умолчанию отчёты отсортированы по дате создания, новые сверху. Клик по строке (действие Открыть отчёт) открывает страницу деталей.

Если за выбранный период сканирований не было, выводится сообщение За период отчётов нет.

Детали отчёта

Страница конкретного сканирования содержит сводку — репозиторий, ветка, время запуска и завершения, общее число замечаний, версия анализатора, ссылка на файл отчёта — и таблицу замечаний:

Колонка Что показывает
Правило Идентификатор правила анализа, по которому найдено замечание
Файл + строки Путь к файлу и диапазон строк. Это ссылка: по клику открывается файл в репозитории с подсвеченным диапазоном строк
Сообщение Описание проблемы и рекомендация по исправлению
Severity Критичность замечания (см. ниже)
Категория Лучшие практики / Поддерживаемость кода / Производительность
Технологии Языки или технологии, к которым относится замечание
Является ошибкой Уверенность анализа в том, что замечание — реальная проблема: Высокая / Средняя / Низкая вероятность
Влияние Степень влияния проблемы на код: Высокая / Средняя / Низкая
Вероятность эксплуатации Вероятность того, что проблема проявится: Высокая / Средняя / Низкая

Если замечаний в отчёте нет, выводится Замечаний нет.

Уровни критичности

Уровень Что означает
Критическая проблема Замечание, требующее исправления
Потенциальная проблема Замечание, которое стоит проверить и при подтверждении исправить
Рекомендация Информационное замечание, улучшение по желанию

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

Фильтры и параметры

Фильтр Описание По умолчанию
Ветка Сканирования отбираются по ветке master
Дата с Начало периода Текущая дата
Дата по Конец периода Текущая дата
Сортировка Поле и направление сортировки списка отчётов По дате создания, новые сверху

Список замечаний в отчёте поддерживает постраничный просмотр.

Как читать результаты

  • Начинайте с замечаний уровня Критическая проблема и с высокой вероятностью ошибки — это наиболее достоверные и значимые находки.
  • Динамика количества замечаний между отчётами по одной ветке показывает, улучшается или деградирует качество кода.
  • Сканируйте перед слиянием значимых изменений: сравнение отчёта по рабочей ветке с отчётом по основной ветке покажет, какие замечания привнесены именно вашими изменениями.
  • Замечания категории Поддерживаемость кода редко требуют срочной реакции, но их накопление — сигнал к плановому рефакторингу.