Опции CLI¶
Qualimetrix предоставляет команду check для анализа кода и несколько вспомогательных команд для работы с baseline, git-хуками и визуализацией графа зависимостей.
Команда check¶
Аргумент paths¶
Укажите одну или несколько директорий или файлов для анализа:
# Анализ конкретных директорий
bin/qmx check src/ lib/
# Анализ одного файла
bin/qmx check src/Service/UserService.php
Если пути не указаны, Qualimetrix автоматически определит их из секции autoload вашего composer.json.
Опции файлов¶
--config, -c¶
Путь к YAML-файлу конфигурации:
--exclude¶
Исключить директории из анализа. Можно указывать несколько раз:
--include-generated¶
По умолчанию Qualimetrix автоматически пропускает файлы, содержащие аннотацию @generated в первых 2 КБ. Этот флаг переопределяет это поведение и включает сгенерированные файлы в анализ:
Также можно задать в qmx.yaml:
--exclude-path¶
Подавить нарушения для файлов, соответствующих glob-паттерну. Файлы по-прежнему анализируются (их метрики учитываются при расчёте метрик пространства имён), но нарушения не выводятся. Можно указывать несколько раз:
--exclude-namespace¶
Подавить нарушения для классов в пространствах имён, соответствующих префиксу или glob-паттерну. Классы по-прежнему анализируются (их метрики учитываются в агрегированных расчётах), но нарушения не выводятся. Можно указывать несколько раз:
Объединяется с exclude_namespaces из qmx.yaml — оба источника суммируются.
Опции пресетов¶
--preset¶
Применить именованный пресет или пользовательский YAML-файл. Можно указывать несколько раз или через запятую:
# Встроенные пресеты
bin/qmx check src/ --preset=strict
bin/qmx check src/ --preset=legacy
# Комбинирование пресетов (объединяются слева направо)
bin/qmx check src/ --preset=strict,ci
bin/qmx check src/ --preset=strict --preset=ci
# Пользовательский файл пресета
bin/qmx check src/ --preset=./my-preset.yaml
Доступные встроенные пресеты: strict, legacy, ci.
Пресеты применяются после автоопределения composer.json, но до qmx.yaml, поэтому ваш файл конфигурации всегда имеет приоритет. Подробности смотрите в разделе Конфигурация > Пресеты.
Опции вывода¶
--format, -f¶
Выбор формата вывода. По умолчанию: summary.
Доступные форматы: summary, text, text-verbose, json, metrics, checkstyle, sarif, gitlab, github, health.
Подробности о каждом формате смотрите в разделе Форматы вывода.
--group-by¶
Группировка нарушений в выводе. Значение по умолчанию зависит от форматтера.
Доступные значения: none, file, rule, severity, class, namespace.
--format-opt¶
Передача специфичных для форматтера опций в формате key=value. Можно указывать несколько раз:
Опции формата JSON:
| Опция | По умолчанию | Описание |
|---|---|---|
violations=N\|all |
all | Макс. кол-во нарушений в выводе (0=нет) |
limit=N |
all | Псевдоним для violations |
top=N |
10 | Количество худших нарушителей |
bin/qmx check src/ --format=json --format-opt=limit=100
bin/qmx check src/ --format=json --format-opt=violations=all
--fail-on¶
Минимальный уровень нарушения, при котором возвращается ненулевой код выхода. По умолчанию: error.
# Поведение по умолчанию: ошибка только при error, предупреждения допускаются
bin/qmx check src/ --fail-on=error
# Ошибка и при warning (для строгого контроля качества)
bin/qmx check src/ --fail-on=warning
Предупреждения по-прежнему отображаются в выводе, но по умолчанию не приводят к ненулевому коду завершения. Используйте --fail-on=warning, если хотите, чтобы предупреждения также блокировали CI.
Также можно задать в qmx.yaml:
--exclude-health¶
Исключить конкретные измерения здоровья из оценки. Исключённые измерения не отображаются в сводке здоровья и не влияют на общую оценку. Можно указывать несколько раз:
# Исключить типизацию из оценки здоровья
bin/qmx check src/ --exclude-health=typing
# Исключить несколько измерений
bin/qmx check src/ --exclude-health=typing --exclude-health=maintainability
Доступные измерения: complexity, cohesion, coupling, typing, maintainability.
Также можно задать в qmx.yaml:
--detail¶
Показать группированный список нарушений после сводки. Действует только на формат summary.
# Лимит по умолчанию (200 нарушений)
bin/qmx check src/ --detail
# Показать все нарушения (без лимита)
bin/qmx check src/ --detail=all
# Пользовательский лимит
bin/qmx check src/ --detail=50
Автоматически включается при использовании --namespace или --class.
--all¶
Показать все нарушения без усечения. Сокращение для --format-opt=violations=all --detail=all.
# Все нарушения в формате JSON
bin/qmx check src/ --format=json --all
# Все нарушения в формате summary
bin/qmx check src/ --all
Не может быть объединён с --format-opt=violations=N (числовой лимит) — это вызовет ошибку. Совместное использование --all с --format-opt=violations=all допустимо (они синонимы).
--namespace¶
Фильтрация вывода по конкретному поддереву пространства имён. Использует сопоставление по префиксу с учётом границ.
Фильтрует нарушения и худших нарушителей по указанному пространству имён. Показывает оценки здоровья поддерева. Автоматически включает --detail.
Взаимоисключающий с --class.
--class¶
Фильтрация вывода по конкретному классу с точным совпадением FQCN.
Фильтрует нарушения по указанному классу. Автоматически включает --detail.
Взаимоисключающий с --namespace.
Опции кэширования¶
Qualimetrix кэширует разобранные AST-деревья для ускорения повторных запусков.
--no-cache¶
Полностью отключить кэширование:
--cache-dir¶
Указать директорию кэша. По умолчанию: .qmx-cache.
--clear-cache¶
Очистить кэш перед запуском анализа:
Опции baseline¶
Baseline позволяет игнорировать известные нарушения и сосредоточиться на новых. Полное руководство смотрите в разделе Baseline.
--generate-baseline¶
Запустить анализ и сохранить все текущие нарушения в файл baseline:
--baseline¶
Отфильтровать нарушения, которые уже есть в файле baseline:
--show-resolved¶
Показать, сколько нарушений из baseline были исправлены:
--baseline-ignore-stale¶
По умолчанию Qualimetrix выдаёт ошибку, если baseline ссылается на файлы, которых больше не существует. Этот флаг позволяет молча игнорировать устаревшие записи:
Опции подавления¶
--show-suppressed¶
Показать нарушения, подавленные тегами @qmx-ignore:
--no-suppression¶
Игнорировать все теги @qmx-ignore и выводить все нарушения:
Опции области Git¶
Вывод нарушений только для изменённых файлов. Полное руководство смотрите в разделе Интеграция с Git.
--report¶
Управление тем, какие нарушения выводить. Анализирует весь проект, но показывает только нарушения из изменённых файлов:
--report-strict¶
В режиме diff показывать нарушения только из самих изменённых файлов. Без этого флага также выводятся нарушения из родительских пространств имён:
Опции выполнения¶
--workers, -w¶
Управление параллельной обработкой. По умолчанию: автоопределение по количеству CPU.
# Отключить параллельную обработку (однопоточный режим)
bin/qmx check src/ --workers=0
# Использовать ровно 4 воркера
bin/qmx check src/ --workers=4
Совет
Используйте --workers=0 для отладки или в окружениях, которые не поддерживают ext-parallel.
--memory-limit¶
Установить лимит памяти PHP для анализа. По умолчанию используется значение memory_limit из php.ini.
# Установить лимит памяти 1ГБ для больших проектов
bin/qmx check src/ --memory-limit=1G
# Без ограничений памяти
bin/qmx check src/ --memory-limit=-1
Допустимые форматы: -1 (без ограничений) или положительное целое число с опциональным суффиксом K/M/G (например, 512M, 2G).
Эквивалент в YAML: memory_limit: 1G
--log-file¶
Записывать отладочный лог в файл:
--log-level¶
Установить минимальный уровень логирования. По умолчанию: info.
Доступные уровни: debug, info, warning, error.
--no-progress¶
Отключить прогресс-бар. Полезно в CI-пайплайнах:
Опции профилирования¶
--profile¶
Включить внутренний профайлер. Опционально можно указать файл для сохранения профиля:
<!-- llms:skip-end -->
# Показать сводку профилирования на экране
bin/qmx check src/ --profile
# Сохранить профиль в файл
bin/qmx check src/ --profile=profile.json
--profile-format¶
Выбор формата экспорта профиля. По умолчанию: json.
Доступные форматы: json, chrome-tracing.
Совет
Используйте формат chrome-tracing и откройте файл в Chrome DevTools (chrome://tracing) для визуального анализа производительности.
Опции правил¶
--disable-rule¶
Отключить конкретное правило или целую группу по префиксу. Можно указывать несколько раз:
# Отключить одно правило
bin/qmx check src/ --disable-rule=size.class-count
# Отключить все правила сложности
bin/qmx check src/ --disable-rule=complexity
# Отключить несколько
bin/qmx check src/ --disable-rule=complexity --disable-rule=design.lcom
Оптимизация памяти
Отключение duplication.code-duplication также полностью пропускает ресурсоёмкую фазу обнаружения дубликатов. На больших кодовых базах (500+ файлов) это может значительно снизить потребление памяти. Используйте --disable-rule=duplication, если возникают ошибки нехватки памяти.
--only-rule¶
Запустить только указанные правила или группы. Можно указывать несколько раз:
# Запустить только правила сложности
bin/qmx check src/ --only-rule=complexity
# Запустить два конкретных правила
bin/qmx check src/ --only-rule=complexity.cyclomatic --only-rule=size.method-count
--rule-opt¶
Переопределить опции правил из командной строки. Формат: rule-name:option=value. Можно указывать несколько раз:
bin/qmx check src/ --rule-opt=complexity.cyclomatic:method.warning=15
bin/qmx check src/ --rule-opt=complexity.cyclomatic:method.error=30
Быстрые флаги для правил¶
Для многих правил доступны специальные CLI-флаги для быстрой настройки пороговых значений:
| Флаг | Правило | Опция |
|---|---|---|
--cyclomatic-warning=N |
complexity.cyclomatic | method.warning |
--cyclomatic-error=N |
complexity.cyclomatic | method.error |
--cyclomatic-class-warning=N |
complexity.cyclomatic | class.max_warning |
--cyclomatic-class-error=N |
complexity.cyclomatic | class.max_error |
--cognitive-warning=N |
complexity.cognitive | method.warning |
--cognitive-error=N |
complexity.cognitive | method.error |
--cognitive-class-warning=N |
complexity.cognitive | class.max_warning |
--cognitive-class-error=N |
complexity.cognitive | class.max_error |
--npath-warning=N |
complexity.npath | method.warning |
--npath-error=N |
complexity.npath | method.error |
--npath-class-warning=N |
complexity.npath | class.max_warning |
--npath-class-error=N |
complexity.npath | class.max_error |
--wmc-warning=N |
complexity.wmc | warning |
--wmc-error=N |
complexity.wmc | error |
| Флаг | Правило | Опция |
|---|---|---|
--cbo-warning=N |
coupling.cbo | class.warning |
--cbo-error=N |
coupling.cbo | class.error |
--cbo-ns-warning=N |
coupling.cbo | namespace.warning |
--cbo-ns-error=N |
coupling.cbo | namespace.error |
--distance-warning=N |
coupling.distance | max_distance_warning |
--distance-error=N |
coupling.distance | max_distance_error |
--instability-class-warning=N |
coupling.instability | class.max_warning |
--instability-class-error=N |
coupling.instability | class.max_error |
--instability-ns-warning=N |
coupling.instability | namespace.max_warning |
--instability-ns-error=N |
coupling.instability | namespace.max_error |
| Флаг | Правило | Опция |
|---|---|---|
--class-count-warning=N |
size.class-count | warning |
--class-count-error=N |
size.class-count | error |
--method-count-warning=N |
size.method-count | warning |
--method-count-error=N |
size.method-count | error |
| Флаг | Правило | Опция |
|---|---|---|
--dit-warning=N |
design.inheritance | warning |
--dit-error=N |
design.inheritance | error |
--lcom-warning=N |
design.lcom | warning |
--lcom-error=N |
design.lcom | error |
--lcom-min-methods=N |
design.lcom | minMethods |
--lcom-exclude-readonly |
design.lcom | excludeReadonly |
--noc-warning=N |
design.noc | warning |
--noc-error=N |
design.noc | error |
--type-coverage-param-warning=N |
design.type-coverage | param_warning |
--type-coverage-param-error=N |
design.type-coverage | param_error |
--type-coverage-return-warning=N |
design.type-coverage | return_warning |
--type-coverage-return-error=N |
design.type-coverage | return_error |
--type-coverage-property-warning=N |
design.type-coverage | property_warning |
--type-coverage-property-error=N |
design.type-coverage | property_error |
--property-exclude-readonly |
size.property-count | excludeReadonly |
--property-exclude-promoted-only |
size.property-count | excludePromotedOnly |
| Флаг | Правило | Опция |
|---|---|---|
--mi-warning=N |
maintainability.index | warning |
--mi-error=N |
maintainability.index | error |
--mi-min-loc=N |
maintainability.index | minLoc |
--mi-exclude-tests |
maintainability.index | excludeTests |
| Флаг | Правило | Опция |
|---|---|---|
--constructor-overinjection-warning=N |
code-smell.constructor-overinjection | warning |
--constructor-overinjection-error=N |
code-smell.constructor-overinjection | error |
--data-class-woc-threshold=N |
design.data-class | wocThreshold |
--data-class-wmc-threshold=N |
design.data-class | wmcThreshold |
--data-class-min-methods=N |
design.data-class | minMethods |
--data-class-exclude-readonly |
design.data-class | excludeReadonly |
--data-class-exclude-promoted-only |
design.data-class | excludePromotedOnly |
--god-class-wmc-threshold=N |
design.god-class | wmcThreshold |
--god-class-lcom-threshold=N |
design.god-class | lcomThreshold |
--god-class-tcc-threshold=N |
design.god-class | tccThreshold |
--god-class-class-loc-threshold=N |
design.god-class | classLocThreshold |
--god-class-min-criteria=N |
design.god-class | minCriteria |
--god-class-min-methods=N |
design.god-class | minMethods |
--god-class-exclude-readonly |
design.god-class | excludeReadonly |
--long-parameter-list-warning=N |
code-smell.long-parameter-list | warning |
--long-parameter-list-error=N |
code-smell.long-parameter-list | error |
--long-parameter-list-vo-warning=N |
code-smell.long-parameter-list | vo-warning |
--long-parameter-list-vo-error=N |
code-smell.long-parameter-list | vo-error |
--unreachable-code-warning=N |
code-smell.unreachable-code | warning |
--unreachable-code-error=N |
code-smell.unreachable-code | error |
| Флаг | Правило | Опция |
|---|---|---|
--circular-deps |
architecture.circular-dependency | enabled |
--max-cycle-size=N |
architecture.circular-dependency | maxCycleSize |
Другие команды¶
baseline:cleanup¶
Удалить устаревшие записи (ссылки на файлы, которых больше нет) из файла baseline:
graph:export¶
Экспортировать граф зависимостей для визуализации:
# Экспорт в формате DOT (по умолчанию)
bin/qmx graph:export src/ -o graph.dot
# Экспорт в формате JSON (агрегированный список смежности с метаданными)
bin/qmx graph:export src/ --format=json -o graph.json
# Экспорт в формате Mermaid
bin/qmx graph:export src/ --format=mermaid -o graph.md
# Фильтрация по пространству имён
bin/qmx graph:export src/ --namespace=App\\Service --namespace=App\\Repository
# Исключение пространств имён
bin/qmx graph:export src/ --exclude-namespace=App\\Generated
# Изменение направления графа
bin/qmx graph:export src/ --direction=TB
# Отключение группировки по пространствам имён
bin/qmx graph:export src/ --no-clusters
| Опция | Описание |
|---|---|
-o, --output=FILE |
Выходной файл (по умолчанию: stdout) |
-f, --format=FORMAT |
dot (по умолчанию), json или mermaid |
-d, --direction=DIR |
Направление графа: LR, TB, RL, BT (по умолчанию: LR) |
--no-clusters |
Не группировать узлы по пространствам имён |
--namespace=NS |
Включить только указанные пространства имён (можно повторять) |
--exclude-namespace=NS |
Исключить указанные пространства имён (можно повторять) |
hook:install¶
Установить git-хук pre-commit:
hook:status¶
Показать текущий статус хука pre-commit:
hook:uninstall¶
Удалить хук pre-commit:
bin/qmx hook:uninstall
# Восстановить оригинальный хук из резервной копии
bin/qmx hook:uninstall --restore-backup
rules¶
Вывести список всех доступных правил с описаниями и опциями CLI:
Пример вывода:
complexity.cyclomatic Cyclomatic complexity (McCabe)
--cyclomatic-warning=N method.warning (default: 10)
--cyclomatic-error=N method.error (default: 20)
--cyclomatic-class-warning=N class.max_warning (default: 30)
--cyclomatic-class-error=N class.max_error (default: 50)
complexity.cognitive Cognitive complexity (SonarSource)
--cognitive-warning=N method.warning (default: 15)
--cognitive-error=N method.error (default: 30)
...