25
Повышаем качество PHP кода Александр Махомет @amahomet

Повышаем и следим за качеством PHP кода

Embed Size (px)

DESCRIPTION

Доклад на hotcode.org о инструментах и методиках которые помогают нам повышать и следить за качеством PHP кода. Среди затронутых тем: - Стандарты в коде - Средства для статического анализа кода. - Git хуки - Непрерывная интеграция - IDE - Code review

Citation preview

Page 1: Повышаем и следим за качеством PHP кода

Повышаем качество PHP кодаАлександр Махомет @amahomet

Page 2: Повышаем и следим за качеством PHP кода

Стандарты

● КодированияPSR-0, PSR-1, PSR-2

● Наименования● Документирования● Тестирования

● Понятный и знакомый код● Легче поддается анализу и рефакторингу● Меньше конфликтов

Page 3: Повышаем и следим за качеством PHP кода

Анализаторы кода● PHP_CodeSniffer

- Большое количество правил- PSR1, PSR2 из коробки- Гибкая настройка- Большое количество отчетов в различных форматах

● PHPMD● PHP-Analyzer● PHPLint

Page 4: Повышаем и следим за качеством PHP кода

Еще анализаторов

● PHPDependСтроим метрики и графики

● PHPCPDБоримся с копипастом

● Pfff tools от facebookНабор различных инструментов

● PHPQaToolsГотовый набор от Sebastian Bergmann

● security.sensiolabs.orgБезопасны ли ваши зависимости?Google Gruyere + OWASP WebGoat

Page 5: Повышаем и следим за качеством PHP кода

Legacy code

Что делать если мы получили проект в наследие?

● PHP-CS-Fixer● PHP-Analyzer

Page 6: Повышаем и следим за качеством PHP кода

IDE

● PHPStorm, NetBeans, Eclypse● Sublime, Vim

● Анализ кода на лету● Поддержка стандартов кодирования● Проверка орфографии● Интеграция со сторонними

инструментами

Page 7: Повышаем и следим за качеством PHP кода

PHPStorm

Page 8: Повышаем и следим за качеством PHP кода

Git hooks

● Client-Side Hooks- pre-commit

● Server-Side Hooks- pre-receive- post-receive

Еще хуков

Page 9: Повышаем и следим за качеством PHP кода

Pre-commit hook

● Проверка php синтаксиса● Интеграция статических анализаторов● Запуск модульных тестов

Можем проигнорировать с помощью--no-verify

Page 10: Повышаем и следим за качеством PHP кода

Pre-commit hook + phpcs

● Различные уровни ошибок- Good code- Warnings- Errors- Syntax error

● Игнорирование директорий● Фильтрация по расширению файлов

Page 11: Повышаем и следим за качеством PHP кода

Pre-commit + phpcs = Accepted

Page 12: Повышаем и следим за качеством PHP кода

Pre-commit + phpcs = Rejected

Page 13: Повышаем и следим за качеством PHP кода

Server side hooks

● Уведомление на e-mail● Полное отклонение коммита

- pre-receive- post-receive

Page 14: Повышаем и следим за качеством PHP кода

Continuous integration

● Запуск модульных тестов

● Интеграция с инструментами- PHP_CodeSniffer- PHPMD

Page 15: Повышаем и следим за качеством PHP кода

Sonar

● Благодаря интеграции с рядом инструментов предоставляет множество отчетов и метрик вашего проекта

● Количество кода, функций, классов● Количество нарушений в коде● Количество дублированного кода● Покрытие тестами

Позволяет наблюдать динамику улучшения вашего проекта со временем

Page 16: Повышаем и следим за качеством PHP кода

Sonar in action

Page 17: Повышаем и следим за качеством PHP кода

Инструменты хороши, пора поговорить о методиках

Page 18: Повышаем и следим за качеством PHP кода

Code Review● Позволяет находить ошибки в коде на ранних этапах● Повышает уровень разработчиков ● Дисциплинирует ● Распространяет знания о системе ● Заставляет разработчика делать более

декомпозированные, понятные коммиты что в конечном итоге влияет на качество кода и возможности его анализа в дальнейшем

- Дополнительные ресурсы, то есть время разработчиков- Возможны конфликты.

Page 19: Повышаем и следим за качеством PHP кода

Реализация code review

● Эй Семен, подойди посмотри код,● Используя Web интерфейс CVS системы.● Внешние не интегрированные

инструменты вроде codereview.google.com● Pull requests way.

- Интегрировать автоматические средства проверки пул реквестов

Page 20: Повышаем и следим за качеством PHP кода

Рекомендации по code review● Создать список того на что стоит обращать

внимание в code review. Создать best practices по процессу

● Понимать и донести до всех что code review это не критика человека а критика его кода

● Проводить ревью своевременно, не допускать ситуации когда приходится проверять мегабайты кода.

Page 21: Повышаем и следим за качеством PHP кода

Code review checklist

● Решает ли код поставленную задачу● Соответствует ли код принятым

стандартам проекта● Покрыт ли код юнит тестами● Не содержит ли код отладочной

информации или мертвого кода● Безопасен ли код● Использует ли он принятые best practices

проекта.

Page 22: Повышаем и следим за качеством PHP кода

Еще методики

● Test Driven Development (TDD)

● Парное программирование

● Scrum

Page 23: Повышаем и следим за качеством PHP кода

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

МоральЧем более гармоничные отношения в команде тем лучше это для сработанности, коммуникаций и в итоге для качества вашего кода

Page 24: Повышаем и следим за качеством PHP кода

Четкий сайт

http://www.phptherightway.com/

Page 25: Повышаем и следим за качеством PHP кода

Спасибо за внимание

Александр Махомет

http://twitter.com/amahomethttp://podumaem.com/contacts

http://zendframework.ruhttp://fwdays.com