Code Checker is a command-line tool that scans your source code for common formal errors – and can fix many of them automatically. It works with PHP, Latte, NEON, JSON and YAML files, checking encoding, line endings, indentation, trailing whitespace and more.
It runs as a standalone application, not as a project dependency.
Documentation can be found on the website. If you like it, please make a donation now. Thank you!
Install it globally via Composer:
composer global require nette/code-checkerMake sure your global Composer bin directory is in your PATH.
The code-checker command is then available from anywhere, on any operating system.
Alternatively, install it as a standalone project:
composer create-project nette/code-checkerIt requires PHP 8.0 or higher.
By default, Code Checker runs in read-only mode and only reports the problems it finds:
code-checkerTo actually repair the files, add --fix. Back up your files first, or run it on a clean working tree so you can review the changes afterwards with git diff:
code-checker --fixYou can limit the scan to a specific path, skip files, or run faster syntax-only checks:
code-checker -d src --ignore "temp/*"
code-checker --only-syntaxIn read-only mode the tool exits with code 0 when everything is fine and 1 when any problem is found, so it fits nicely into CI pipelines.
Full list of options:
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
- checks the syntax of PHP, Latte, NEON and JSON files
- removes the BOM
- verifies that files are valid UTF-8
- checks for control characters
- detects malformed phpDoc comments around annotations (e.g.
/* @varinstead of/** @var) - checks that PHP files declare
strict_types=1 - enforces tabs for indentation in PHP, CSS, JS and TS files, and spaces in YAML
- removes trailing whitespace and blank lines at the end of files
- normalizes line endings to the system default (with the
-lparameter)