Русский
Русский
English
Статистика
Реклама

Code review, это просто

Добрый день, уважаемые хабравчане,

В последнее время в сообществе PHP часто слышу обсуждения по поводу code review, решил внести свой вклад, хочу рассказать о возможностях которые предназначены упростить вам жизнь и улучшить качество кода в вашем проекте. Актуально не только для PHP, подобные инструменты, описанным здесь, существуют также и для других языков программирования, например я узнал о таковых когда участвовал в проекте на NodeJS


Из чего состоит review


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

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

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

Pre-commit review


Вид review, проводится перед внесением изменений в вашу систему управления версиями (git, svn, mercurial и т.п.). Если в поисковике наберете pre-commit php, то он вам выдаст несколько уже готовых скриптов проводящих анализ написанного кода. Для git, скрипт надо разместить в папке .git/hooks/ и тогда каждый раз, когда делаете commit он будет запускаться и если будут обнаружены ошибки, то просто не даст запушить код в репозиторий. Для некоторых IDE есть отдельные плагины которые делают то же самое, но что, если у вас большая команда и все пользуются разными редакторами? Да и настроить данный скрипт один раз, выложив его в ваш репозиторий, проще, нежели для каждого разработчика по отдельности настраивать его IDE. Что еще важно, в данный скрипт вы можете добавить любые другие инструменты которые используете в своей команде, такие как статический анализатор (например phpstan), и/или производить юнит тестирование (например phpunit)

Ниже представлены несколько инструментов которыми вы можете проводить анализ кода и вставить их в pre-commit скрипт если пожелаете.

php -l (Syntax check only (lint)) встроенная в ядро PHP проверка синтаксиса.

php-cs-fixer (PHP Coding Standards Fixer) Исправляет ваш код в соответствии со стандартами PSR-1, PSR-2 и т. д., или другим сообществам, таким как Symfony. Вы также можете определить свой (командный) стиль через конфигурацию. Т.е. во всей вашей команде стиль кода будет один.

php-cs + php-cbf (PHP CodeSniffer + PHP Code Beautifier) Представляет собой набор из двух PHP-скриптов; Основной скрипт phpcs, который выделяет PHP, JavaScript и CSS-файлы для обнаружения нарушений определенного стандарта кодирования, а второй скрипт phpcbf автоматически исправляет стандартные нарушения кодирования. Схожий инструмент с php-cs-fixer.

php-md (PHP Mess Detector) Побочный проект PHP Depend, цель которого стать PHP-эквивалентом хорошо известного инструмента Java PMD. Берет заданную базу исходного кода PHP и ищет несколько потенциальных проблем в этом источнике. Эти проблемы могут быть такими, как синтаксические ошибки, субоптимальный код, слишком сложные выражения, неиспользуемые параметры/методы/свойства.

php-cpd (PHP Copy/Paste Detector) Детектор копирования / вставки для кода PHP. Т.е. находит одинаковые блоки кода в различных частях приложения которые можно вынести в отдельные функции/методы.

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

Вывод


Используя имеющиеся в мире разработки инструменты многие рутинные процессы по проверке кода вы можете автоматизировать, что на порядок улучшит его качество (т.к. мы исключаем человеческий фактор) и больше уделить вниманию design review. Для большей уверенности в использовании этих инструментов всей командой их можно внедрять в pre-commit скрипт который запускается перед созданием коммита в вашей системе управления версиями.
Источник: habr.com
К списку статей
Опубликовано: 05.07.2020 16:17:42
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Php

Статья

Категории

Последние комментарии

© 2006-2020, personeltest.ru