This tool check syntax of PHP files about 20x faster than serial check.
This application checks the syntax of PHP files in parallel.
It can output in plain text, colored text, json and checksyntax formats.
blame can be used to show commits that introduced the breakage.
Running parallel jobs in PHP is inspired by Nette framework tests.
The application is officially supported for use with PHP 5.3 to 8.1.
- Example output
- Command line options
- Recommended excludes for Symfony framework
- Excluding files from a scan based on the PHP version used
- How to upgrade
composer as development dependency:
composer require --dev php-parallel-lint/php-parallel-lint
Alternatively you can install as a standalone
composer create-project php-parallel-lint/php-parallel-lint /path/to/folder/php-parallel-lint --no-dev /path/to/folder/php-parallel-lint/parallel-lint # running tool
For colored output, install the suggested package
composer require --dev php-parallel-lint/php-console-highlighter
Since v1.3.0, a PHAR file is also made available for each release. This PHAR file is published as an asset for each release and can be found on the Releases page.
Since then, Jakub has moved on to other interests and as of January 2020, the second most active maintainer @grogy has taken over maintenance of the project and given the project - and related dependencies - a new home in the PHP Parallel Lint organisation.
It is strongly recommended for existing users of the (unmaintained) jakub-onderka/php-parallel-lint package to switch their dependency to php-parallel-lint/php-parallel-lint, see How to upgrade below.
-p <php>Specify PHP-CGI executable to run (default: 'php').
--shortSet short_open_tag to On (default: Off).
--aspSet asp_tags to On (default: Off).
-e <ext>Check only files with selected extensions separated by comma. (default: php,php3,php4,php5,phtml,phpt)
-j <num>Run jobs in parallel (default: 10).
--excludeExclude a file or directory. If you want to exclude multiple items, use multiple exclude parameters.
--colorsEnable colors in console output. (disables auto detection of color support)
--no-colorsDisable colors in console output.
--no-progressDisable progress in console output.
--checkstyleOutput results as Checkstyle XML.
--jsonOutput results as JSON string (requires PHP 5.4).
--gitlabOutput results for the GitLab Code Quality Widget (requires PHP 5.4), see more in Code Quality documentation..
--blameTry to show git blame for row with error.
--git <git>Path to Git executable to show blame message (default: 'git').
--stdinLoad files and folder to test from standard input.
--ignore-failsIgnore failed tests.
--show-deprecatedShow deprecations (default: Off).
--syntax-error-callbackFile with syntax error callback for ability to modify error, see more in example.
--helpPrint this help.
--versionDisplay the application version
To run from the command line:
vendor/bin/parallel-lint --exclude .git --exclude app --exclude vendor .
Sometimes a particular file in a project may not comply with the project-wide minimum PHP version, like a file which is conditionally included in the project and contains PHP syntax which needs a higher PHP version to run.
This can make it complicated to run Parallel Lint in a CI context, as the
excludes used in the command would have to be adjusted based on the PHP version on which the scan is being run.
PHP Parallel Lint offers a straight-forward way around this, as files can define their own minimum PHP version like so:
<?php // lint >= 7.4 // Code which contains PHP 7.4 syntax.
With this comment in place, the file will be automatically skipped when PHP Parallel Lint is run on a PHP version lower than PHP 7.4.
// lint >= 7.4 comment has to be only the first line of the file and must directly follow the PHP open tag.
Are you using the
jakub-onderka/php-parallel-lint package? You can switch to
composer remove --dev jakub-onderka/php-parallel-lint composer require --dev php-parallel-lint/php-parallel-lint