diff --git a/.editorconfig b/.editorconfig
index 5a909cb9..9576ebcf 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -14,6 +14,9 @@ indent_size = 2
[*.md]
indent_size = 2
+[*.neon]
+indent_style = tab
+
[*.{yaml,yml}]
indent_size = 2
diff --git a/.gitattributes b/.gitattributes
index 40188ccb..09609a0e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -9,6 +9,6 @@
/composer-require-checker.json export-ignore
/composer.lock export-ignore
/Makefile export-ignore
-/psalm-baseline.xml export-ignore
-/psalm.xml export-ignore
+/phpstan-baseline.neon export-ignore
+/phpstan.neon export-ignore
/rector.php export-ignore
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 276fae5b..ff8e5101 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -1,4 +1,4 @@
-# CONTRIBUTING
+# Contributing
We use [GitHub Actions](https://github.com/features/actions) as a continuous integration system.
@@ -84,7 +84,7 @@ to run a security analysis.
## Static Code Analysis
-We use [`vimeo/psalm`](https://github.com/vimeo/psalm) to statically analyze the code.
+We use [`phpstan/phpstan`](https://github.com/phpstan/phpstan) to statically analyze the code.
Run
@@ -94,7 +94,7 @@ make static-code-analysis
to run a static code analysis.
-We also use the baseline feature of [`vimeo/psalm`](https://psalm.dev/docs/running_psalm/dealing_with_code_issues/#using-a-baseline-file).
+We also use the baseline feature of [`phpstan/phpstan`](https://phpstan.org/user-guide/baseline).
Run
@@ -102,7 +102,7 @@ Run
make static-code-analysis-baseline
```
-to regenerate the baseline in [`../psalm-baseline.xml`](../psalm-baseline.xml).
+to regenerate the baseline in [`../phpstan-baseline.neon`](../phpstan-baseline.neon).
:exclamation: Ideally, the baseline should shrink over time.
diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
index fdebab6f..25218a77 100644
--- a/.github/dependabot.yaml
+++ b/.github/dependabot.yaml
@@ -14,7 +14,7 @@ updates:
open-pull-requests-limit: 10
package-ecosystem: "composer"
schedule:
- interval: "daily"
+ interval: "weekly"
versioning-strategy: "increase"
- commit-message:
@@ -26,4 +26,4 @@ updates:
open-pull-requests-limit: 10
package-ecosystem: "github-actions"
schedule:
- interval: "daily"
+ interval: "weekly"
diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml
index eb265c27..2869131f 100644
--- a/.github/workflows/integrate.yaml
+++ b/.github/workflows/integrate.yaml
@@ -403,8 +403,8 @@ jobs:
with:
dependencies: "${{ matrix.dependencies }}"
- - name: "Run vimeo/psalm"
- run: "vendor/bin/psalm --config=psalm.xml --output-format=github --shepherd --show-info=false --stats --threads=4"
+ - name: "Run phpstan/phpstan"
+ run: "vendor/bin/phpstan --ansi --configuration=phpstan.neon --memory-limit=-1"
tests:
name: "Tests"
diff --git a/Makefile b/Makefile
index 2916a686..50c90f4d 100644
--- a/Makefile
+++ b/Makefile
@@ -32,14 +32,14 @@ security-analysis: vendor ## Runs a security analysis with composer
composer audit
.PHONY: static-code-analysis
-static-code-analysis: vendor ## Runs a static code analysis with vimeo/psalm
- vendor/bin/psalm --config=psalm.xml --clear-cache
- vendor/bin/psalm --config=psalm.xml --show-info=false --stats --threads=4
+static-code-analysis: vendor ## Runs a static code analysis with phpstan/phpstan
+ vendor/bin/phpstan clear-result-cache --configuration=phpstan.neon
+ vendor/bin/phpstan --configuration=phpstan.neon --memory-limit=-1
.PHONY: static-code-analysis-baseline
-static-code-analysis-baseline: vendor ## Generates a baseline for static code analysis with vimeo/psalm
- vendor/bin/psalm --config=psalm.xml --clear-cache
- vendor/bin/psalm --config=psalm.xml --set-baseline=psalm-baseline.xml
+static-code-analysis-baseline: vendor ## Generates a baseline for static code analysis with phpstan/phpstan
+ vendor/bin/phpstan clear-result-cache --configuration=phpstan.neon
+ vendor/bin/phpstan --allow-empty-baseline --configuration=phpstan.neon --generate-baseline=phpstan-baseline.neon --memory-limit=-1
.PHONY: tests
tests: vendor ## Runs unit tests with phpunit/phpunit
diff --git a/README.md b/README.md
index b8b95517..89da58c7 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,6 @@
[](https://github.com/ergebnis/http-method/actions)
[](https://codecov.io/gh/ergebnis/http-method)
-[](https://shepherd.dev/github/ergebnis/http-method)
[](https://packagist.org/packages/ergebnis/http-method)
[](https://packagist.org/packages/ergebnis/http-method)
diff --git a/composer.json b/composer.json
index adf4f6dc..96f856c3 100644
--- a/composer.json
+++ b/composer.json
@@ -29,11 +29,14 @@
"ergebnis/license": "^2.5.0",
"ergebnis/php-cs-fixer-config": "^6.37.0",
"ergebnis/phpunit-slow-test-detector": "^2.16.1",
+ "phpstan/extension-installer": "^1.4.3",
+ "phpstan/phpstan": "^1.12.10",
+ "phpstan/phpstan-deprecation-rules": "^1.2.1",
+ "phpstan/phpstan-phpunit": "^1.4.0",
+ "phpstan/phpstan-strict-rules": "^1.6.1",
"phpunit/phpunit": "^10.5.26",
- "psalm/plugin-phpunit": "~0.19.0",
"rector/rector": "^1.2.10",
- "roave/backward-compatibility-check": "^8.6.0",
- "vimeo/psalm": "^5.26.1"
+ "roave/backward-compatibility-check": "^8.6.0"
},
"autoload": {
"psr-4": {
@@ -48,7 +51,8 @@
"config": {
"allow-plugins": {
"composer/package-versions-deprecated": true,
- "ergebnis/composer-normalize": true
+ "ergebnis/composer-normalize": true,
+ "phpstan/extension-installer": true
},
"audit": {
"abandoned": "report"
@@ -60,6 +64,9 @@
"sort-packages": true
},
"extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ },
"composer-normalize": {
"indent-size": 2,
"indent-style": "space"
diff --git a/composer.lock b/composer.lock
index 73cbdeb2..a4d23ceb 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,169 +4,9 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "b9d3c078c87dc99f02d5f17e0e4e5c33",
+ "content-hash": "e1327523909ebd10fc9d7871ccb3ef0d",
"packages": [],
"packages-dev": [
- {
- "name": "amphp/amp",
- "version": "v2.6.4",
- "source": {
- "type": "git",
- "url": "https://github.com/amphp/amp.git",
- "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/amphp/amp/zipball/ded3d9be08f526089eb7ee8d9f16a9768f9dec2d",
- "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "require-dev": {
- "amphp/php-cs-fixer-config": "dev-master",
- "amphp/phpunit-util": "^1",
- "ext-json": "*",
- "jetbrains/phpstorm-stubs": "^2019.3",
- "phpunit/phpunit": "^7 | ^8 | ^9",
- "react/promise": "^2",
- "vimeo/psalm": "^3.12"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
- "autoload": {
- "files": [
- "lib/functions.php",
- "lib/Internal/functions.php"
- ],
- "psr-4": {
- "Amp\\": "lib"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Daniel Lowrey",
- "email": "rdlowrey@php.net"
- },
- {
- "name": "Aaron Piotrowski",
- "email": "aaron@trowski.com"
- },
- {
- "name": "Bob Weinand",
- "email": "bobwei9@hotmail.com"
- },
- {
- "name": "Niklas Keller",
- "email": "me@kelunik.com"
- }
- ],
- "description": "A non-blocking concurrency framework for PHP applications.",
- "homepage": "https://amphp.org/amp",
- "keywords": [
- "async",
- "asynchronous",
- "awaitable",
- "concurrency",
- "event",
- "event-loop",
- "future",
- "non-blocking",
- "promise"
- ],
- "support": {
- "irc": "irc://irc.freenode.org/amphp",
- "issues": "https://github.com/amphp/amp/issues",
- "source": "https://github.com/amphp/amp/tree/v2.6.4"
- },
- "funding": [
- {
- "url": "https://github.com/amphp",
- "type": "github"
- }
- ],
- "time": "2024-03-21T18:52:26+00:00"
- },
- {
- "name": "amphp/byte-stream",
- "version": "v1.8.2",
- "source": {
- "type": "git",
- "url": "https://github.com/amphp/byte-stream.git",
- "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/amphp/byte-stream/zipball/4f0e968ba3798a423730f567b1b50d3441c16ddc",
- "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc",
- "shasum": ""
- },
- "require": {
- "amphp/amp": "^2",
- "php": ">=7.1"
- },
- "require-dev": {
- "amphp/php-cs-fixer-config": "dev-master",
- "amphp/phpunit-util": "^1.4",
- "friendsofphp/php-cs-fixer": "^2.3",
- "jetbrains/phpstorm-stubs": "^2019.3",
- "phpunit/phpunit": "^6 || ^7 || ^8",
- "psalm/phar": "^3.11.4"
- },
- "type": "library",
- "autoload": {
- "files": [
- "lib/functions.php"
- ],
- "psr-4": {
- "Amp\\ByteStream\\": "lib"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Aaron Piotrowski",
- "email": "aaron@trowski.com"
- },
- {
- "name": "Niklas Keller",
- "email": "me@kelunik.com"
- }
- ],
- "description": "A stream abstraction to make working with non-blocking I/O simple.",
- "homepage": "https://amphp.org/byte-stream",
- "keywords": [
- "amp",
- "amphp",
- "async",
- "io",
- "non-blocking",
- "stream"
- ],
- "support": {
- "issues": "https://github.com/amphp/byte-stream/issues",
- "source": "https://github.com/amphp/byte-stream/tree/v1.8.2"
- },
- "funding": [
- {
- "url": "https://github.com/amphp",
- "type": "github"
- }
- ],
- "time": "2024-04-13T18:00:56+00:00"
- },
{
"name": "azjezz/psl",
"version": "2.8.0",
@@ -1010,90 +850,6 @@
],
"time": "2024-05-06T16:37:16+00:00"
},
- {
- "name": "dnoegel/php-xdg-base-dir",
- "version": "v0.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
- "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
- "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "XdgBaseDir\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "implementation of xdg base directory specification for php",
- "support": {
- "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues",
- "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1"
- },
- "time": "2019-12-04T15:06:13+00:00"
- },
- {
- "name": "doctrine/deprecations",
- "version": "1.1.3",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/deprecations.git",
- "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
- "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^9",
- "phpstan/phpstan": "1.4.10 || 1.10.15",
- "phpstan/phpstan-phpunit": "^1.0",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
- "psalm/plugin-phpunit": "0.18.4",
- "psr/log": "^1 || ^2 || ^3",
- "vimeo/psalm": "4.30.0 || 5.12.0"
- },
- "suggest": {
- "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
- "homepage": "https://www.doctrine-project.org/",
- "support": {
- "issues": "https://github.com/doctrine/deprecations/issues",
- "source": "https://github.com/doctrine/deprecations/tree/1.1.3"
- },
- "time": "2024-01-30T19:34:25+00:00"
- },
{
"name": "ergebnis/composer-normalize",
"version": "2.44.0",
@@ -1816,107 +1572,6 @@
},
"time": "2023-08-08T05:53:35+00:00"
},
- {
- "name": "felixfbecker/advanced-json-rpc",
- "version": "v3.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
- "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447",
- "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447",
- "shasum": ""
- },
- "require": {
- "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
- "php": "^7.1 || ^8.0",
- "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.0 || ^8.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "AdvancedJsonRpc\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "ISC"
- ],
- "authors": [
- {
- "name": "Felix Becker",
- "email": "felix.b@outlook.com"
- }
- ],
- "description": "A more advanced JSONRPC implementation",
- "support": {
- "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues",
- "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1"
- },
- "time": "2021-06-11T22:34:44+00:00"
- },
- {
- "name": "felixfbecker/language-server-protocol",
- "version": "v1.5.2",
- "source": {
- "type": "git",
- "url": "https://github.com/felixfbecker/php-language-server-protocol.git",
- "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842",
- "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "require-dev": {
- "phpstan/phpstan": "*",
- "squizlabs/php_codesniffer": "^3.1",
- "vimeo/psalm": "^4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "LanguageServerProtocol\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "ISC"
- ],
- "authors": [
- {
- "name": "Felix Becker",
- "email": "felix.b@outlook.com"
- }
- ],
- "description": "PHP classes for the Language Server Protocol",
- "keywords": [
- "language",
- "microsoft",
- "php",
- "server"
- ],
- "support": {
- "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues",
- "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2"
- },
- "time": "2022-03-02T22:36:06+00:00"
- },
{
"name": "fidry/cpu-core-counter",
"version": "1.2.0",
@@ -2360,57 +2015,6 @@
],
"time": "2024-06-12T14:39:25+00:00"
},
- {
- "name": "netresearch/jsonmapper",
- "version": "v4.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/cweiske/jsonmapper.git",
- "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8e76efb98ee8b6afc54687045e1b8dba55ac76e5",
- "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0",
- "squizlabs/php_codesniffer": "~3.5"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "JsonMapper": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "OSL-3.0"
- ],
- "authors": [
- {
- "name": "Christian Weiske",
- "email": "cweiske@cweiske.de",
- "homepage": "http://github.com/cweiske/jsonmapper/",
- "role": "Developer"
- }
- ],
- "description": "Map nested JSON structures onto PHP classes",
- "support": {
- "email": "cweiske@cweiske.de",
- "issues": "https://github.com/cweiske/jsonmapper/issues",
- "source": "https://github.com/cweiske/jsonmapper/tree/v4.5.0"
- },
- "time": "2024-09-08T10:13:13+00:00"
- },
{
"name": "nikic/php-parser",
"version": "v4.19.4",
@@ -2709,284 +2313,258 @@
"time": "2022-02-21T01:04:05+00:00"
},
{
- "name": "phpdocumentor/reflection-common",
- "version": "2.2.0",
+ "name": "phpstan/extension-installer",
+ "version": "1.4.3",
"source": {
"type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ "url": "https://github.com/phpstan/extension-installer.git",
+ "reference": "85e90b3942d06b2326fba0403ec24fe912372936"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/85e90b3942d06b2326fba0403ec24fe912372936",
+ "reference": "85e90b3942d06b2326fba0403ec24fe912372936",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "composer-plugin-api": "^2.0",
+ "php": "^7.2 || ^8.0",
+ "phpstan/phpstan": "^1.9.0 || ^2.0"
},
- "type": "library",
+ "require-dev": {
+ "composer/composer": "^2.0",
+ "php-parallel-lint/php-parallel-lint": "^1.2.0",
+ "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0"
+ },
+ "type": "composer-plugin",
"extra": {
- "branch-alias": {
- "dev-2.x": "2.x-dev"
- }
+ "class": "PHPStan\\ExtensionInstaller\\Plugin"
},
"autoload": {
"psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
+ "PHPStan\\ExtensionInstaller\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "authors": [
- {
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
- }
- ],
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
- "homepage": "http://www.phpdoc.org",
+ "description": "Composer plugin for automatic installation of PHPStan extensions",
"keywords": [
- "FQSEN",
- "phpDocumentor",
- "phpdoc",
- "reflection",
+ "dev",
"static analysis"
],
"support": {
- "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
- "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ "issues": "https://github.com/phpstan/extension-installer/issues",
+ "source": "https://github.com/phpstan/extension-installer/tree/1.4.3"
},
- "time": "2020-06-27T09:03:43+00:00"
+ "time": "2024-09-04T20:21:43+00:00"
},
{
- "name": "phpdocumentor/reflection-docblock",
- "version": "5.4.1",
+ "name": "phpstan/phpstan",
+ "version": "1.12.11",
"source": {
"type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c"
+ "url": "https://github.com/phpstan/phpstan.git",
+ "reference": "0d1fc20a962a91be578bcfe7cf939e6e1a2ff733"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c",
- "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0d1fc20a962a91be578bcfe7cf939e6e1a2ff733",
+ "reference": "0d1fc20a962a91be578bcfe7cf939e6e1a2ff733",
"shasum": ""
},
"require": {
- "doctrine/deprecations": "^1.1",
- "ext-filter": "*",
- "php": "^7.4 || ^8.0",
- "phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.7",
- "phpstan/phpdoc-parser": "^1.7",
- "webmozart/assert": "^1.9.1"
+ "php": "^7.2|^8.0"
},
- "require-dev": {
- "mockery/mockery": "~1.3.5",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "^1.8",
- "phpstan/phpstan-mockery": "^1.1",
- "phpstan/phpstan-webmozart-assert": "^1.2",
- "phpunit/phpunit": "^9.5",
- "vimeo/psalm": "^5.13"
+ "conflict": {
+ "phpstan/phpstan-shim": "*"
},
+ "bin": [
+ "phpstan",
+ "phpstan.phar"
+ ],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.x-dev"
- }
- },
"autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
+ "files": [
+ "bootstrap.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "authors": [
+ "description": "PHPStan - PHP Static Analysis Tool",
+ "keywords": [
+ "dev",
+ "static analysis"
+ ],
+ "support": {
+ "docs": "https://phpstan.org/user-guide/getting-started",
+ "forum": "https://github.com/phpstan/phpstan/discussions",
+ "issues": "https://github.com/phpstan/phpstan/issues",
+ "security": "https://github.com/phpstan/phpstan/security/policy",
+ "source": "https://github.com/phpstan/phpstan-src"
+ },
+ "funding": [
{
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
+ "url": "https://github.com/ondrejmirtes",
+ "type": "github"
},
{
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
+ "url": "https://github.com/phpstan",
+ "type": "github"
}
],
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "support": {
- "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1"
- },
- "time": "2024-05-21T05:55:05+00:00"
+ "time": "2024-11-17T14:08:01+00:00"
},
{
- "name": "phpdocumentor/type-resolver",
- "version": "1.8.2",
+ "name": "phpstan/phpstan-deprecation-rules",
+ "version": "1.2.1",
"source": {
"type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "153ae662783729388a584b4361f2545e4d841e3c"
+ "url": "https://github.com/phpstan/phpstan-deprecation-rules.git",
+ "reference": "f94d246cc143ec5a23da868f8f7e1393b50eaa82"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c",
- "reference": "153ae662783729388a584b4361f2545e4d841e3c",
+ "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/f94d246cc143ec5a23da868f8f7e1393b50eaa82",
+ "reference": "f94d246cc143ec5a23da868f8f7e1393b50eaa82",
"shasum": ""
},
"require": {
- "doctrine/deprecations": "^1.0",
- "php": "^7.3 || ^8.0",
- "phpdocumentor/reflection-common": "^2.0",
- "phpstan/phpdoc-parser": "^1.13"
+ "php": "^7.2 || ^8.0",
+ "phpstan/phpstan": "^1.12"
},
"require-dev": {
- "ext-tokenizer": "*",
- "phpbench/phpbench": "^1.2",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "^1.8",
- "phpstan/phpstan-phpunit": "^1.1",
- "phpunit/phpunit": "^9.5",
- "rector/rector": "^0.13.9",
- "vimeo/psalm": "^4.25"
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^9.5"
},
- "type": "library",
+ "type": "phpstan-extension",
"extra": {
- "branch-alias": {
- "dev-1.x": "1.x-dev"
+ "phpstan": {
+ "includes": [
+ "rules.neon"
+ ]
}
},
"autoload": {
"psr-4": {
- "phpDocumentor\\Reflection\\": "src"
+ "PHPStan\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- }
- ],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.",
"support": {
- "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2"
+ "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues",
+ "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.2.1"
},
- "time": "2024-02-23T11:10:43+00:00"
+ "time": "2024-09-11T15:52:35+00:00"
},
{
- "name": "phpstan/phpdoc-parser",
- "version": "1.30.1",
+ "name": "phpstan/phpstan-phpunit",
+ "version": "1.4.1",
"source": {
"type": "git",
- "url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "51b95ec8670af41009e2b2b56873bad96682413e"
+ "url": "https://github.com/phpstan/phpstan-phpunit.git",
+ "reference": "11d4235fbc6313ecbf93708606edfd3222e44949"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/51b95ec8670af41009e2b2b56873bad96682413e",
- "reference": "51b95ec8670af41009e2b2b56873bad96682413e",
+ "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/11d4235fbc6313ecbf93708606edfd3222e44949",
+ "reference": "11d4235fbc6313ecbf93708606edfd3222e44949",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "php": "^7.2 || ^8.0",
+ "phpstan/phpstan": "^1.12"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<7.0"
},
"require-dev": {
- "doctrine/annotations": "^2.0",
- "nikic/php-parser": "^4.15",
+ "nikic/php-parser": "^4.13.0",
"php-parallel-lint/php-parallel-lint": "^1.2",
- "phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^1.5",
- "phpstan/phpstan-phpunit": "^1.1",
- "phpstan/phpstan-strict-rules": "^1.0",
- "phpunit/phpunit": "^9.5",
- "symfony/process": "^5.2"
+ "phpstan/phpstan-strict-rules": "^1.5.1",
+ "phpunit/phpunit": "^9.5"
+ },
+ "type": "phpstan-extension",
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "extension.neon",
+ "rules.neon"
+ ]
+ }
},
- "type": "library",
"autoload": {
"psr-4": {
- "PHPStan\\PhpDocParser\\": [
- "src/"
- ]
+ "PHPStan\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "description": "PHPDoc parser with support for nullable, intersection and generic types",
+ "description": "PHPUnit extensions and rules for PHPStan",
"support": {
- "issues": "https://github.com/phpstan/phpdoc-parser/issues",
- "source": "https://github.com/phpstan/phpdoc-parser/tree/1.30.1"
+ "issues": "https://github.com/phpstan/phpstan-phpunit/issues",
+ "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.4.1"
},
- "time": "2024-09-07T20:13:05+00:00"
+ "time": "2024-11-12T12:43:59+00:00"
},
{
- "name": "phpstan/phpstan",
- "version": "1.12.8",
+ "name": "phpstan/phpstan-strict-rules",
+ "version": "1.6.1",
"source": {
"type": "git",
- "url": "https://github.com/phpstan/phpstan.git",
- "reference": "f6a60a4d66142b8156c9da923f1972657bc4748c"
+ "url": "https://github.com/phpstan/phpstan-strict-rules.git",
+ "reference": "daeec748b53de80a97498462513066834ec28f8b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f6a60a4d66142b8156c9da923f1972657bc4748c",
- "reference": "f6a60a4d66142b8156c9da923f1972657bc4748c",
+ "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/daeec748b53de80a97498462513066834ec28f8b",
+ "reference": "daeec748b53de80a97498462513066834ec28f8b",
"shasum": ""
},
"require": {
- "php": "^7.2|^8.0"
+ "php": "^7.2 || ^8.0",
+ "phpstan/phpstan": "^1.12.4"
},
- "conflict": {
- "phpstan/phpstan-shim": "*"
+ "require-dev": {
+ "nikic/php-parser": "^4.13.0",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/phpstan-deprecation-rules": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^9.5"
+ },
+ "type": "phpstan-extension",
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "rules.neon"
+ ]
+ }
},
- "bin": [
- "phpstan",
- "phpstan.phar"
- ],
- "type": "library",
"autoload": {
- "files": [
- "bootstrap.php"
- ]
+ "psr-4": {
+ "PHPStan\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "description": "PHPStan - PHP Static Analysis Tool",
- "keywords": [
- "dev",
- "static analysis"
- ],
+ "description": "Extra strict and opinionated rules for PHPStan",
"support": {
- "docs": "https://phpstan.org/user-guide/getting-started",
- "forum": "https://github.com/phpstan/phpstan/discussions",
- "issues": "https://github.com/phpstan/phpstan/issues",
- "security": "https://github.com/phpstan/phpstan/security/policy",
- "source": "https://github.com/phpstan/phpstan-src"
+ "issues": "https://github.com/phpstan/phpstan-strict-rules/issues",
+ "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.6.1"
},
- "funding": [
- {
- "url": "https://github.com/ondrejmirtes",
- "type": "github"
- },
- {
- "url": "https://github.com/phpstan",
- "type": "github"
- }
- ],
- "time": "2024-11-06T19:06:49+00:00"
+ "time": "2024-09-20T14:04:44+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -3410,66 +2988,6 @@
],
"time": "2024-10-19T13:03:41+00:00"
},
- {
- "name": "psalm/plugin-phpunit",
- "version": "0.19.0",
- "source": {
- "type": "git",
- "url": "https://github.com/psalm/psalm-plugin-phpunit.git",
- "reference": "e344eaaa27871e79c6cb97b9efe52a735f9d1966"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/e344eaaa27871e79c6cb97b9efe52a735f9d1966",
- "reference": "e344eaaa27871e79c6cb97b9efe52a735f9d1966",
- "shasum": ""
- },
- "require": {
- "composer/package-versions-deprecated": "^1.10",
- "composer/semver": "^1.4 || ^2.0 || ^3.0",
- "ext-simplexml": "*",
- "php": "^7.4 || ^8.0",
- "vimeo/psalm": "dev-master || ^5@beta || ^5.0"
- },
- "conflict": {
- "phpunit/phpunit": "<7.5"
- },
- "require-dev": {
- "codeception/codeception": "^4.0.3",
- "php": "^7.3 || ^8.0",
- "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0",
- "squizlabs/php_codesniffer": "^3.3.1",
- "weirdan/codeception-psalm-module": "^0.11.0",
- "weirdan/prophecy-shim": "^1.0 || ^2.0"
- },
- "type": "psalm-plugin",
- "extra": {
- "psalm": {
- "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin"
- }
- },
- "autoload": {
- "psr-4": {
- "Psalm\\PhpUnitPlugin\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Matt Brown",
- "email": "github@muglug.com"
- }
- ],
- "description": "Psalm plugin for PHPUnit",
- "support": {
- "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues",
- "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.19.0"
- },
- "time": "2024-03-15T10:43:15+00:00"
- },
{
"name": "psr/container",
"version": "2.0.2",
@@ -5555,74 +5073,6 @@
},
"time": "2023-09-03T09:24:00+00:00"
},
- {
- "name": "spatie/array-to-xml",
- "version": "3.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/array-to-xml.git",
- "reference": "f56b220fe2db1ade4c88098d83413ebdfc3bf876"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/f56b220fe2db1ade4c88098d83413ebdfc3bf876",
- "reference": "f56b220fe2db1ade4c88098d83413ebdfc3bf876",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "php": "^8.0"
- },
- "require-dev": {
- "mockery/mockery": "^1.2",
- "pestphp/pest": "^1.21",
- "spatie/pest-plugin-snapshots": "^1.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Spatie\\ArrayToXml\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
- "homepage": "https://freek.dev",
- "role": "Developer"
- }
- ],
- "description": "Convert an array to xml",
- "homepage": "https://github.com/spatie/array-to-xml",
- "keywords": [
- "array",
- "convert",
- "xml"
- ],
- "support": {
- "source": "https://github.com/spatie/array-to-xml/tree/3.3.0"
- },
- "funding": [
- {
- "url": "https://spatie.be/open-source/support-us",
- "type": "custom"
- },
- {
- "url": "https://github.com/spatie",
- "type": "github"
- }
- ],
- "time": "2024-05-01T10:20:27+00:00"
- },
{
"name": "symfony/console",
"version": "v6.4.12",
@@ -7028,185 +6478,17 @@
}
],
"time": "2024-03-03T12:36:25+00:00"
- },
- {
- "name": "vimeo/psalm",
- "version": "5.26.1",
- "source": {
- "type": "git",
- "url": "https://github.com/vimeo/psalm.git",
- "reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/vimeo/psalm/zipball/d747f6500b38ac4f7dfc5edbcae6e4b637d7add0",
- "reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0",
- "shasum": ""
- },
- "require": {
- "amphp/amp": "^2.4.2",
- "amphp/byte-stream": "^1.5",
- "composer-runtime-api": "^2",
- "composer/semver": "^1.4 || ^2.0 || ^3.0",
- "composer/xdebug-handler": "^2.0 || ^3.0",
- "dnoegel/php-xdg-base-dir": "^0.1.1",
- "ext-ctype": "*",
- "ext-dom": "*",
- "ext-json": "*",
- "ext-libxml": "*",
- "ext-mbstring": "*",
- "ext-simplexml": "*",
- "ext-tokenizer": "*",
- "felixfbecker/advanced-json-rpc": "^3.1",
- "felixfbecker/language-server-protocol": "^1.5.2",
- "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0",
- "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
- "nikic/php-parser": "^4.17",
- "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
- "sebastian/diff": "^4.0 || ^5.0 || ^6.0",
- "spatie/array-to-xml": "^2.17.0 || ^3.0",
- "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0",
- "symfony/filesystem": "^5.4 || ^6.0 || ^7.0"
- },
- "conflict": {
- "nikic/php-parser": "4.17.0"
- },
- "provide": {
- "psalm/psalm": "self.version"
- },
- "require-dev": {
- "amphp/phpunit-util": "^2.0",
- "bamarni/composer-bin-plugin": "^1.4",
- "brianium/paratest": "^6.9",
- "ext-curl": "*",
- "mockery/mockery": "^1.5",
- "nunomaduro/mock-final-classes": "^1.1",
- "php-parallel-lint/php-parallel-lint": "^1.2",
- "phpstan/phpdoc-parser": "^1.6",
- "phpunit/phpunit": "^9.6",
- "psalm/plugin-mockery": "^1.1",
- "psalm/plugin-phpunit": "^0.18",
- "slevomat/coding-standard": "^8.4",
- "squizlabs/php_codesniffer": "^3.6",
- "symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0"
- },
- "suggest": {
- "ext-curl": "In order to send data to shepherd",
- "ext-igbinary": "^2.0.5 is required, used to serialize caching data"
- },
- "bin": [
- "psalm",
- "psalm-language-server",
- "psalm-plugin",
- "psalm-refactor",
- "psalter"
- ],
- "type": "project",
- "extra": {
- "branch-alias": {
- "dev-master": "5.x-dev",
- "dev-4.x": "4.x-dev",
- "dev-3.x": "3.x-dev",
- "dev-2.x": "2.x-dev",
- "dev-1.x": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psalm\\": "src/Psalm/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Matthew Brown"
- }
- ],
- "description": "A static analysis tool for finding errors in PHP applications",
- "keywords": [
- "code",
- "inspection",
- "php",
- "static analysis"
- ],
- "support": {
- "docs": "https://psalm.dev/docs",
- "issues": "https://github.com/vimeo/psalm/issues",
- "source": "https://github.com/vimeo/psalm"
- },
- "time": "2024-09-08T18:53:08+00:00"
- },
- {
- "name": "webmozart/assert",
- "version": "1.11.0",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozarts/assert.git",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
- "shasum": ""
- },
- "require": {
- "ext-ctype": "*",
- "php": "^7.2 || ^8.0"
- },
- "conflict": {
- "phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<4.6.1 || 4.6.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.5.13"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.10-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Webmozart\\Assert\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- }
- ],
- "description": "Assertions to validate method input/output with nice error messages.",
- "keywords": [
- "assert",
- "check",
- "validate"
- ],
- "support": {
- "issues": "https://github.com/webmozarts/assert/issues",
- "source": "https://github.com/webmozarts/assert/tree/1.11.0"
- },
- "time": "2022-06-03T18:03:27+00:00"
}
],
"aliases": [],
"minimum-stability": "stable",
- "stability-flags": [],
+ "stability-flags": {},
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": "~8.1.0 || ~8.2.0 || ~8.3.0"
},
- "platform-dev": [],
+ "platform-dev": {},
"platform-overrides": {
"php": "8.1.26"
},
diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon
new file mode 100644
index 00000000..8c5f55ce
--- /dev/null
+++ b/phpstan-baseline.neon
@@ -0,0 +1,212 @@
+parameters:
+ ignoreErrors:
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'LINK' and 'LINK' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc2068Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'UNLINK' and 'UNLINK' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc2068Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'BASELINE_CONTROL' and 'BASELINE_CONTROL' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc3253Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'CHECKIN' and 'CHECKIN' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc3253Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'CHECKOUT' and 'CHECKOUT' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc3253Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'LABEL' and 'LABEL' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc3253Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'MERGE' and 'MERGE' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc3253Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'MKACTIVITY' and 'MKACTIVITY' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc3253Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'MKWORKSPACE' and 'MKWORKSPACE' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc3253Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'REPORT' and 'REPORT' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc3253Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'UNCHECKOUT' and 'UNCHECKOUT' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc3253Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'UPDATE' and 'UPDATE' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc3253Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'VERSION\\-CONTROL' and 'VERSION\\-CONTROL' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc3253Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'ORDERPATCH' and 'ORDERPATCH' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc3648Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'ACL' and 'ACL' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc3744Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'MKREDIRECTREF' and 'MKREDIRECTREF' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc4437Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'UPDATEREDIRECTREF' and 'UPDATEREDIRECTREF' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc4437Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'MKCALENDAR' and 'MKCALENDAR' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc4791Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'COPY' and 'COPY' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc4918Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'LOCK' and 'LOCK' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc4918Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'MKCOL' and 'MKCOL' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc4918Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'MOVE' and 'MOVE' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc4918Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'PROPFIND' and 'PROPFIND' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc4918Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'PROPPATCH' and 'PROPPATCH' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc4918Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'UNLOCK' and 'UNLOCK' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc4918Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'SEARCH' and 'SEARCH' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc5323Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'PATCH' and 'PATCH' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc5789Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'BIND' and 'BIND' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc5842Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'REBIND' and 'REBIND' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc5842Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'UNBIND' and 'UNBIND' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc5842Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'CONNECT' and 'CONNECT' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc7231Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'DELETE' and 'DELETE' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc7231Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'GET' and 'GET' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc7231Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'HEAD' and 'HEAD' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc7231Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'OPTIONS' and 'OPTIONS' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc7231Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'POST' and 'POST' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc7231Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'PUT' and 'PUT' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc7231Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'TRACE' and 'TRACE' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc7231Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'PRI' and 'PRI' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Rfc/Rfc7540Test.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'PURGE' and 'PURGE' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Vendor/SquidCacheTest.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'BAN' and 'BAN' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Vendor/VarnishCacheTest.php
+
+ -
+ message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with 'PURGE' and 'PURGE' will always evaluate to true\\.$#"
+ count: 1
+ path: test/Unit/Method/Vendor/VarnishCacheTest.php
+
diff --git a/phpstan.neon b/phpstan.neon
new file mode 100644
index 00000000..3039ec1b
--- /dev/null
+++ b/phpstan.neon
@@ -0,0 +1,15 @@
+includes:
+ - phpstan-baseline.neon
+
+parameters:
+ inferPrivatePropertyTypeFromConstructor: true
+
+ level: max
+
+ paths:
+ - src/
+ - test/
+ - .php-cs-fixer.php
+ - rector.php
+
+ tmpDir: .build/phpstan/
diff --git a/psalm-baseline.xml b/psalm-baseline.xml
deleted file mode 100644
index 1a8a6577..00000000
--- a/psalm-baseline.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- Method
-
-
-
-
- WebDav
-
-
-
diff --git a/psalm.xml b/psalm.xml
deleted file mode 100644
index 00713658..00000000
--- a/psalm.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/rector.php b/rector.php
index ab3f09f8..df8b173f 100644
--- a/rector.php
+++ b/rector.php
@@ -22,6 +22,8 @@
$rectorConfig->paths([
__DIR__ . '/src/',
__DIR__ . '/test/',
+ __DIR__ . '/.php-cs-fixer.php',
+ __DIR__ . '/rector.php',
]);
$rectorConfig->phpVersion(ValueObject\PhpVersion::PHP_81);