SlideShare a Scribd company logo
1 of 25
Download to read offline
Повышаем качество 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

More Related Content

What's hot

Чем Python плох для стартапа?
Чем Python плох для стартапа?Чем Python плох для стартапа?
Чем Python плох для стартапа?PyNSK
 
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015Alina Dolgikh
 
Завершающая лекция - часть 1 - информатика и зомби
Завершающая лекция - часть 1 - информатика и зомбиЗавершающая лекция - часть 1 - информатика и зомби
Завершающая лекция - часть 1 - информатика и зомбиAlexey Vasyukov
 
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)Sergey Polazhenko
 
Опросный лист оценки знаний по соревновательной робототехнике
Опросный лист оценки знаний по соревновательной робототехникеОпросный лист оценки знаний по соревновательной робототехнике
Опросный лист оценки знаний по соревновательной робототехникеAlexander Kolotov
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2SBTech
 
Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...SBTech
 
Контроль за качеством кода
Контроль за качеством кодаКонтроль за качеством кода
Контроль за качеством кодаКирилл Борисов
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решенияВладимир Кожаев
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...e-Legion
 
ньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствВладимир Кожаев
 
SECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open SourceSECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open SourceSECON
 
Maksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobMaksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobАліна Шепшелей
 
Git and Github for Beginners
Git and Github for Beginners Git and Github for Beginners
Git and Github for Beginners Mad Devs
 
Как мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.RuКак мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.RuVladimir Rudnyh
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseAlexander Granin
 
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосноватьMaksym Bezuglyi
 

What's hot (19)

Чем Python плох для стартапа?
Чем Python плох для стартапа?Чем Python плох для стартапа?
Чем Python плох для стартапа?
 
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015
 
Завершающая лекция - часть 1 - информатика и зомби
Завершающая лекция - часть 1 - информатика и зомбиЗавершающая лекция - часть 1 - информатика и зомби
Завершающая лекция - часть 1 - информатика и зомби
 
Slides
SlidesSlides
Slides
 
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
 
Опросный лист оценки знаний по соревновательной робототехнике
Опросный лист оценки знаний по соревновательной робототехникеОпросный лист оценки знаний по соревновательной робототехнике
Опросный лист оценки знаний по соревновательной робототехнике
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2
 
Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...
 
Контроль за качеством кода
Контроль за качеством кодаКонтроль за качеством кода
Контроль за качеством кода
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решения
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
 
ньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройств
 
SECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open SourceSECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open Source
 
Maksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobMaksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a job
 
Git and Github for Beginners
Git and Github for Beginners Git and Github for Beginners
Git and Github for Beginners
 
Как мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.RuКак мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.Ru
 
Why does code style matter?
Why does code style matter?Why does code style matter?
Why does code style matter?
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом Enterprise
 
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
 

Viewers also liked

Демоны на PHP (Денис Глазков)
Демоны на PHP (Денис Глазков)Демоны на PHP (Денис Глазков)
Демоны на PHP (Денис Глазков)Ontico
 
Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...
Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...
Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...web2win
 
Максим Лагутин, "Угрозы безопасности для интернет-магазинов и бизнеса в инт...
 Максим Лагутин, "Угрозы безопасности для  интернет-магазинов и бизнеса в инт... Максим Лагутин, "Угрозы безопасности для  интернет-магазинов и бизнеса в инт...
Максим Лагутин, "Угрозы безопасности для интернет-магазинов и бизнеса в инт...web2win
 
Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?
Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?
Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?CodeFest
 
TMPA-2013 Kompan and Bui: OOP Class Diagrams
TMPA-2013 Kompan and Bui: OOP Class DiagramsTMPA-2013 Kompan and Bui: OOP Class Diagrams
TMPA-2013 Kompan and Bui: OOP Class DiagramsIosif Itkin
 
Aspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAlexander Lisachenko
 
Code review как средство обеспечения качества программного обеспечения
Code review как средство обеспечения качества программного обеспеченияCode review как средство обеспечения качества программного обеспечения
Code review как средство обеспечения качества программного обеспеченияSQALab
 
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,..."Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...Yandex
 

Viewers also liked (9)

Демоны на PHP (Денис Глазков)
Демоны на PHP (Денис Глазков)Демоны на PHP (Денис Глазков)
Демоны на PHP (Денис Глазков)
 
OOP
OOPOOP
OOP
 
Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...
Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...
Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...
 
Максим Лагутин, "Угрозы безопасности для интернет-магазинов и бизнеса в инт...
 Максим Лагутин, "Угрозы безопасности для  интернет-магазинов и бизнеса в инт... Максим Лагутин, "Угрозы безопасности для  интернет-магазинов и бизнеса в инт...
Максим Лагутин, "Угрозы безопасности для интернет-магазинов и бизнеса в инт...
 
Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?
Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?
Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?
 
TMPA-2013 Kompan and Bui: OOP Class Diagrams
TMPA-2013 Kompan and Bui: OOP Class DiagramsTMPA-2013 Kompan and Bui: OOP Class Diagrams
TMPA-2013 Kompan and Bui: OOP Class Diagrams
 
Aspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHP
 
Code review как средство обеспечения качества программного обеспечения
Code review как средство обеспечения качества программного обеспеченияCode review как средство обеспечения качества программного обеспечения
Code review как средство обеспечения качества программного обеспечения
 
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,..."Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
 

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

Improvement of PHP code quality (by Alexander Makhomet) - Web Back-End Tech H...
Improvement of PHP code quality (by Alexander Makhomet) - Web Back-End Tech H...Improvement of PHP code quality (by Alexander Makhomet) - Web Back-End Tech H...
Improvement of PHP code quality (by Alexander Makhomet) - Web Back-End Tech H...Innovecs
 
