overtrue / phplint
`phplint` is a tool that can speed up linting of php files by running several lint processes at once.
Fund package maintenance!
overtrue
Installs: 3 647 020
Dependents: 551
Suggesters: 0
Security: 0
Stars: 837
Watchers: 20
Forks: 80
Open Issues: 1
Requires
- php: >=8.1
- ext-json: *
- n98/junit-xml: 1.1.0
- symfony/console: ^6.0
- symfony/finder: ^6.0
- symfony/process: ^6.0
- symfony/yaml: ^6.0
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.4
- brainmaestro/composer-git-hooks: ^2.8.5
- friendsofphp/php-cs-fixer: ^3.4.0
- jakub-onderka/php-console-highlighter: ^0.4
- jetbrains/phpstorm-stubs: ^2021.3
- 8.1.x-dev
- 8.0.x-dev
- 7.4.x-dev
- 5.1.0
- 5.0.0
- 4.1.0
- 4.0.0
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.4.1
- 2.4.0
- 2.3.5
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.0
- 2.0.3
- 2.0.2
- 2.0.0
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.1
- 0.1.0
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
This package is auto-updated.
Last update: 2022-05-16 02:56:43 UTC
README
`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.
Installation
required
- PHP >= 8.1
- Composer >= 2.0
if you are using php 7.0, please refer the 7.4 branch. if you are using php 8.0, please refer the 8.0 branch.
Locally, if you have PHP
$ composer require overtrue/phplint:^5.0 --dev -vvv
Locally, if you only have Docker
docker pull overtrue/phplint:8.1
Usage
CLI
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
$ ./vendor/bin/phplint
By default, the command will read configuration from file .phplint.yml
of path specified, you can custom the filename by option: --configuration=FILENAME
or -c FILENAME
;
If you want to disable the config file, you can add option --no-configuration
.
Docker cli
docker run --rm -t -v "${PWD}":/workdir overtrue/phplint ./ --exclude=vendor
Please mount the code directory to
/workdir
in the container.
Program
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', // ], // ]
GitHub Actions
uses: overtrue/phplint@8.1 with: path: . options: --exclude=*.log
Other CI/CD (f.e. Bitbucket Pipelines, GitLab CI)
Run this command using overtrue/phplint:8.1
Docker image:
/root/.composer/vendor/bin/phplint ./ --exclude=vendor
Warnings
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.
❤️ Sponsor me
如果你喜欢我的项目并想支持它,点击这里 ❤️
Project supported by JetBrains
Many thanks to Jetbrains for kindly providing a license for me to work on this and other open-source projects.
PHP 扩展包开发
想知道如何从零开始构建 PHP 扩展包?
请关注我的实战课程,我会在此课程中分享一些扩展开发经验 —— 《PHP 扩展包实战教程 - 从入门到发布》
License
MIT