Контроль качества кода: Lint, CS, Exacat
Обо мне
- Зенько Евгений
- Tech Lead @ Colours NL
- Drupal 5-8
- Футбол, книги, музыка, угар
- Socials: @zeuty
- Linkedin: yzenko
Тезисы
- Качество - это не переменная
2. Если какая-нибудь неприятность может произойти, то она обязательно произойдёт (Закон Мёрфи)
3. Человек (немножечко) ленив
3. Человек (немножечко) нонконформист
Проблемы
- Синтаксические ошибки
2. Несоответствие code standards, best practices, разный подход к форматированию кода в команде
3. Структурные ошибки: небезопасный, непроизводительный, неподдерживаемый код
Ущерб
- Психологический
2. Репутационный
3. Затраты времени
Что делать?
Процессы
Инструменты
PHP Lint
Встроенная функциональность
php -l {filename}
Example:
php -l sites/all/modules/custom/with_error.php
PHP Parse error: syntax error, unexpected '?>'
in sites/all/modules/custom/with_error.php on line 4
Errors parsing sites/all/modules/custom/with_error.php
PHP Code Sniffer
Автоматическая проверка кода на предмет нарушения coding standards
- Из коробки - PSR1, PEAR, PSR2, MySource, Squiz, PHPCS, Zend
- Доступны - Drupal и DrupalPractice
- Интегрируется с PHPStorm
- Возможность создавать свои стандарты
PHP Code Beautifier and Fixer
- Автоматически генерирует diff между исходным файлом и стандартом
- Автоматически применяет его к исходному файлу
Exakat
- Статический анализ PHP5.2-7.2
- Совместимость кода с версией PHP
- Безопасность
- Производительность
- Сложность и поддерживаемость
- Автоматическое документирование
- >700 правил, сгрупированных в Recipes: Security, Performances, Dead code, etc.
Да, но...
Сколько людей будет запускать всё это богатство каждый день?
Идея
- Давайте делать больше код ревью!
- Давайте сильнее наказывать врагов саботирующих наши договорённости!
- Давайте просто будем ответственнее!
А может попробуем как-то всё это автоматизировать?
Интеграция с git
- Используем git hooks
- В нашей ситуации precommit
Что дальше?
- Composer package с конфигуратором git hook, и необходимыми зависимостями
- Стоит ли интегрировать в этот процесс глубокий статический анализ (например, Exakat)?
Вопросы, идеи, предложения?
Code quality control (Russian)
By Yauhen Zenko
Code quality control (Russian)
- 1,106