Alvaros
.
- Регистрация
- 14.05.16
- Сообщения
- 21.452
- Реакции
- 101
- Репутация
- 204
Добрый день, уважаемые хабровчане!
В последнее время в сообществе PHP часто слышу обсуждения по поводу code review, решил внести свой вклад, хочу рассказать о возможностях которые предназначены упростить вам жизнь и улучшить качество кода в вашем проекте. Актуально не только для PHP, подобные инструменты, описанным здесь, существуют также и для других языков программирования, например я узнал о таковых когда участвовал в проекте на NodeJS.
Из чего состоит review
design review является темой для отдельной статьи и здесь обсуждаться не будет, хочу вкратце рассказать об инструментах которые помогают проводить code review.
Pre-commit review
Вид review, проводится перед внесением изменений в вашу систему управления версиями (git, svn, mercurial и т.п.). Если в поисковике наберете “pre-commit php”, то он вам выдаст несколько уже готовых скриптов проводящих анализ написанного кода. Для git, скрипт надо разместить в папке “.git/hooks/” и тогда каждый раз, когда делаете commit он будет запускаться и если будут обнаружены ошибки, то просто не даст запушить код в репозиторий. Для некоторых IDE есть отдельные плагины которые делают то же самое, но что, если у вас большая команда и все пользуются разными редакторами? Да и настроить данный скрипт один раз, выложив его в ваш репозиторий, проще, нежели для каждого разработчика по отдельности настраивать его IDE. Что еще важно, в данный скрипт вы можете добавить любые другие инструменты которые используете в своей команде, такие как статический анализатор (например
Инструменты помогающие проводить code review
Вы можете более глубоко погрузиться в автоматизацию проверки кода и вероятно найдете много других интересных инструментов.
Вывод
Используя имеющиеся в мире разработки инструменты многие рутинные процессы по проверке кода вы можете автоматизировать, что на порядок улучшит его качество (т.к. мы исключаем человеческий фактор) и больше уделить вниманию design review. Для большей уверенности в использовании этих инструментов всей командой их можно внедрять в pre-commit скрипт который запускается перед созданием коммита в вашей системе управления версиями.
В последнее время в сообществе PHP часто слышу обсуждения по поводу code review, решил внести свой вклад, хочу рассказать о возможностях которые предназначены упростить вам жизнь и улучшить качество кода в вашем проекте. Актуально не только для PHP, подобные инструменты, описанным здесь, существуют также и для других языков программирования, например я узнал о таковых когда участвовал в проекте на NodeJS.
Из чего состоит review
You must be registered for see links
— анализ проекта, документированная, всесторонняя и систематическая проверка проекта с целью оценки его возможности выполнять требования к качеству, выявлять проблемы и определять способы их решения.
You must be registered for see links
— проверка исходного кода программы с целью обнаружения и исправления ошибок, которые остались незамеченными в начальной фазе разработки.design review является темой для отдельной статьи и здесь обсуждаться не будет, хочу вкратце рассказать об инструментах которые помогают проводить code review.
Pre-commit review
Вид review, проводится перед внесением изменений в вашу систему управления версиями (git, svn, mercurial и т.п.). Если в поисковике наберете “pre-commit php”, то он вам выдаст несколько уже готовых скриптов проводящих анализ написанного кода. Для git, скрипт надо разместить в папке “.git/hooks/” и тогда каждый раз, когда делаете commit он будет запускаться и если будут обнаружены ошибки, то просто не даст запушить код в репозиторий. Для некоторых IDE есть отдельные плагины которые делают то же самое, но что, если у вас большая команда и все пользуются разными редакторами? Да и настроить данный скрипт один раз, выложив его в ваш репозиторий, проще, нежели для каждого разработчика по отдельности настраивать его IDE. Что еще важно, в данный скрипт вы можете добавить любые другие инструменты которые используете в своей команде, такие как статический анализатор (например
You must be registered for see links
), и/или производить юнит тестирование (например
You must be registered for see links
)Инструменты помогающие проводить code review
You must be registered for see links
(Syntax check only (lint)) — встроенная в ядро PHP проверка синтаксиса.
You must be registered for see links
(PHP Coding Standards Fixer) — Исправляет ваш код в соответствии со стандартами PSR-1, PSR-2 и т. д., или другим сообществам, таким как Symfony. Вы также можете определить свой (командный) стиль через конфигурацию. Т.е. во всей вашей команде стиль кода будет один.
You must be registered for see links
(PHP CodeSniffer + PHP Code Beautifier) — Представляет собой набор из двух PHP-скриптов; Основной скрипт phpcs, который выделяет PHP, JavaScript и CSS-файлы для обнаружения нарушений определенного стандарта кодирования, а второй скрипт phpcbf автоматически исправляет стандартные нарушения кодирования. Схожий инструмент с php-cs-fixer.
You must be registered for see links
(PHP Mess Detector) — Побочный проект
You must be registered for see links
, цель которого стать PHP-эквивалентом хорошо известного инструмента Java PMD. Берет заданную базу исходного кода PHP и ищет несколько потенциальных проблем в этом источнике. Эти проблемы могут быть такими, как синтаксические ошибки, субоптимальный код, слишком сложные выражения, неиспользуемые параметры/методы/свойства.
You must be registered for see links
(PHP Copy/Paste Detector) — Детектор копирования / вставки для кода PHP. Т.е. находит одинаковые блоки кода в различных частях приложения которые можно вынести в отдельные функции/методы.Вы можете более глубоко погрузиться в автоматизацию проверки кода и вероятно найдете много других интересных инструментов.
Вывод
Используя имеющиеся в мире разработки инструменты многие рутинные процессы по проверке кода вы можете автоматизировать, что на порядок улучшит его качество (т.к. мы исключаем человеческий фактор) и больше уделить вниманию design review. Для большей уверенности в использовании этих инструментов всей командой их можно внедрять в pre-commit скрипт который запускается перед созданием коммита в вашей системе управления версиями.



