Files
FreshRSS/phpstan.dist.neon
T
Alexandre Alapetite fd3f75b3a2 Require PHP 8.2+ (#9470)
Drop PHP 8.1 (EOL December 2025), drop Ubuntu 22.04 (EOL May 2027, and there is now 24.04 and 26.04 LTS).
PHP 8.1 is already EOL, and Debian, Alpine, Fedora, Red Hat, Synology have dropped PHP 8.1 already.
See https://github.com/FreshRSS/FreshRSS/discussions/5474#discussioncomment-16791937

With PHP 8.6 around the corner and in particular a relevant `FILTER_FLAG_GLOBAL_RANGE` in PHP 8.2+.
* https://www.php.net/releases/8.2
* https://www.php.net/filter.constants.validation#constant.filter-flag-global-range
* https://www.php.net/class.sensitiveparameter
* https://php.watch/versions/8.2/readonly-classes
* https://www.php.net/function.ini-parse-quantity

Allows updating to PHPUnit 11.x instead of 10.x
https://phpunit.de/supported-versions.html

Contributes to https://github.com/FreshRSS/FreshRSS/issues/9475

* Add regression test for FILTER_FLAG_GLOBAL_RANGE
https://github.com/FreshRSS/FreshRSS/pull/9470#discussion_r4371168720
2026-10-26 21:02:32 +01:00

76 lines
2.0 KiB
Plaintext

parameters:
phpVersion:
min: 80200 # PHP 8.2
max: 80599 # PHP 8.5
level: 10 # https://phpstan.org/user-guide/rule-levels
fileExtensions:
- php
- phtml
paths:
- .
excludePaths:
analyse:
- lib/marienfressinaud/*
- lib/phpgt/*
- lib/phpmailer/*
- lib/simplepie/*
analyseAndScan:
- .git/*?
- extensions/node_modules?
- extensions/symbolic?
- extensions/vendor?
- node_modules/*?
- vendor/*
bootstrapFiles:
- cli/_cli.php
- lib/favicons.php
dynamicConstantNames:
- CACHE_PATH
- COPY_LOG_TO_SYSLOG
- COPY_SYSLOG_TO_STDERR
- DATA_PATH
- MAX_LOG_SIZE
- PUBLIC_RELATIVE
- SIMPLEPIE_SYSLOG_ENABLED
- STDERR
- STDOUT
- TMP_PATH
- USERS_PATH
checkBenevolentUnionTypes: true
checkImplicitMixed: true
checkMissingOverrideMethodAttribute: true
checkTooWideReturnTypesInProtectedAndPublicMethods: true
reportAnyTypeWideningInVarTag: true
reportPossiblyNonexistentConstantArrayOffset: true
treatPhpDocTypesAsCertain: false
strictRules:
disallowedEmpty: false
disallowedLooseComparison: false
disallowedShortTernary: false
strictArrayFilter: true
exceptions:
check:
missingCheckedExceptionInThrows: false # TODO pass maybe
tooWideThrowType: true
implicitThrows: false
checkedExceptionClasses:
- 'Minz_Exception'
ignoreErrors:
- '#Only booleans are allowed in (a negated boolean|a ternary operator condition|an elseif condition|an if condition|&&|\|\|), (bool|false|int(<[0-9, max]+>)?|true|null|\|)+ given.*#'
-
message: '#Access to deprecated#'
path: app/Models/Context.php
-
# For PHP 8.2 and PHP 8.3
identifier: function.alreadyNarrowedType
message: '#Call to function is_int\(\) with 1\d{3} will always evaluate to true\.#'
paths:
- lib/Minz/ModelPdo.php
- lib/Minz/PdoMysql.php
reportUnmatched: false
includes:
- vendor/phpstan/phpstan-deprecation-rules/rules.neon
- vendor/phpstan/phpstan-phpunit/extension.neon
- vendor/phpstan/phpstan-phpunit/rules.neon
- vendor/phpstan/phpstan-strict-rules/rules.neon