Oleksandr Tolstykh "Quality. Android quality"
Oleksandr Tolstykh "Quality. Android quality"Oleksandr Tolstykh "Quality. Android quality"
Oleksandr Tolstykh "Quality. Android quality"IT Event
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Badoo Development
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQAFest
 
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Tatyanazaxarova
 
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...CodeFest
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.ScrumTrek
 
Как мы измеряем наши проекты
Как мы измеряем наши проектыКак мы измеряем наши проекты
Как мы измеряем наши проектыRambler Android
 
Юлия Викторова; Александр Тарасов. DevOps без булшита.
Юлия Викторова; Александр Тарасов. DevOps без булшита.Юлия Викторова; Александр Тарасов. DevOps без булшита.
Юлия Викторова; Александр Тарасов. DevOps без булшита.ScrumTrek
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораSQALab
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииCEE-SEC(R)
 
Инструменты автоматизации тестирования - дефективные
Инструменты автоматизации тестирования - дефективныеИнструменты автоматизации тестирования - дефективные
Инструменты автоматизации тестирования - дефективныеSQALab
 

Similar to Повышаем и следим за качеством PHP кода (20)

Improvement of PHP code quality (by Alexander Makhomet) - Web Back-End Tech H...
Improvement of PHP code quality (by Alexander Makhomet) - Web Back-End Tech H...Improvement of PHP code quality (by Alexander Makhomet) - Web Back-End Tech H...
Improvement of PHP code quality (by Alexander Makhomet) - Web Back-End Tech H...
 
Oleksandr Tolstykh "Quality. Android quality"
Oleksandr Tolstykh "Quality. Android quality"Oleksandr Tolstykh "Quality. Android quality"
Oleksandr Tolstykh "Quality. Android quality"
 
Enter: code style
Enter: code styleEnter: code style
Enter: code style
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
QAFest. Роль тестирования в Devops
QAFest. Роль тестирования в DevopsQAFest. Роль тестирования в Devops
QAFest. Роль тестирования в Devops
 
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
 
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
 
Team workflow
Team workflowTeam workflow
Team workflow
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.
 
Как мы измеряем наши проекты
Как мы измеряем наши проектыКак мы измеряем наши проекты
Как мы измеряем наши проекты
 
Юлия Викторова; Александр Тарасов. DevOps без булшита.
Юлия Викторова; Александр Тарасов. DevOps без булшита.Юлия Викторова; Александр Тарасов. DevOps без булшита.
Юлия Викторова; Александр Тарасов. DevOps без булшита.
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
 
Инструменты автоматизации тестирования - дефективные
Инструменты автоматизации тестирования - дефективныеИнструменты автоматизации тестирования - дефективные
Инструменты автоматизации тестирования - дефективные
 

Повышаем и следим за качеством 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 ● Анализ кода на лету ● Поддержка стандартов кодирования ● Проверка орфографии ● Интеграция со сторонними инструментами
  • 8. Git hooks ● Client-Side Hooks - 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. Pre-commit + phpcs = Accepted
  • 12. Pre-commit + phpcs = Rejected
  • 13. Server side hooks ● Уведомление на e-mail ● Полное отклонение коммита - pre-receive - post-receive
  • 14. Continuous integration ● Запуск модульных тестов ● Интеграция с инструментами - PHP_CodeSniffer - PHPMD
  • 15. Sonar ● Благодаря интеграции с рядом инструментов предоставляет множество отчетов и метрик вашего проекта ● Количество кода, функций, классов ● Количество нарушений в коде ● Количество дублированного кода ● Покрытие тестами Позволяет наблюдать динамику улучшения вашего проекта со временем
  • 18. Code Review ● Позволяет находить ошибки в коде на ранних этапах ● Повышает уровень разработчиков ● Дисциплинирует ● Распространяет знания о системе ● Заставляет разработчика делать более декомпозированные, понятные коммиты что в конечном итоге влияет на качество кода и возможности его анализа в дальнейшем - Дополнительные ресурсы, то есть время разработчиков - Возможны конфликты.
  • 19. Реализация code review ● Эй Семен, подойди посмотри код, ● Используя Web интерфейс CVS системы. ● Внешние не интегрированные инструменты вроде codereview.google.com ● Pull requests way. - Интегрировать автоматические средства проверки пул реквестов
  • 20. Рекомендации по code review ● Создать список того на что стоит обращать внимание в code review. Создать best practices по процессу ● Понимать и донести до всех что code review это не критика человека а критика его кода ● Проводить ревью своевременно, не допускать ситуации когда приходится проверять мегабайты кода.
  • 21. Code review checklist ● Решает ли код поставленную задачу ● Соответствует ли код принятым стандартам проекта ● Покрыт ли код юнит тестами ● Не содержит ли код отладочной информации или мертвого кода ● Безопасен ли код ● Использует ли он принятые best practices проекта.
  • 22. Еще методики ● Test Driven Development (TDD) ● Парное программирование ● Scrum
  • 23. Психологический климат Помимо технических методик по улучшению кода существую также другие, которые следует учитывать. Например психологический климат в коллективе, к нему относятся лидерские качества руководителя команды и особенности сработанности и сплоченности коллектива. Психологический климат в коллективе это высокий уровень мотивации в коллективе, общая цель в работе, комфорт общения в коллективе, эффективные коммуникации, график работы и степень занятости Мораль Чем более гармоничные отношения в команде тем лучше это для сработанности, коммуникаций и в итоге для качества вашего кода
  • 25. Спасибо за внимание Александр Махомет http://twitter.com/amahomet http://podumaem.com/contacts http://zendframework.ru http://fwdays.com