Повышаем качество PHP кода
Александр Махомет
@amahomet
Стандарты
● Кодирования
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/amahomet
http://podumaem.com/contacts
http://zendframework.ru
http://fwdays.com

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

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