shipmonk / phpstan-baseline-per-identifier
Split your PHPStan baseline into multiple files, one per error identifier. Supports both neon baseline and PHP baseline.
Installs: 529 336
Dependents: 16
Suggesters: 0
Security: 0
Stars: 82
Watchers: 3
Forks: 6
Open Issues: 1
Type:phpstan-extension
Requires
- php: ^7.4 || ^8.0
- nette/neon: ^3.3.3 || ^4.0
- phpstan/phpstan: ^2
Requires (Dev)
- editorconfig-checker/editorconfig-checker: 10.7.0
- ergebnis/composer-normalize: 2.47.0
- phpstan/phpstan-phpunit: 2.0.6
- phpstan/phpstan-strict-rules: 2.0.4
- phpunit/phpunit: 9.6.23
- shipmonk/coding-standard: ^0.1.3
- shipmonk/composer-dependency-analyser: 1.8.3
- shipmonk/dead-code-detector: ^0.11.0
- shipmonk/name-collision-detector: 2.1.1
- shipmonk/phpstan-rules: 4.1.2
README
Split your PHPStan baseline into multiple files, one per error identifier:
baselines/ ├─ _loader.neon ├─ empty.notAllowed.neon ├─ foreach.nonIterable.neon ├─ identical.alwaysFalse.neon └─ if.condNotBoolean.neon
Each file looks like this:
# total 1 error parameters: ignoreErrors: - message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' path: ../app/index.php count: 1
Installation:
composer require --dev shipmonk/phpstan-baseline-per-identifier
Usage
Important
This usage is available since version 2.0. See legacy usage below if you are still using PHPStan 1.x
Remove old single baseline include:
-includes: - - phpstan-baseline.neon
Run native baseline generation and split it into multiple files via our script (other baseline files will be placed beside the loader):
vendor/bin/phpstan --generate-baseline=baselines/_loader.neon && vendor/bin/split-phpstan-baseline baselines/_loader.neon
Setup the baselines loader:
# phpstan.neon.dist includes: - baselines/_loader.neon
(optional) You can simplify generation with e.g. composer script:
{ "scripts": { "generate:baseline:phpstan": [ "phpstan --generate-baseline=baselines/_loader.neon", "find baselines/ -type f -not -name _loader.neon -delete", "split-phpstan-baseline baselines/_loader.neon" ] } }
Legacy usage
This usage is deprecated since 2.0, but it works in all versions. Downside is that it cannot utilize result cache and does not support
rawMessage
.
Setup where your baseline files should be stored and include its loader:
# phpstan.neon.dist includes: - vendor/shipmonk/phpstan-baseline-per-identifier/extension.neon # or use extension-installer - baselines/loader.neon parameters: shipmonkBaselinePerIdentifier: directory: %currentWorkingDirectory%/baselines indent: ' '
Prepare composer script to simplify generation:
{ "scripts": { "generate:baseline:phpstan": [ "rm baselines/*.neon", "touch baselines/loader.neon", "phpstan analyse --error-format baselinePerIdentifier" ] } }
Cli options
--tabs
to use tabs as indents in generated neon files--no-error-count
to remove errors count in generated files
PHP Baseline
- If the loader file extension is php, the generated files will be php files as well