Upload
amahomet
View
2.235
Download
2
Embed Size (px)
DESCRIPTION
Доклад на hotcode.org о инструментах и методиках которые помогают нам повышать и следить за качеством PHP кода. Среди затронутых тем: - Стандарты в коде - Средства для статического анализа кода. - Git хуки - Непрерывная интеграция - IDE - Code review
Citation preview
Стандарты
● КодированияPSR-0, PSR-1, PSR-2
● Наименования● Документирования● Тестирования
● Понятный и знакомый код● Легче поддается анализу и рефакторингу● Меньше конфликтов
Анализаторы кода● PHP_CodeSniffer
- Большое количество правил- PSR1, PSR2 из коробки- Гибкая настройка- Большое количество отчетов в различных форматах
● PHPMD● PHP-Analyzer● PHPLint
Еще анализаторов
● PHPDependСтроим метрики и графики
● PHPCPDБоримся с копипастом
● Pfff tools от facebookНабор различных инструментов
● PHPQaToolsГотовый набор от Sebastian Bergmann
● security.sensiolabs.orgБезопасны ли ваши зависимости?Google Gruyere + OWASP WebGoat
Legacy code
Что делать если мы получили проект в наследие?
● PHP-CS-Fixer● PHP-Analyzer
IDE
● PHPStorm, NetBeans, Eclypse● Sublime, Vim
● Анализ кода на лету● Поддержка стандартов кодирования● Проверка орфографии● Интеграция со сторонними
инструментами
PHPStorm
Git hooks
● Client-Side Hooks- pre-commit
● Server-Side Hooks- pre-receive- post-receive
Еще хуков
Pre-commit hook
● Проверка php синтаксиса● Интеграция статических анализаторов● Запуск модульных тестов
Можем проигнорировать с помощью--no-verify
Pre-commit hook + phpcs
● Различные уровни ошибок- Good code- Warnings- Errors- Syntax error
● Игнорирование директорий● Фильтрация по расширению файлов
Pre-commit + phpcs = Accepted
Pre-commit + phpcs = Rejected
Server side hooks
● Уведомление на e-mail● Полное отклонение коммита
- pre-receive- post-receive
Continuous integration
● Запуск модульных тестов
● Интеграция с инструментами- PHP_CodeSniffer- PHPMD
Sonar
● Благодаря интеграции с рядом инструментов предоставляет множество отчетов и метрик вашего проекта
● Количество кода, функций, классов● Количество нарушений в коде● Количество дублированного кода● Покрытие тестами
Позволяет наблюдать динамику улучшения вашего проекта со временем
Sonar in action
Инструменты хороши, пора поговорить о методиках
Code Review● Позволяет находить ошибки в коде на ранних этапах● Повышает уровень разработчиков ● Дисциплинирует ● Распространяет знания о системе ● Заставляет разработчика делать более
декомпозированные, понятные коммиты что в конечном итоге влияет на качество кода и возможности его анализа в дальнейшем
- Дополнительные ресурсы, то есть время разработчиков- Возможны конфликты.
Реализация code review
● Эй Семен, подойди посмотри код,● Используя Web интерфейс CVS системы.● Внешние не интегрированные
инструменты вроде codereview.google.com● Pull requests way.
- Интегрировать автоматические средства проверки пул реквестов
Рекомендации по code review● Создать список того на что стоит обращать
внимание в code review. Создать best practices по процессу
● Понимать и донести до всех что code review это не критика человека а критика его кода
● Проводить ревью своевременно, не допускать ситуации когда приходится проверять мегабайты кода.
Code review checklist
● Решает ли код поставленную задачу● Соответствует ли код принятым
стандартам проекта● Покрыт ли код юнит тестами● Не содержит ли код отладочной
информации или мертвого кода● Безопасен ли код● Использует ли он принятые best practices
проекта.
Еще методики
● Test Driven Development (TDD)
● Парное программирование
● Scrum
Психологический климатПомимо технических методик по улучшению кода существую также другие, которые следует учитывать. Например психологический климат в коллективе, к нему относятся лидерские качества руководителя команды и особенности сработанности и сплоченности коллектива. Психологический климат в коллективе это высокий уровень мотивации в коллективе, общая цель в работе, комфорт общения в коллективе, эффективные коммуникации, график работы и степень занятости
МоральЧем более гармоничные отношения в команде тем лучше это для сработанности, коммуникаций и в итоге для качества вашего кода
Четкий сайт
http://www.phptherightway.com/
Спасибо за внимание
Александр Махомет
http://twitter.com/amahomethttp://podumaem.com/contacts
http://zendframework.ruhttp://fwdays.com