Nette Code Checker

Code Checker проверяет ваши исходные файлы и находит в них формальные недочёты, такие как невидимый BOM, управляющие символы, неправильную кодировку или некорректный синтаксис файлов PHP, Latte, NEON, JSON и YAML, и умеет их автоматически исправлять.

Установка

Установите его глобально с помощью Composer:

composer global require nette/code-checker

Убедитесь, что ваш глобальный Composer каталог bin находится в вашей переменной $PATH. Команда code-checker тогда доступна откуда угодно, в любой операционной системе.

Либо установите его как отдельный проект:

composer create-project nette/code-checker

Требуется PHP 8.0 или выше.

Использование

По умолчанию Code Checker работает в режиме read-only и только сообщает о найденных проблемах:

code-checker

Чтобы действительно исправить файлы, добавьте --fix. Сначала сделайте резервную копию файлов или запустите инструмент на чистом рабочем дереве, чтобы потом можно было проверить изменения через git diff:

code-checker --fix

Вы можете ограничить сканирование конкретным путём, пропустить файлы или запустить более быструю проверку только синтаксиса:

code-checker -d src --ignore "temp/*"
code-checker --only-syntax

В режиме read-only инструмент завершается с кодом 0, когда всё в порядке, и 1, когда находит какую-либо проблему, поэтому он отлично вписывается в CI-конвейеры.

Полный список опций:

Usage: code-checker [options]

Options:
	-d <path>             Folder or file to scan (default: current directory)
	-i | --ignore <mask>  Files to ignore
	-f | --fix            Fix the files
	-l | --eol            Normalize line endings to the system default
	--only-syntax         Check syntax only (faster)
	--no-progress         Do not show progress dots
	--version             Show version

Что делает Code Checker

  • проверяет синтаксис Latte шаблонов и файлов .php, .neon и .json
  • удаляет BOM
  • проверяет, что файлы являются корректным UTF-8
  • проверяет наличие управляющих символов
  • обнаруживает неправильно записанные phpDoc-комментарии (например, /* @var вместо /** @var)
  • требует отступы табуляцией в файлах PHP, CSS, JS и TS и пробелами в YAML
  • удаляет завершающие пробелы и пустые строки в конце файлов
  • нормализует разделители строк на системные (с параметром -l)