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: 5 157 337
Dependents: 596
Suggesters: 0
Security: 0
Stars: 889
Watchers: 21
Forks: 82
Open Issues: 2
Requires
- php: ^8.2
- ext-json: *
- n98/junit-xml: 1.1.0
- symfony/console: ^5.4 || ^6.0
- symfony/finder: ^5.4 || ^6.0
- symfony/process: ^5.4 || ^6.0
- symfony/yaml: ^5.4 || ^6.0
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.4
- brainmaestro/composer-git-hooks: ^2.8.5
- friendsofphp/php-cs-fixer: ^3.4.0
- jetbrains/phpstorm-stubs: ^2021.3 || ^2022.0
- php-parallel-lint/php-console-highlighter: ^1.0
- dev-main / 9.0.x-dev
- 8.2.x-dev
- 8.1.x-dev
- 8.0.x-dev
- 7.4.x-dev
- 6.1.0
- 6.0.4
- 6.0.3
- 6.0.2
- 6.0.0
- 5.5.0
- 5.4.2
- 5.4.1
- 5.4.0
- 5.3.0
- 5.2.2
- 5.2.1
- 5.2.0
- 5.1.0
- 5.0.0
- 4.5.0
- 4.4.1
- 4.4.0
- 4.3.0
- 4.2.1
- 4.2.0
- 4.1.0
- 4.0.0
- 3.4.0
- 3.3.2
- 3.3.1
- 3.3.0
- 3.2.0
- 3.1.1
- 3.1.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: 2023-01-20 15:38:54 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.1
if you are using php 7.4, please refer the 7.4 branch.
if you are using php 8.0, please refer the 8.0 branch.
if you are using php 8.2, please refer the 8.2 branch.
Locally, if you have PHP
composer require overtrue/phplint --dev -vvv
Locally, if you only have Docker
docker pull overtrue/phplint:8.1
Usage
CLI
Description:
Lint something
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 parraled 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.
--no-progress Hide the progress output.
--json[=JSON] Path to store JSON results.
--xml[=XML] Path to store JUnit XML results.
-w, --warning Also show warnings.
-q, --quiet Do not output any message
--no-files-exit-code Throw error if no files processed.
-h, --help Display help for the given command. When no command is given display help for the list command
-V, --version Display this application version
--ansi|--no-ansi Force (or disable --no-ansi) 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
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 CLI
docker run --rm -t -v "${PWD}":/workdir overtrue/phplint:8.1 ./ --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
GitLab CI
code-quality:lint-php: image: overtrue/phplint:8.1 variables: INPUT_PATH: "./" INPUT_OPTIONS: "-c .phplint.yml" script: echo '' #prevents ci yml parse error
Other CI/CD (f.e. Bitbucket Pipelines)
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