`phplint` is a tool that can speed up linting of php files by running several lint processes at once.
🚨 There are two better packages for syntax detection and static analysis: Psalm and PHPStan, recently my work has started to get busier and I won't have much time to maintain this project, if you are interested in maintaining it please raise an issue, Thanks.
- PHP >= 8.1
- Composer >= 2.1
if you are using php 5.5, php 5.6 or php 7.x, please refer the 7.4 branch. if you are using php 8.0, please refer the 8.0 branch.
$ composer require overtrue/phplint --dev -vvv
docker pull overtrue/phplint:8.1
Usage:
phplint [options] [--] [<path>]...
Arguments:
path Path to file or directory to lint.
Options:
--exclude=EXCLUDE Path to file or directory to exclude from linting (multiple values allowed)
--extensions=EXTENSIONS Check only files with selected extensions (default: php)
-j, --jobs=JOBS Number of parallel jobs to run (default: 5)
-c, --configuration=CONFIGURATION Read configuration from config file (default: ./.phplint.yml).
--no-configuration Ignore default configuration file (default: ./.phplint.yml).
--no-cache Ignore cached data.
--cache=CACHE Path to the cache file.
--json[=JSON] Output JSON results to a file.
--xml[=XML] Output JUnit XML results to a file.
-w, --warning Also show warnings
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Help:
Lint something
example:
$ ./vendor/bin/phplint ./ --exclude=vendor
You can also define configuration as a file .phplint.yml
:
path: ./
jobs: 10
cache: build/phplint.cache
extensions:
- php
exclude:
- vendor
warning: false
memory_limit: -1
$ ./vendor/bin/phplint
By default, the command will read configuration from file .phplint.yml
of path specified, you can use another filename by option: --configuration=FILENAME
or -c FILENAME
;
If you want to disable the config file, you can add option --no-configuration
.
docker run --rm -t -v "${PWD}":/workdir overtrue/phplint:8.1 ./ --exclude=vendor
Please mount the code directory to
/workdir
in the container.
use Overtrue\PHPLint\Linter;
$path = __DIR__ .'/app';
$exclude = ['vendor'];
$extensions = ['php'];
$warnings = true;
$linter = new Linter($path, $exclude, $extensions, $warnings);
// get errors
$errors = $linter->lint();
//
// [
// '/path/to/foo.php' => [
// 'error' => "unexpected '$key' (T_VARIABLE)",
// 'line' => 168,
// 'file' => '/path/to/foo.php',
// ],
// '/path/to/bar.php' => [
// 'error' => "unexpected 'class' (T_CLASS), expecting ',' or ';'",
// 'line' => 28,
// 'file' => '/path/to/bar.php',
// ],
// ]
uses: overtrue/phplint@8.1
with:
path: .
options: --exclude=*.log
code-quality:lint-php:
image: overtrue/phplint:8.1
variables:
INPUT_PATH: "./"
INPUT_OPTIONS: "-c .phplint.yml"
script: echo '' #prevents ci yml parse error
Run this command using overtrue/phplint:8.1
Docker image:
/root/.composer/vendor/bin/phplint ./ --exclude=vendor
Not all linting problems are errors, PHP also has warnings, for example when using a continue
statement within a
switch
case
. By default, these errors are not reported, but you can turn this on with the warning
cli flag, or
by setting the warning
to true in the configuration.
如果你喜欢我的项目并想支持它,点击这里 ❤️
Many thanks to Jetbrains for kindly providing a license for me to work on this and other open-source projects.
想知道如何从零开始构建 PHP 扩展包?
请关注我的实战课程,我会在此课程中分享一些扩展开发经验 —— 《PHP 扩展包实战教程 - 从入门到发布》
MIT