Перейти к содержанию

Опции CLI

Qualimetrix предоставляет команду check для анализа кода и несколько вспомогательных команд для работы с baseline, git-хуками и визуализацией графа зависимостей.

Команда check

bin/qmx check [опции] [--] [<пути>...]

Аргумент paths

Укажите одну или несколько директорий или файлов для анализа:

# Анализ конкретных директорий
bin/qmx check src/ lib/

# Анализ одного файла
bin/qmx check src/Service/UserService.php

Если пути не указаны, Qualimetrix автоматически определит их из секции autoload вашего composer.json.


Опции файлов

--config, -c

Путь к YAML-файлу конфигурации:

bin/qmx check src/ --config=qmx.yaml

--exclude

Исключить директории из анализа. Можно указывать несколько раз:

bin/qmx check src/ --exclude=src/Generated --exclude=src/Legacy

--include-generated

По умолчанию Qualimetrix автоматически пропускает файлы, содержащие аннотацию @generated в первых 2 КБ. Этот флаг переопределяет это поведение и включает сгенерированные файлы в анализ:

bin/qmx check src/ --include-generated

Также можно задать в qmx.yaml:

include_generated: true

--exclude-path

Подавить нарушения для файлов, соответствующих glob-паттерну. Файлы по-прежнему анализируются (их метрики учитываются при расчёте метрик пространства имён), но нарушения не выводятся. Можно указывать несколько раз:

bin/qmx check src/ --exclude-path="src/Entity/*" --exclude-path="src/DTO/*"

--exclude-namespace

Подавить нарушения для классов в пространствах имён, соответствующих префиксу или glob-паттерну. Классы по-прежнему анализируются (их метрики учитываются в агрегированных расчётах), но нарушения не выводятся. Можно указывать несколько раз:

bin/qmx check src/ --exclude-namespace="App\Entity" --exclude-namespace="App\DTO\*"

Объединяется с 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.

bin/qmx check src/ --format=json
bin/qmx check src/ --format=sarif

Доступные форматы: summary, text, text-verbose, json, metrics, checkstyle, sarif, gitlab, github, health.

Подробности о каждом формате смотрите в разделе Форматы вывода.

--group-by

Группировка нарушений в выводе. Значение по умолчанию зависит от форматтера.

bin/qmx check src/ --format=text-verbose --group-by=rule

Доступные значения: none, file, rule, severity, class, namespace.

--format-opt

Передача специфичных для форматтера опций в формате key=value. Можно указывать несколько раз:

bin/qmx check src/ --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:

fail_on: error

--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:

exclude_health:
  - typing

--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

Фильтрация вывода по конкретному поддереву пространства имён. Использует сопоставление по префиксу с учётом границ.

bin/qmx check src/ --namespace=App\\Service

Фильтрует нарушения и худших нарушителей по указанному пространству имён. Показывает оценки здоровья поддерева. Автоматически включает --detail.

Взаимоисключающий с --class.

--class

Фильтрация вывода по конкретному классу с точным совпадением FQCN.

bin/qmx check src/ --class=App\\Service\\UserService

Фильтрует нарушения по указанному классу. Автоматически включает --detail.

Взаимоисключающий с --namespace.


Опции кэширования

Qualimetrix кэширует разобранные AST-деревья для ускорения повторных запусков.

--no-cache

Полностью отключить кэширование:

bin/qmx check src/ --no-cache

--cache-dir

Указать директорию кэша. По умолчанию: .qmx-cache.

bin/qmx check src/ --cache-dir=/tmp/qmx-cache

--clear-cache

Очистить кэш перед запуском анализа:

bin/qmx check src/ --clear-cache

Опции baseline

Baseline позволяет игнорировать известные нарушения и сосредоточиться на новых. Полное руководство смотрите в разделе Baseline.

--generate-baseline

Запустить анализ и сохранить все текущие нарушения в файл baseline:

bin/qmx check src/ --generate-baseline=baseline.json

--baseline

Отфильтровать нарушения, которые уже есть в файле baseline:

bin/qmx check src/ --baseline=baseline.json

--show-resolved

Показать, сколько нарушений из baseline были исправлены:

bin/qmx check src/ --baseline=baseline.json --show-resolved

--baseline-ignore-stale

По умолчанию Qualimetrix выдаёт ошибку, если baseline ссылается на файлы, которых больше не существует. Этот флаг позволяет молча игнорировать устаревшие записи:

bin/qmx check src/ --baseline=baseline.json --baseline-ignore-stale

Опции подавления

--show-suppressed

Показать нарушения, подавленные тегами @qmx-ignore:

bin/qmx check src/ --show-suppressed

--no-suppression

Игнорировать все теги @qmx-ignore и выводить все нарушения:

bin/qmx check src/ --no-suppression

Опции области Git

Вывод нарушений только для изменённых файлов. Полное руководство смотрите в разделе Интеграция с Git.

--report

Управление тем, какие нарушения выводить. Анализирует весь проект, но показывает только нарушения из изменённых файлов:

bin/qmx check src/ --report=git:main..HEAD
bin/qmx check src/ --report=git:origin/develop..HEAD

--report-strict

В режиме diff показывать нарушения только из самих изменённых файлов. Без этого флага также выводятся нарушения из родительских пространств имён:

bin/qmx check src/ --report=git:main..HEAD --report-strict

Опции выполнения

--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

Записывать отладочный лог в файл:

bin/qmx check src/ --log-file=qmx.log

--log-level

Установить минимальный уровень логирования. По умолчанию: info.

bin/qmx check src/ --log-file=qmx.log --log-level=debug

Доступные уровни: debug, info, warning, error.

--no-progress

Отключить прогресс-бар. Полезно в CI-пайплайнах:

bin/qmx check src/ --no-progress

Опции профилирования

--profile

Включить внутренний профайлер. Опционально можно указать файл для сохранения профиля:

<!-- llms:skip-end -->

# Показать сводку профилирования на экране
bin/qmx check src/ --profile

# Сохранить профиль в файл
bin/qmx check src/ --profile=profile.json

--profile-format

Выбор формата экспорта профиля. По умолчанию: json.

bin/qmx check src/ --profile=profile.json --profile-format=chrome-tracing

Доступные форматы: 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:

bin/qmx baseline:cleanup baseline.json

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:

bin/qmx hook:install

# Перезаписать существующий хук
bin/qmx hook:install --force

hook:status

Показать текущий статус хука pre-commit:

bin/qmx hook:status

hook:uninstall

Удалить хук pre-commit:

bin/qmx hook:uninstall

# Восстановить оригинальный хук из резервной копии
bin/qmx hook:uninstall --restore-backup

rules

Вывести список всех доступных правил с описаниями и опциями CLI:

# Показать все правила
bin/qmx rules

# Фильтр по группе
bin/qmx rules --group=complexity

Пример вывода:

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)
  ...