Мониторинг приложений PHP с помощью PHPMetrics

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое PHPMetrics?

PHPMetrics — это мощная библиотека для статического анализа и мониторинга PHP-приложений. Она позволяет собирать метрики кода, такие как сложность, покрытие тестами, количество строк, зависимости и потенциальные проблемы. Библиотека интегрируется с CI/CD пайплайнами и помогает разработчикам поддерживать качество кода на высоком уровне.

Зачем нужен мониторинг PHP-приложений?

Мониторинг PHP-приложений — это не только отслеживание производительности в рантайме, но и контроль качества кода. PHPMetrics помогает выявить 'запахи' кода (code smells), избыточную сложность и нарушения стандартов PSR. Это особенно важно для больших проектов, где поддержка чистоты кода критична для масштабируемости и уменьшения технического долга.

Установка

Установка PHPMetrics выполняется через Composer:

composer require --dev phpmetrics/phpmetrics

После установки вы можете запустить анализ из командной строки:

vendor/bin/phpmetrics --report-html=./report /path/to/your/project

Это создаст HTML-отчёт с визуализацией метрик.

Основные функции

  • Статический анализ: оценка цикломатической сложности, глубины наследования, связности классов.
  • Генерация отчётов: HTML, JSON, XML — для интеграции с Jenkins, GitLab CI или Grafana.
  • Мониторинг покрытия: анализ покрытия кода тестами (требуется PHPUnit).
  • Визуализация зависимостей: графы классов и пакетов.
  • CI/CD интеграция: возможность прерывать сборку при превышении порогов сложности.

Пример кода на PHP

Ниже приведён пример использования PHPMetrics в скрипте для программного анализа:

<?php
require_once 'vendor/autoload.php';

use PHPMetrics\Metrics\Project;
use PHPMetrics\Report\HtmlReport;
use PHPMetrics\Report\JsonReport;

// Создаём объект проекта
$project = new Project('/path/to/your/php/code');
$project->run(); // Запускаем анализ

// Получаем метрики
$metrics = $project->getMetrics();
echo 'Средняя сложность: ' . $metrics->getAverageComplexity() . PHP_EOL;
echo 'Количество классов: ' . $metrics->getNumberOfClasses() . PHP_EOL;

// Генерируем отчёт в JSON
$jsonReport = new JsonReport($project);
file_put_contents('metrics.json', $jsonReport->generate());

// Или HTML
$htmlReport = new HtmlReport($project);
$htmlReport->generateToFile('report.html');

Этот скрипт можно запускать в cron или как часть деплоя.

Когда использовать

PHPMetrics идеально подходит для:

  • Регулярного аудита кода в рамках CI/CD (например, перед каждым мерджем в main).
  • Оценки технического долга при рефакторинге.
  • Мониторинга качества кода в долгосрочных проектах.
  • Обучения команды — наглядные отчёты помогают понять, какие участки кода требуют улучшения.

Не используйте PHPMetrics для мониторинга производительности в реальном времени (для этого есть Xdebug или Blackfire). Это инструмент статического анализа, а не рантайм-профилировщик.

Внедрение PHPMetrics в процесс разработки снижает количество багов и упрощает поддержку кода, особенно в распределённых командах.

Рекомендаций