From f207144aaac5e8b5e01f8a89df40f0a464e86f5b Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Sat, 8 Aug 2026 08:20:35 +0300 Subject: [PATCH 1/3] Add Composer Dependency Analyser --- ...checker.yml => composer-dependency-analyser.yml} | 11 +++++------ composer-dependency-analyser.php | 13 +++++++++++++ composer.json | 4 +++- docs/internals.md | 6 +++--- tools/composer-require-checker/composer.json | 5 ----- 5 files changed, 24 insertions(+), 15 deletions(-) rename .github/workflows/{composer-require-checker.yml => composer-dependency-analyser.yml} (59%) create mode 100644 composer-dependency-analyser.php delete mode 100644 tools/composer-require-checker/composer.json diff --git a/.github/workflows/composer-require-checker.yml b/.github/workflows/composer-dependency-analyser.yml similarity index 59% rename from .github/workflows/composer-require-checker.yml rename to .github/workflows/composer-dependency-analyser.yml index 8690377..eaa3762 100644 --- a/.github/workflows/composer-require-checker.yml +++ b/.github/workflows/composer-dependency-analyser.yml @@ -1,4 +1,4 @@ -name: Composer require checker +name: composer dependency analyser on: pull_request: @@ -6,8 +6,9 @@ on: - 'src/**' - 'config/**' - 'tests/**' + - '.github/workflows/composer-dependency-analyser.yml' - 'composer.json' - - '.github/workflows/composer-require-checker.yml' + - 'composer-dependency-analyser.php' push: branches: ['master'] paths: *paths @@ -20,10 +21,8 @@ concurrency: cancel-in-progress: true jobs: - composer-require-checker: - uses: yiisoft/actions/.github/workflows/composer-require-checker.yml@master + composer-dependency-analyser: + uses: yiisoft/actions/.github/workflows/composer-dependency-analyser.yml@master with: - os: >- - ['ubuntu-latest'] php: >- ['8.1', '8.2', '8.3', '8.4', '8.5'] diff --git a/composer-dependency-analyser.php b/composer-dependency-analyser.php new file mode 100644 index 0000000..e05b991 --- /dev/null +++ b/composer-dependency-analyser.php @@ -0,0 +1,13 @@ +disableComposerAutoloadPathScan() + ->setFileExtensions(['php']) + ->addPathToScan(__DIR__ . '/config', isDev: false) + ->addPathToScan(__DIR__ . '/src', isDev: false) + ->addPathToScan(__DIR__ . '/tests', isDev: true) + ->ignoreUnknownClasses(['StdClass']); diff --git a/composer.json b/composer.json index 4e72518..2bc11f6 100644 --- a/composer.json +++ b/composer.json @@ -34,6 +34,7 @@ "psr/http-message": "^1.0 || ^2.0", "psr/http-server-handler": "^1.0", "psr/http-server-middleware": "^1.0", + "yiisoft/definitions": "^3.4", "yiisoft/http": "^1.2", "yiisoft/json": "^1.0", "yiisoft/strings": "^2.0" @@ -45,6 +46,7 @@ "phpunit/phpunit": "^10.5.52", "rector/rector": "^2.1.4", "roave/infection-static-analysis-plugin": "^1.35", + "shipmonk/composer-dependency-analyser": "^1.8", "vimeo/psalm": "^5.26.1 || ^6.8.0", "yiisoft/di": "^1.4", "yiisoft/test-support": "^3.2" @@ -82,7 +84,7 @@ } }, "scripts": { - "require-checker": "composer-require-checker", + "dependency-analyser": "composer-dependency-analyser", "test": "phpunit --testdox" } } diff --git a/docs/internals.md b/docs/internals.md index 087a514..b77907c 100644 --- a/docs/internals.md +++ b/docs/internals.md @@ -36,9 +36,9 @@ use either newest or any specific version of PHP: ## Dependencies -This package uses [composer-require-checker](https://github.com/maglnet/ComposerRequireChecker) to check if -all dependencies are correctly defined in `composer.json`. To run the checker, execute the following command: +Use [Composer Dependency Analyser](https://github.com/shipmonk-rnd/composer-dependency-analyser) to detect unknown, +shadow, and unused [Composer](https://getcomposer.org) dependencies: ```shell -./vendor/bin/composer-require-checker +./vendor/bin/composer-dependency-analyser ``` diff --git a/tools/composer-require-checker/composer.json b/tools/composer-require-checker/composer.json deleted file mode 100644 index 0992a90..0000000 --- a/tools/composer-require-checker/composer.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "require-dev": { - "maglnet/composer-require-checker": "^4.7.1" - } -} From 9c37abf1754c41ed569ad001671f156b55ac3f80 Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Sat, 8 Aug 2026 08:46:55 +0300 Subject: [PATCH 2/3] remove bamarni --- composer.json | 7 ------- tools/.gitignore | 2 -- 2 files changed, 9 deletions(-) delete mode 100644 tools/.gitignore diff --git a/composer.json b/composer.json index 2bc11f6..c023374 100644 --- a/composer.json +++ b/composer.json @@ -40,7 +40,6 @@ "yiisoft/strings": "^2.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.9.1", "friendsofphp/php-cs-fixer": "^3.92.5", "httpsoft/http-message": "^1.1.6", "phpunit/phpunit": "^10.5.52", @@ -62,11 +61,6 @@ } }, "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": true, - "target-directory": "tools" - }, "config-plugin-options": { "source-directory": "config" }, @@ -78,7 +72,6 @@ "config": { "sort-packages": true, "allow-plugins": { - "bamarni/composer-bin-plugin": true, "infection/extension-installer": true, "composer/package-versions-deprecated": true } diff --git a/tools/.gitignore b/tools/.gitignore deleted file mode 100644 index cf452dc..0000000 --- a/tools/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/*/vendor -/*/composer.lock From 3344c1a9dc87160cc3f56d69c9d68fcd00a89629 Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Sat, 8 Aug 2026 19:49:48 +0300 Subject: [PATCH 3/3] fix --- composer-dependency-analyser.php | 3 ++- composer.json | 1 - tests/Middleware/ContentNegotiatorTest.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/composer-dependency-analyser.php b/composer-dependency-analyser.php index e05b991..fd085a5 100644 --- a/composer-dependency-analyser.php +++ b/composer-dependency-analyser.php @@ -2,6 +2,7 @@ declare(strict_types=1); +use ShipMonk\ComposerDependencyAnalyser\Config\ErrorType; use ShipMonk\ComposerDependencyAnalyser\Config\Configuration; return (new Configuration()) @@ -10,4 +11,4 @@ ->addPathToScan(__DIR__ . '/config', isDev: false) ->addPathToScan(__DIR__ . '/src', isDev: false) ->addPathToScan(__DIR__ . '/tests', isDev: true) - ->ignoreUnknownClasses(['StdClass']); + ->ignoreErrorsOnPackageAndPath('yiisoft/definitions', __DIR__ . '/config', [ErrorType::SHADOW_DEPENDENCY]); diff --git a/composer.json b/composer.json index c023374..f8fe7a9 100644 --- a/composer.json +++ b/composer.json @@ -34,7 +34,6 @@ "psr/http-message": "^1.0 || ^2.0", "psr/http-server-handler": "^1.0", "psr/http-server-middleware": "^1.0", - "yiisoft/definitions": "^3.4", "yiisoft/http": "^1.2", "yiisoft/json": "^1.0", "yiisoft/strings": "^2.0" diff --git a/tests/Middleware/ContentNegotiatorTest.php b/tests/Middleware/ContentNegotiatorTest.php index 869a831..4f2ec1c 100644 --- a/tests/Middleware/ContentNegotiatorTest.php +++ b/tests/Middleware/ContentNegotiatorTest.php @@ -6,7 +6,7 @@ use Psr\Http\Message\ResponseInterface; use RuntimeException; -use StdClass; +use stdClass; use Yiisoft\DataResponse\DataResponse; use Yiisoft\DataResponse\Formatter\HtmlDataResponseFormatter; use Yiisoft\DataResponse\Formatter\XmlDataResponseFormatter; @@ -81,7 +81,7 @@ public function testWrongContentFormattersInConstructor(): void ); new ContentNegotiator([ 'text/html' => new HtmlDataResponseFormatter(), - 'application/xml' => new StdClass(), + 'application/xml' => new stdClass(), ]); }