Skip to content

Latest commit

 

History

History
72 lines (44 loc) · 4.11 KB

File metadata and controls

72 lines (44 loc) · 4.11 KB

Обеспечения качества

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

Что бы было легче двигаться, вот небольшая подборка по типам:

Статический анализ кода

Некоторые ошибки кода трудно заметить при обычной работе. PHP — динамический язык, и некоторые несоответствия типов или опечатки не вызывают сразу явной ошибки.

Статические анализаторы читают код и находят такие ситуации:

  • Использование методов или свойств, которых не существует;
  • Передача аргументов неподходящего типа;
  • Использование переменных до их инициализации;
  • Фрагменты кода, которые никогда не выполняются.

Примеры инструментов: PHPStan, Psalm.

  1. PHPStan/Psalm — статический анализ кода, выявление ошибок типов и потенциальных дефектов на этапе разработки.

Проверка и исправление стиля кода

Инструменты проверки стиля помогают:

  • Проверять соответствие стандартам (PSR-12 и другие);
  • Автоматически исправлять мелкие ошибки, приводя код к единому стилю.

Примеры инструментов: PHP_CodeSniffer, PHP-CS-Fixer, Laravel Pint.

Тестирование

Тестирование позволяет проверять каждую функцию и её поведение в разных сценариях.

  • Модульные тесты проверяют отдельные методы и классы;
  • Мутационное тестирование оценивает, насколько тесты эффективны, и выявляет недостатки в покрытии.

Примеры инструментов: PHPUnit, Infection.

Метрики и анализ структуры проекта

По мере роста проекта субъективные ощущения перестают быть достаточными. Метрики дают цифры, которые показывают реальное состояние проекта:

  • Сложность методов и классов;
  • Дублирование кода;
  • Общая структура и объём кода.

Примеры инструментов: phpmetrics, phploc (заброшен!)

Рефакторинг

Автоматизированные инструменты помогают:

  • Обновлять устаревшие конструкции;
  • Устранять дублирование;
  • Приводить код к современным стандартам.

Пример инструмента: Rector.

Безопасность

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

Например команда: composer audit