Быстрый старт¶
Три способа интегрировать Qualimetrix в ваш проект:
- Pre-commit хук -- проверка перед каждым коммитом
- GitHub Action -- автоматические проверки в CI/CD
- Docker -- запуск без локальной установки PHP
Первый запуск анализа¶
Установка¶
Запуск анализа¶
Интерпретация результатов¶
По умолчанию выводится сводка состояния проекта с оценками по категориям:
Qualimetrix — 127 files analyzed, 2.3s
Health ████████████████████░░░░░░░░░░ 67.2% Fair
Complexity ██████████████████████████░░░░ 85.1% Excellent
Cohesion ████████████░░░░░░░░░░░░░░░░░░ 42.3% Poor
Coupling █████████████████░░░░░░░░░░░░░ 55.8% Fair
Typing ████████████████████████████░░ 92.0% Excellent
Maintainability ████████████████████░░░░░░░░░░ 64.5% Good
Worst namespaces
38 App\Service (12 classes, 28 violations) — low cohesion, high coupling
42 App\Repository (8 classes, 15 violations) — low cohesion
45 violations (12 errors, 33 warnings) | Tech debt: 2d 4h (8.5 min/kLOC)
Hints: --detail to see violations (top 200) | --namespace='App\Service' to drill down | --format=html -o report.html for full report
Каждая категория получает метку: Excellent (отлично), Good (хорошо), Fair (есть куда расти), Poor (требует внимания) или Critical (необходимы действия). Секция "Worst namespaces" показывает, на чём стоит сосредоточиться в первую очередь.
Детализация по пространству имён¶
Изучите конкретное пространство имён, чтобы увидеть его классы и нарушения:
Просмотр детальных нарушений¶
Вывод отдельных нарушений с путями к файлам, номерами строк и рекомендациями по исправлению:
Генерация HTML-отчёта¶
Для полного интерактивного отчёта с графиками и навигацией:
Откройте report.html в браузере для изучения результатов.
1. Pre-commit хук¶
Автоматическая проверка подготовленных (staged) файлов перед каждым коммитом.
Установка¶
Автоматически обновляется при изменении скрипта, не нужно копировать при обновлениях.
Работает, если .git/hooks не поддерживает символические ссылки, можно модифицировать под проект.
Использование¶
После установки хук запускается автоматически при каждом git commit:
git add src/MyClass.php
git commit -m "Add new feature"
# Хук запустится автоматически:
# Running Qualimetrix on staged files...
# Qualimetrix passed.
Пропуск проверки¶
Настройка базовой линии (baseline)¶
Если проект уже содержит legacy-код с нарушениями:
# Создать базовую линию для существующих проблем
vendor/bin/qmx check src/ --generate-baseline=baseline.json
# Теперь хук будет игнорировать проблемы из базовой линии
git commit -m "Add feature"
Удаление хука¶
2. GitHub Action¶
Автоматический анализ при push и pull request. Подробная настройка описана в руководстве по GitHub Actions.
Быстрая настройка¶
# .github/workflows/quality.yml
name: Code Quality
on: [push, pull_request]
jobs:
qmx:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Qualimetrix
uses: qualimetrix/qualimetrix@v1
with:
paths: 'src/'
baseline: 'baseline.json'
3. Docker¶
Запуск анализа в контейнере без локальной установки PHP.
Сборка образа¶
Использование¶
<!-- llms:skip-end -->
# Анализ текущей директории
docker run --rm -v $(pwd):/app qmx check src/
# С базовой линией
docker run --rm -v $(pwd):/app qmx check src/ --baseline=baseline.json
# С конфигурацией
docker run --rm -v $(pwd):/app qmx check src/ --config=qmx.yaml
# Вывод в формате JSON
docker run --rm -v $(pwd):/app qmx check src/ --format=json
Docker Compose¶
# docker-compose.yml
services:
qmx:
image: qmx:latest
volumes:
- .:/app:ro
- ./baseline.json:/app/baseline.json
command: check src/ --baseline=baseline.json
CI/CD с Docker¶
Исключение путей¶
Подавление нарушений для файлов, соответствующих glob-паттернам. Полезно для сгенерированного кода, DTO или классов сущностей.
Примечание
Исключённые файлы всё равно анализируются (метрики собираются) -- подавляется только вывод нарушений.
CLI-паттерны объединяются с паттернами из конфигурационного файла.
Сравнение методов¶
| Метод | Когда использовать | Преимущества | Недостатки |
|---|---|---|---|
| Pre-commit хук | Локальная разработка | Быстрая обратная связь, предотвращает плохие коммиты | Можно обойти через --no-verify |
| GitHub Action | CI/CD пайплайн | Автоматически для всех PR, нельзя обойти | Медленнее локального |
| Docker | Чистое окружение | Не нужен локальный PHP, воспроизводимость | Требует Docker, медленнее |
Рекомендуемая стратегия¶
- Маленькие команды (1-5): Pre-commit хук + GitHub Action
- Средние команды (5-20): GitHub Action (обязательно) + Pre-commit хук (опционально) + Docker для разработчиков без PHP
- Большие команды (20+): GitHub Action с baseline (обязательно) + Docker
Решение проблем¶
Pre-commit хук не работает¶
Хук не запускается при коммите:
<!-- llms:skip-end -->
# Проверьте, что хук существует и является исполняемым
ls -la .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
qmx binary not found: