Повышаем и следим за качеством php кода
DESCRIPTION
Доклад на hotcode.org о инструментах и методиках которые помогают нам повышать и следить за качеством PHP кода. Среди затронутых тем: - Стандарты в коде - Средства для статического анализа кода. - Git хуки - Непрерывная интеграция - IDE - Code reviewTRANSCRIPT
![Page 2: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/2.jpg)
Стандарты
● КодированияPSR-0, PSR-1, PSR-2
● Наименования● Документирования● Тестирования
● Понятный и знакомый код● Легче поддается анализу и рефакторингу● Меньше конфликтов
![Page 3: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/3.jpg)
Анализаторы кода● PHP_CodeSniffer
- Большое количество правил- PSR1, PSR2 из коробки- Гибкая настройка- Большое количество отчетов в различных форматах
● PHPMD● PHP-Analyzer● PHPLint
![Page 4: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/4.jpg)
Еще анализаторов
● PHPDependСтроим метрики и графики
● PHPCPDБоримся с копипастом
● Pfff tools от facebookНабор различных инструментов
● PHPQaToolsГотовый набор от Sebastian Bergmann
● security.sensiolabs.orgБезопасны ли ваши зависимости?Google Gruyere + OWASP WebGoat
![Page 5: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/5.jpg)
Legacy code
Что делать если мы получили проект в наследие?
● PHP-CS-Fixer● PHP-Analyzer
![Page 6: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/6.jpg)
IDE
● PHPStorm, NetBeans, Eclypse● Sublime, Vim
● Анализ кода на лету● Поддержка стандартов кодирования● Проверка орфографии● Интеграция со сторонними
инструментами
![Page 7: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/7.jpg)
PHPStorm
![Page 8: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/8.jpg)
Git hooks
● Client-Side Hooks- pre-commit
● Server-Side Hooks- pre-receive- post-receive
Еще хуков
![Page 9: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/9.jpg)
Pre-commit hook
● Проверка php синтаксиса● Интеграция статических анализаторов● Запуск модульных тестов
Можем проигнорировать с помощью--no-verify
![Page 10: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/10.jpg)
Pre-commit hook + phpcs
● Различные уровни ошибок- Good code- Warnings- Errors- Syntax error
● Игнорирование директорий● Фильтрация по расширению файлов
![Page 11: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/11.jpg)
Pre-commit + phpcs = Accepted
![Page 12: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/12.jpg)
Pre-commit + phpcs = Rejected
![Page 13: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/13.jpg)
Server side hooks
● Уведомление на e-mail● Полное отклонение коммита
- pre-receive- post-receive
![Page 14: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/14.jpg)
Continuous integration
● Запуск модульных тестов
● Интеграция с инструментами- PHP_CodeSniffer- PHPMD
![Page 15: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/15.jpg)
Sonar
● Благодаря интеграции с рядом инструментов предоставляет множество отчетов и метрик вашего проекта
● Количество кода, функций, классов● Количество нарушений в коде● Количество дублированного кода● Покрытие тестами
Позволяет наблюдать динамику улучшения вашего проекта со временем
![Page 16: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/16.jpg)
Sonar in action
![Page 17: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/17.jpg)
Инструменты хороши, пора поговорить о методиках
![Page 18: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/18.jpg)
Code Review● Позволяет находить ошибки в коде на ранних этапах● Повышает уровень разработчиков ● Дисциплинирует ● Распространяет знания о системе ● Заставляет разработчика делать более
декомпозированные, понятные коммиты что в конечном итоге влияет на качество кода и возможности его анализа в дальнейшем
- Дополнительные ресурсы, то есть время разработчиков- Возможны конфликты.
![Page 19: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/19.jpg)
Реализация code review
● Эй Семен, подойди посмотри код,● Используя Web интерфейс CVS системы.● Внешние не интегрированные
инструменты вроде codereview.google.com● Pull requests way.
- Интегрировать автоматические средства проверки пул реквестов
![Page 20: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/20.jpg)
Рекомендации по code review● Создать список того на что стоит обращать
внимание в code review. Создать best practices по процессу
● Понимать и донести до всех что code review это не критика человека а критика его кода
● Проводить ревью своевременно, не допускать ситуации когда приходится проверять мегабайты кода.
![Page 21: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/21.jpg)
Code review checklist
● Решает ли код поставленную задачу● Соответствует ли код принятым
стандартам проекта● Покрыт ли код юнит тестами● Не содержит ли код отладочной
информации или мертвого кода● Безопасен ли код● Использует ли он принятые best practices
проекта.
![Page 22: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/22.jpg)
Еще методики
● Test Driven Development (TDD)
● Парное программирование
● Scrum
![Page 23: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/23.jpg)
Психологический климатПомимо технических методик по улучшению кода существую также другие, которые следует учитывать. Например психологический климат в коллективе, к нему относятся лидерские качества руководителя команды и особенности сработанности и сплоченности коллектива. Психологический климат в коллективе это высокий уровень мотивации в коллективе, общая цель в работе, комфорт общения в коллективе, эффективные коммуникации, график работы и степень занятости
МоральЧем более гармоничные отношения в команде тем лучше это для сработанности, коммуникаций и в итоге для качества вашего кода
![Page 24: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/24.jpg)
Четкий сайт
http://www.phptherightway.com/
![Page 25: Повышаем и следим за качеством PHP кода](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559bfd671a28ab36668b47c4/html5/thumbnails/25.jpg)
Спасибо за внимание
Александр Махомет
http://twitter.com/amahomethttp://podumaem.com/contacts
http://zendframework.ruhttp://fwdays.com